@@ -9,21 +9,21 @@ Datum gbt_var_decompress(PG_FUNCTION_ARGS);
99Datum
1010gbt_var_decompress (PG_FUNCTION_ARGS )
1111{
12- GISTENTRY * entry = (GISTENTRY * ) PG_GETARG_POINTER (0 );
13- GBT_VARKEY * key = (GBT_VARKEY * ) DatumGetPointer (PG_DETOAST_DATUM (entry -> key ));
12+ GISTENTRY * entry = (GISTENTRY * ) PG_GETARG_POINTER (0 );
13+ GBT_VARKEY * key = (GBT_VARKEY * ) DatumGetPointer (PG_DETOAST_DATUM (entry -> key ));
1414
15- if (key != (GBT_VARKEY * ) DatumGetPointer (entry -> key ))
16- {
17- GISTENTRY * retval = (GISTENTRY * ) palloc (sizeof (GISTENTRY ));
15+ if (key != (GBT_VARKEY * ) DatumGetPointer (entry -> key ))
16+ {
17+ GISTENTRY * retval = (GISTENTRY * ) palloc (sizeof (GISTENTRY ));
1818
19- gistentryinit (* retval , PointerGetDatum (key ),
20- entry -> rel , entry -> page ,
21- entry -> offset , VARSIZE (key ), FALSE);
19+ gistentryinit (* retval , PointerGetDatum (key ),
20+ entry -> rel , entry -> page ,
21+ entry -> offset , VARSIZE (key ), FALSE);
2222
23- PG_RETURN_POINTER (retval );
24- }
23+ PG_RETURN_POINTER (retval );
24+ }
2525
26- PG_RETURN_POINTER (entry );
26+ PG_RETURN_POINTER (entry );
2727}
2828
2929/* Returns a better readable representaion of variable key ( sets pointer ) */
@@ -216,7 +216,6 @@ gbt_var_bin_union(Datum *u, GBT_VARKEY * e, const gbtree_vinfo * tinfo)
216216 GBT_VARKEY_R nr ;
217217 GBT_VARKEY_R eo = gbt_var_key_readable (e );
218218
219-
220219 if (eo .lower == eo .upper ) /* leaf */
221220 {
222221 tmp = gbt_var_leaf2node (e , tinfo );
@@ -235,31 +234,23 @@ gbt_var_bin_union(Datum *u, GBT_VARKEY * e, const gbtree_vinfo * tinfo)
235234 nr .upper = ro .upper ;
236235 nk = gbt_var_key_copy (& nr , TRUE);
237236 }
237+
238238 if ((* tinfo -> f_cmp ) ((bytea * ) ro .upper , (bytea * ) eo .upper ) < 0 )
239239 {
240240 nr .upper = eo .upper ;
241241 nr .lower = ro .lower ;
242242 nk = gbt_var_key_copy (& nr , TRUE);
243243 }
244+
244245 if (nk )
245- {
246- pfree (DatumGetPointer (* u ));
247246 * u = PointerGetDatum (nk );
248- }
249-
250-
251-
252247 }
253248 else
254249 {
255250 nr .lower = eo .lower ;
256251 nr .upper = eo .upper ;
257252 * u = PointerGetDatum (gbt_var_key_copy (& nr , TRUE));
258253 }
259-
260- if (tmp && tmp != e )
261- pfree (tmp );
262-
263254}
264255
265256
@@ -273,15 +264,12 @@ gbt_var_compress(GISTENTRY *entry, const gbtree_vinfo * tinfo)
273264 if (entry -> leafkey )
274265 {
275266 GBT_VARKEY * r = NULL ;
276- bytea * tstd = (bytea * ) DatumGetPointer (entry -> key ); /* toasted */
277- bytea * leaf = (bytea * ) DatumGetPointer (PG_DETOAST_DATUM (entry -> key )); /* untoasted */
267+ bytea * leaf = (bytea * ) DatumGetPointer (PG_DETOAST_DATUM (entry -> key ));
278268 GBT_VARKEY_R u ;
279269
280270 u .lower = u .upper = leaf ;
281271 r = gbt_var_key_copy (& u , FALSE);
282272
283- if (tstd != leaf )
284- pfree (leaf );
285273 retval = palloc (sizeof (GISTENTRY ));
286274 gistentryinit (* retval , PointerGetDatum (r ),
287275 entry -> rel , entry -> page ,
@@ -319,7 +307,6 @@ gbt_var_union(const GistEntryVector *entryvec, int32 *size, const gbtree_vinfo *
319307
320308
321309 /* Truncate (=compress) key */
322-
323310 if (tinfo -> trnc )
324311 {
325312 int32 plen ;
@@ -328,7 +315,6 @@ gbt_var_union(const GistEntryVector *entryvec, int32 *size, const gbtree_vinfo *
328315 plen = gbt_var_node_cp_len ((GBT_VARKEY * ) DatumGetPointer (out ), tinfo );
329316 trc = gbt_var_node_truncate ((GBT_VARKEY * ) DatumGetPointer (out ), plen + 1 , tinfo );
330317
331- pfree (DatumGetPointer (out ));
332318 out = PointerGetDatum (trc );
333319 }
334320
@@ -428,17 +414,12 @@ gbt_var_penalty(float *res, const GISTENTRY *o, const GISTENTRY *n, const gbtree
428414 }
429415 dres /= 256.0 ;
430416 }
431- pfree (DatumGetPointer (d ));
432417
433418 * res += FLT_MIN ;
434419 * res += (float ) (dres / ((double ) (ol + 1 )));
435420 * res *= (FLT_MAX / (o -> rel -> rd_att -> natts + 1 ));
436-
437421 }
438422
439- if (tmp && tmp != newe )
440- pfree (tmp );
441-
442423 return res ;
443424}
444425
@@ -524,18 +505,9 @@ gbt_var_picksplit(const GistEntryVector *entryvec, GIST_SPLITVEC *v, const gbtre
524505 }
525506 }
526507
527- /* Free strxfrm'ed leafs */
528- for (i = 0 ; i < svcntr ; i ++ )
529- pfree (sv [i ]);
530-
531- if (sv )
532- pfree (sv );
533-
534508 /* Truncate (=compress) key */
535-
536509 if (tinfo -> trnc )
537510 {
538-
539511 int32 ll = gbt_var_node_cp_len ((GBT_VARKEY * ) DatumGetPointer (v -> spl_ldatum ), tinfo );
540512 int32 lr = gbt_var_node_cp_len ((GBT_VARKEY * ) DatumGetPointer (v -> spl_rdatum ), tinfo );
541513 GBT_VARKEY * dl ;
@@ -546,15 +518,10 @@ gbt_var_picksplit(const GistEntryVector *entryvec, GIST_SPLITVEC *v, const gbtre
546518
547519 dl = gbt_var_node_truncate ((GBT_VARKEY * ) DatumGetPointer (v -> spl_ldatum ), ll , tinfo );
548520 dr = gbt_var_node_truncate ((GBT_VARKEY * ) DatumGetPointer (v -> spl_rdatum ), ll , tinfo );
549- pfree (DatumGetPointer (v -> spl_ldatum ));
550- pfree (DatumGetPointer (v -> spl_rdatum ));
551521 v -> spl_ldatum = PointerGetDatum (dl );
552522 v -> spl_rdatum = PointerGetDatum (dr );
553-
554523 }
555524
556- pfree (arr );
557-
558525 return v ;
559526}
560527
0 commit comments