This patch removes a bunch of no-longer-necessary manual pfree() calls
from the implementation of GiST methods in contrib/ modules.
Barring any objections, I'll apply this tomorrow.
-Neil
Index: contrib/btree_gist/btree_bit.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/btree_gist/btree_bit.c,v
retrieving revision 1.4
diff -c -r1.4 btree_bit.c
*** contrib/btree_gist/btree_bit.c 12 May 2005 00:39:37 -0000 1.4
--- contrib/btree_gist/btree_bit.c 20 May 2005 02:40:35 -0000
***************
*** 127,133 ****
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer(entry->key);
- void *qtst = (void *) PG_GETARG_POINTER(1);
void *query = (void *) DatumGetByteaP(PG_GETARG_DATUM(1));
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
bool retval = FALSE;
--- 127,132 ----
***************
*** 140,150 ****
bytea *q = gbt_bit_xfrm((bytea *) query);
retval = gbt_var_consistent(&r, (void *) q, &strategy, FALSE, &tinfo);
- pfree(q);
}
-
- if (qtst != query)
- pfree(query);
PG_RETURN_BOOL(retval);
}
--- 139,145 ----
Index: contrib/btree_gist/btree_bytea.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/btree_gist/btree_bytea.c,v
retrieving revision 1.4
diff -c -r1.4 btree_bytea.c
*** contrib/btree_gist/btree_bytea.c 12 May 2005 00:39:37 -0000 1.4
--- contrib/btree_gist/btree_bytea.c 20 May 2005 02:40:45 -0000
***************
*** 97,112 ****
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer(entry->key);
- void *qtst = (void *) PG_GETARG_POINTER(1);
void *query = (void *) DatumGetByteaP(PG_GETARG_DATUM(1));
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
! bool retval = FALSE;
GBT_VARKEY_R r = gbt_var_key_readable(key);
retval = gbt_var_consistent(&r, query, &strategy, GIST_LEAF(entry), &tinfo);
-
- if (qtst != query)
- pfree(query);
PG_RETURN_BOOL(retval);
}
--- 97,108 ----
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer(entry->key);
void *query = (void *) DatumGetByteaP(PG_GETARG_DATUM(1));
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
! bool retval;
GBT_VARKEY_R r = gbt_var_key_readable(key);
retval = gbt_var_consistent(&r, query, &strategy, GIST_LEAF(entry), &tinfo);
PG_RETURN_BOOL(retval);
}
Index: contrib/btree_gist/btree_numeric.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/btree_gist/btree_numeric.c,v
retrieving revision 1.4
diff -c -r1.4 btree_numeric.c
*** contrib/btree_gist/btree_numeric.c 12 May 2005 00:39:37 -0000 1.4
--- contrib/btree_gist/btree_numeric.c 20 May 2005 02:40:03 -0000
***************
*** 98,113 ****
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer(entry->key);
- void *qtst = (void *) PG_GETARG_POINTER(1);
void *query = (void *) DatumGetNumeric(PG_GETARG_DATUM(1));
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
! bool retval = FALSE;
GBT_VARKEY_R r = gbt_var_key_readable(key);
retval = gbt_var_consistent(&r, query, &strategy, GIST_LEAF(entry), &tinfo);
-
- if (qtst != query)
- pfree(query);
PG_RETURN_BOOL(retval);
}
--- 98,109 ----
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer(entry->key);
void *query = (void *) DatumGetNumeric(PG_GETARG_DATUM(1));
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
! bool retval;
GBT_VARKEY_R r = gbt_var_key_readable(key);
retval = gbt_var_consistent(&r, query, &strategy, GIST_LEAF(entry), &tinfo);
PG_RETURN_BOOL(retval);
}
***************
*** 164,171 ****
PointerGetDatum(uk.lower)
));
- pfree(DatumGetPointer(uni));
-
os = DatumGetNumeric(DirectFunctionCall2(
numeric_sub,
PointerGetDatum(ok.upper),
--- 160,165 ----
***************
*** 178,204 ****
NumericGetDatum(os)
));
- pfree(os);
-
if (NUMERIC_IS_NAN(us))
{
-
if (NUMERIC_IS_NAN(os))
*result = 0.0;
else
*result = 1.0;
-
}
else
{
-
Numeric nul = DatumGetNumeric(DirectFunctionCall1(int4_numeric, Int32GetDatum(0)));
*result = 0.0;
if (DirectFunctionCall2(numeric_gt, NumericGetDatum(ds), NumericGetDatum(nul)))
{
-
*result += FLT_MIN;
os = DatumGetNumeric(DirectFunctionCall2(
numeric_div,
--- 172,192 ----
***************
*** 206,224 ****
NumericGetDatum(us)
));
*result += (float4) DatumGetFloat8(DirectFunctionCall1(numeric_float8_no_overflow, NumericGetDatum(os)));
- pfree(os);
-
}
-
- pfree(nul);
}
if (*result > 0)
*result *= (FLT_MAX / (((GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1));
- pfree(us);
- pfree(ds);
-
PG_RETURN_POINTER(result);
}
--- 194,205 ----
Index: contrib/btree_gist/btree_text.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/btree_gist/btree_text.c,v
retrieving revision 1.5
diff -c -r1.5 btree_text.c
*** contrib/btree_gist/btree_text.c 12 May 2005 00:39:37 -0000 1.5
--- contrib/btree_gist/btree_text.c 20 May 2005 02:41:01 -0000
***************
*** 108,115 ****
entry->rel, entry->page,
entry->offset, VARSIZE(DatumGetPointer(d)), TRUE);
retval = gbt_var_compress(&trim, &tinfo);
-
- pfree(DatumGetPointer(d));
}
else
retval = entry;
--- 108,113 ----
***************
*** 124,130 ****
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer(entry->key);
- void *qtst = (void *) PG_GETARG_POINTER(1);
void *query = (void *) DatumGetTextP(PG_GETARG_DATUM(1));
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
bool retval = FALSE;
--- 122,127 ----
***************
*** 132,140 ****
retval = gbt_var_consistent(&r, query, &strategy, GIST_LEAF(entry), &tinfo);
- if (qtst != query)
- pfree(query);
-
PG_RETURN_BOOL(retval);
}
--- 129,134 ----
***************
*** 144,168 ****
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer(entry->key);
- void *qtst = (void *) PG_GETARG_POINTER(1);
void *query = (void *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(1)));
void *trim = (void *) DatumGetPointer(DirectFunctionCall1(rtrim1, PointerGetDatum(query)));
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
! bool retval = FALSE;
GBT_VARKEY_R r = gbt_var_key_readable(key);
retval = gbt_var_consistent(&r, trim, &strategy, GIST_LEAF(entry), &tinfo);
-
- pfree(trim);
-
- if (qtst != query)
- pfree(query);
PG_RETURN_BOOL(retval);
}
-
-
Datum
gbt_text_union(PG_FUNCTION_ARGS)
{
--- 138,154 ----
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer(entry->key);
void *query = (void *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(1)));
void *trim = (void *) DatumGetPointer(DirectFunctionCall1(rtrim1, PointerGetDatum(query)));
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
! bool retval;
GBT_VARKEY_R r = gbt_var_key_readable(key);
retval = gbt_var_consistent(&r, trim, &strategy, GIST_LEAF(entry), &tinfo);
PG_RETURN_BOOL(retval);
}
Datum
gbt_text_union(PG_FUNCTION_ARGS)
{
Index: contrib/btree_gist/btree_time.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/btree_gist/btree_time.c,v
retrieving revision 1.6
diff -c -r1.6 btree_time.c
*** contrib/btree_gist/btree_time.c 25 Apr 2005 07:00:32 -0000 1.6
--- contrib/btree_gist/btree_time.c 20 May 2005 02:12:57 -0000
***************
*** 222,228 ****
/* see interval_larger */
res = Max(intr->time + intr->month * (30 * 86400), 0);
- pfree(intr);
intr = DatumGetIntervalP(DirectFunctionCall2(
time_mi_time,
--- 222,227 ----
***************
*** 231,237 ****
/* see interval_larger */
res += Max(intr->time + intr->month * (30 * 86400), 0);
- pfree(intr);
*result = 0.0;
--- 230,235 ----
***************
*** 244,250 ****
*result += FLT_MIN;
*result += (float) (res / ((double) (res + intr->time + intr->month * (30 * 86400))));
*result *= (FLT_MAX / (((GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1));
- pfree(intr);
}
PG_RETURN_POINTER(result);
--- 242,247 ----
Index: contrib/btree_gist/btree_ts.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/btree_gist/btree_ts.c,v
retrieving revision 1.7
diff -c -r1.7 btree_ts.c
*** contrib/btree_gist/btree_ts.c 21 Feb 2005 10:03:57 -0000 1.7
--- contrib/btree_gist/btree_ts.c 20 May 2005 02:12:35 -0000
***************
*** 226,232 ****
#ifdef HAVE_INT64_TIMESTAMP
int64 res;
-
#else
double res;
#endif
--- 226,231 ----
***************
*** 240,246 ****
/* see interval_larger */
res = Max(intr->time + intr->month * (30 * 86400), 0);
- pfree(intr);
intr = DatumGetIntervalP(DirectFunctionCall2(
timestamp_mi,
--- 239,244 ----
***************
*** 250,256 ****
/* see interval_larger */
res += Max(intr->time + intr->month * (30 * 86400), 0);
- pfree(intr);
*result = 0.0;
--- 248,253 ----
***************
*** 264,274 ****
*result += FLT_MIN;
*result += (float) (res / ((double) (res + intr->time + intr->month * (30 * 86400))));
*result *= (FLT_MAX / (((GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1));
- pfree(intr);
}
PG_RETURN_POINTER(result);
-
}
--- 261,269 ----
Index: contrib/btree_gist/btree_utils_num.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/btree_gist/btree_utils_num.c,v
retrieving revision 1.6
diff -c -r1.6 btree_utils_num.c
*** contrib/btree_gist/btree_utils_num.c 12 May 2005 00:39:37 -0000 1.6
--- contrib/btree_gist/btree_utils_num.c 20 May 2005 02:12:02 -0000
***************
*** 246,252 ****
}
}
- pfree(arr);
-
return v;
}
--- 246,250 ----
Index: contrib/btree_gist/btree_utils_var.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/btree_gist/btree_utils_var.c,v
retrieving revision 1.8
diff -c -r1.8 btree_utils_var.c
*** contrib/btree_gist/btree_utils_var.c 16 May 2005 06:45:57 -0000 1.8
--- contrib/btree_gist/btree_utils_var.c 20 May 2005 02:58:28 -0000
***************
*** 9,29 ****
Datum
gbt_var_decompress(PG_FUNCTION_ARGS)
{
! GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
! GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer(PG_DETOAST_DATUM(entry->key));
! if (key != (GBT_VARKEY *) DatumGetPointer(entry->key))
! {
! GISTENTRY *retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
! gistentryinit(*retval, PointerGetDatum(key),
! entry->rel, entry->page,
! entry->offset, VARSIZE(key), FALSE);
! PG_RETURN_POINTER(retval);
! }
! PG_RETURN_POINTER(entry);
}
/* Returns a better readable representaion of variable key ( sets pointer ) */
--- 9,29 ----
Datum
gbt_var_decompress(PG_FUNCTION_ARGS)
{
! GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
! GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer(PG_DETOAST_DATUM(entry->key));
! if (key != (GBT_VARKEY *) DatumGetPointer(entry->key))
! {
! GISTENTRY *retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
! gistentryinit(*retval, PointerGetDatum(key),
! entry->rel, entry->page,
! entry->offset, VARSIZE(key), FALSE);
! PG_RETURN_POINTER(retval);
! }
! PG_RETURN_POINTER(entry);
}
/* Returns a better readable representaion of variable key ( sets pointer ) */
***************
*** 216,222 ****
GBT_VARKEY_R nr;
GBT_VARKEY_R eo = gbt_var_key_readable(e);
-
if (eo.lower == eo.upper) /* leaf */
{
tmp = gbt_var_leaf2node(e, tinfo);
--- 216,221 ----
***************
*** 235,254 ****
nr.upper = ro.upper;
nk = gbt_var_key_copy(&nr, TRUE);
}
if ((*tinfo->f_cmp) ((bytea *) ro.upper, (bytea *) eo.upper) < 0)
{
nr.upper = eo.upper;
nr.lower = ro.lower;
nk = gbt_var_key_copy(&nr, TRUE);
}
if (nk)
- {
- pfree(DatumGetPointer(*u));
*u = PointerGetDatum(nk);
- }
-
-
-
}
else
{
--- 234,249 ----
nr.upper = ro.upper;
nk = gbt_var_key_copy(&nr, TRUE);
}
+
if ((*tinfo->f_cmp) ((bytea *) ro.upper, (bytea *) eo.upper) < 0)
{
nr.upper = eo.upper;
nr.lower = ro.lower;
nk = gbt_var_key_copy(&nr, TRUE);
}
+
if (nk)
*u = PointerGetDatum(nk);
}
else
{
***************
*** 256,265 ****
nr.upper = eo.upper;
*u = PointerGetDatum(gbt_var_key_copy(&nr, TRUE));
}
-
- if (tmp && tmp != e)
- pfree(tmp);
-
}
--- 251,256 ----
***************
*** 273,287 ****
if (entry->leafkey)
{
GBT_VARKEY *r = NULL;
! bytea *tstd = (bytea *) DatumGetPointer(entry->key); /* toasted */
! bytea *leaf = (bytea *) DatumGetPointer(PG_DETOAST_DATUM(entry->key)); /* untoasted */
GBT_VARKEY_R u;
u.lower = u.upper = leaf;
r = gbt_var_key_copy(&u, FALSE);
- if (tstd != leaf)
- pfree(leaf);
retval = palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page,
--- 264,275 ----
if (entry->leafkey)
{
GBT_VARKEY *r = NULL;
! bytea *leaf = (bytea *) DatumGetPointer(PG_DETOAST_DATUM(entry->key));
GBT_VARKEY_R u;
u.lower = u.upper = leaf;
r = gbt_var_key_copy(&u, FALSE);
retval = palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page,
***************
*** 319,325 ****
/* Truncate (=compress) key */
-
if (tinfo->trnc)
{
int32 plen;
--- 307,312 ----
***************
*** 328,334 ****
plen = gbt_var_node_cp_len((GBT_VARKEY *) DatumGetPointer(out), tinfo);
trc = gbt_var_node_truncate((GBT_VARKEY *) DatumGetPointer(out), plen + 1, tinfo);
- pfree(DatumGetPointer(out));
out = PointerGetDatum(trc);
}
--- 315,320 ----
***************
*** 428,444 ****
}
dres /= 256.0;
}
- pfree(DatumGetPointer(d));
*res += FLT_MIN;
*res += (float) (dres / ((double) (ol + 1)));
*res *= (FLT_MAX / (o->rel->rd_att->natts + 1));
-
}
- if (tmp && tmp != newe)
- pfree(tmp);
-
return res;
}
--- 414,425 ----
***************
*** 524,541 ****
}
}
- /* Free strxfrm'ed leafs */
- for (i = 0; i < svcntr; i++)
- pfree(sv[i]);
-
- if (sv)
- pfree(sv);
-
/* Truncate (=compress) key */
-
if (tinfo->trnc)
{
-
int32 ll = gbt_var_node_cp_len((GBT_VARKEY *) DatumGetPointer(v->spl_ldatum), tinfo);
int32 lr = gbt_var_node_cp_len((GBT_VARKEY *) DatumGetPointer(v->spl_rdatum), tinfo);
GBT_VARKEY *dl;
--- 505,513 ----
***************
*** 546,560 ****
dl = gbt_var_node_truncate((GBT_VARKEY *) DatumGetPointer(v->spl_ldatum), ll, tinfo);
dr = gbt_var_node_truncate((GBT_VARKEY *) DatumGetPointer(v->spl_rdatum), ll, tinfo);
- pfree(DatumGetPointer(v->spl_ldatum));
- pfree(DatumGetPointer(v->spl_rdatum));
v->spl_ldatum = PointerGetDatum(dl);
v->spl_rdatum = PointerGetDatum(dr);
-
}
- pfree(arr);
-
return v;
}
--- 518,527 ----
Index: contrib/cube/cube.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/cube/cube.c,v
retrieving revision 1.19
diff -c -r1.19 cube.c
*** contrib/cube/cube.c 17 May 2005 03:34:17 -0000 1.19
--- contrib/cube/cube.c 20 May 2005 02:33:19 -0000
***************
*** 229,236 ****
out = g_cube_binary_union(tmp, (NDBOX *)
DatumGetPointer(entryvec->vector[i].key),
sizep);
- if (i > 1)
- pfree(tmp);
tmp = out;
}
--- 229,234 ----
***************
*** 269,275 ****
rt_cube_size(ud, &tmp1);
rt_cube_size((NDBOX *) DatumGetPointer(origentry->key), &tmp2);
*result = (float) (tmp1 - tmp2);
- pfree(ud);
/*
* fprintf(stderr, "penalty\n"); fprintf(stderr, "\t%g\n", *result);
--- 267,272 ----
***************
*** 339,349 ****
rt_cube_size(inter_d, &size_inter);
size_waste = size_union - size_inter;
- pfree(union_d);
-
- if (inter_d != (NDBOX *) NULL)
- pfree(inter_d);
-
/*
* are these a more promising split than what we've already
* seen?
--- 336,341 ----
***************
*** 415,422 ****
/* pick which page to add it to */
if (size_alpha - size_l < size_beta - size_r)
{
- pfree(datum_l);
- pfree(union_dr);
datum_l = union_dl;
size_l = size_alpha;
*left++ = i;
--- 407,412 ----
***************
*** 424,431 ****
}
else
{
- pfree(datum_r);
- pfree(union_dl);
datum_r = union_dr;
size_r = size_alpha;
*right++ = i;
--- 414,419 ----
Index: contrib/ltree/_ltree_gist.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/ltree/_ltree_gist.c,v
retrieving revision 1.10
diff -c -r1.10 _ltree_gist.c
*** contrib/ltree/_ltree_gist.c 21 Oct 2004 19:28:33 -0000 1.10
--- contrib/ltree/_ltree_gist.c 20 May 2005 02:18:21 -0000
***************
*** 90,98 ****
item = NEXTVAL(item);
}
- if (PointerGetDatum(val) != entry->key)
- pfree(val);
-
retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(key),
entry->rel, entry->page,
--- 90,95 ----
***************
*** 424,430 ****
}
*right = *left = FirstOffsetNumber;
- pfree(costvector);
v->spl_ldatum = PointerGetDatum(datum_l);
v->spl_rdatum = PointerGetDatum(datum_r);
--- 421,426 ----
Index: contrib/ltree/ltree_gist.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/ltree/ltree_gist.c,v
retrieving revision 1.8
diff -c -r1.8 ltree_gist.c
*** contrib/ltree/ltree_gist.c 21 Oct 2004 19:28:33 -0000 1.8
--- contrib/ltree/ltree_gist.c 20 May 2005 02:17:29 -0000
***************
*** 77,85 ****
key->flag = LTG_ONENODE;
memcpy((void *) LTG_NODE(key), (void *) val, val->len);
- if (PointerGetDatum(val) != entry->key)
- pfree(val);
-
retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(key),
entry->rel, entry->page,
--- 77,82 ----
***************
*** 432,438 ****
else
memcpy((void *) LTG_RNODE(ru), (void *) ru_r, ru_r->len);
- pfree(array);
v->spl_ldatum = PointerGetDatum(lu);
v->spl_rdatum = PointerGetDatum(ru);
--- 429,434 ----
Index: contrib/pg_trgm/trgm_gist.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/pg_trgm/trgm_gist.c,v
retrieving revision 1.2
diff -c -r1.2 trgm_gist.c
*** contrib/pg_trgm/trgm_gist.c 29 Aug 2004 05:06:36 -0000 1.2
--- contrib/pg_trgm/trgm_gist.c 20 May 2005 02:39:47 -0000
***************
*** 91,103 ****
if (entry->leafkey)
{ /* trgm */
TRGM *res;
- text *toastedval = (text *) DatumGetPointer(entry->key);
text *val = (text *) DatumGetPointer(PG_DETOAST_DATUM(entry->key));
res = generate_trgm(VARDATA(val), VARSIZE(val) - VARHDRSZ);
- if (val != toastedval)
- pfree(val);
-
retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(res),
entry->rel, entry->page,
--- 91,99 ----
***************
*** 175,183 ****
#endif
}
- PG_FREE_IF_COPY(query, 1);
- pfree(qtrg);
-
PG_RETURN_BOOL(res);
}
--- 171,176 ----
***************
*** 603,610 ****
}
*right = *left = FirstOffsetNumber;
- pfree(costvector);
- pfree(cache);
v->spl_ldatum = PointerGetDatum(datum_l);
v->spl_rdatum = PointerGetDatum(datum_r);
--- 596,601 ----
Index: contrib/rtree_gist/rtree_gist.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/rtree_gist/rtree_gist.c,v
retrieving revision 1.10
diff -c -r1.10 rtree_gist.c
*** contrib/rtree_gist/rtree_gist.c 29 Aug 2004 05:06:37 -0000 1.10
--- contrib/rtree_gist/rtree_gist.c 20 May 2005 02:35:44 -0000
***************
*** 152,160 ****
ud = DirectFunctionCall2(rt_box_union, origentry->key, newentry->key);
tmp1 = size_box(ud);
- if (DatumGetPointer(ud) != NULL)
- pfree(DatumGetPointer(ud));
-
*result = tmp1 - size_box(origentry->key);
PG_RETURN_POINTER(result);
}
--- 152,157 ----
***************
*** 342,348 ****
else
ADDLIST(listT, unionT, posT, arr[i - 1].pos);
}
- pfree(arr);
}
/* which split more optimal? */
--- 339,344 ----
***************
*** 372,382 ****
if (direction == 'x')
{
- pfree(unionB);
- pfree(listB);
- pfree(unionT);
- pfree(listT);
-
v->spl_left = listL;
v->spl_right = listR;
v->spl_nleft = posL;
--- 368,373 ----
***************
*** 386,396 ****
}
else
{
- pfree(unionR);
- pfree(listR);
- pfree(unionL);
- pfree(listL);
-
v->spl_left = listB;
v->spl_right = listT;
v->spl_nleft = posB;
--- 377,382 ----
***************
*** 497,505 ****
in = (POLYGON *) PG_DETOAST_DATUM(entry->key);
r = (BOX *) palloc(sizeof(BOX));
memcpy((void *) r, (void *) &(in->boundbox), sizeof(BOX));
- if (in != (POLYGON *) DatumGetPointer(entry->key))
- pfree(in);
-
gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page,
entry->offset, sizeof(BOX), FALSE);
--- 483,488 ----
Index: contrib/seg/seg.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/seg/seg.c,v
retrieving revision 1.12
diff -c -r1.12 seg.c
*** contrib/seg/seg.c 21 Oct 2004 19:28:34 -0000 1.12
--- contrib/seg/seg.c 20 May 2005 02:31:25 -0000
***************
*** 238,245 ****
out = gseg_binary_union(tmp, (SEG *)
DatumGetPointer(entryvec->vector[i].key),
sizep);
- if (i > 1)
- pfree(tmp);
tmp = out;
}
--- 238,243 ----
***************
*** 278,284 ****
rt_seg_size(ud, &tmp1);
rt_seg_size((SEG *) DatumGetPointer(origentry->key), &tmp2);
*result = tmp1 - tmp2;
- pfree(ud);
#ifdef GIST_DEBUG
fprintf(stderr, "penalty\n");
--- 276,281 ----
***************
*** 351,366 ****
rt_seg_size(inter_d, &size_inter);
size_waste = size_union - size_inter;
- pfree(union_d);
-
- if (inter_d != (SEG *) NULL)
- pfree(inter_d);
-
/*
* are these a more promising split that what we've already
* seen?
*/
-
if (size_waste > waste || firsttime)
{
waste = size_waste;
--- 348,357 ----
***************
*** 427,434 ****
/* pick which page to add it to */
if (size_alpha - size_l < size_beta - size_r)
{
- pfree(datum_l);
- pfree(union_dr);
datum_l = union_dl;
size_l = size_alpha;
*left++ = i;
--- 418,423 ----
***************
*** 436,443 ****
}
else
{
- pfree(datum_r);
- pfree(union_dl);
datum_r = union_dr;
size_r = size_alpha;
*right++ = i;
--- 425,430 ----
Index: contrib/tsearch/gistidx.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/tsearch/gistidx.c,v
retrieving revision 1.8
diff -c -r1.8 gistidx.c
*** contrib/tsearch/gistidx.c 21 Oct 2004 19:28:35 -0000 1.8
--- contrib/tsearch/gistidx.c 20 May 2005 02:39:30 -0000
***************
*** 123,129 ****
if (entry->leafkey)
{ /* txtidx */
GISTTYPE *res;
- txtidx *toastedval = (txtidx *) DatumGetPointer(entry->key);
txtidx *val = (txtidx *) DatumGetPointer(PG_DETOAST_DATUM(entry->key));
int4 len;
int4 *arr;
--- 123,128 ----
***************
*** 154,161 ****
res = (GISTTYPE *) repalloc((void *) res, len);
res->len = len;
}
- if (val != toastedval)
- pfree(val);
/* make signature, if array is too long */
if (res->len > TOAST_INDEX_TARGET)
--- 153,158 ----
***************
*** 167,173 ****
ressign->len = len;
ressign->flag = SIGNKEY;
makesign(GETSIGN(ressign), res);
- pfree(res);
res = ressign;
}
--- 164,169 ----
***************
*** 780,787 ****
}
*right = *left = FirstOffsetNumber;
- pfree(costvector);
- pfree(cache);
v->spl_ldatum = PointerGetDatum(datum_l);
v->spl_rdatum = PointerGetDatum(datum_r);
--- 776,781 ----
Index: contrib/tsearch2/gistidx.c
===================================================================
RCS file: /var/lib/cvs/pgsql/contrib/tsearch2/gistidx.c,v
retrieving revision 1.6
diff -c -r1.6 gistidx.c
*** contrib/tsearch2/gistidx.c 31 Mar 2005 15:08:08 -0000 1.6
--- contrib/tsearch2/gistidx.c 20 May 2005 02:39:18 -0000
***************
*** 142,148 ****
if (entry->leafkey)
{ /* tsvector */
GISTTYPE *res;
- tsvector *toastedval = (tsvector *) DatumGetPointer(entry->key);
tsvector *val = (tsvector *) DatumGetPointer(PG_DETOAST_DATUM(entry->key));
int4 len;
int4 *arr;
--- 142,147 ----
***************
*** 173,180 ****
res = (GISTTYPE *) repalloc((void *) res, len);
res->len = len;
}
- if (val != toastedval)
- pfree(val);
/* make signature, if array is too long */
if (res->len > TOAST_INDEX_TARGET)
--- 172,177 ----
***************
*** 186,192 ****
ressign->len = len;
ressign->flag = SIGNKEY;
makesign(GETSIGN(ressign), res);
- pfree(res);
res = ressign;
}
--- 183,188 ----
***************
*** 734,741 ****
}
*right = *left = FirstOffsetNumber;
- pfree(costvector);
- pfree(cache);
v->spl_ldatum = PointerGetDatum(datum_l);
v->spl_rdatum = PointerGetDatum(datum_r);
--- 730,735 ----