summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2001-05-15 17:05:28 +0000
committerBruce Momjian <bruce@momjian.us>2001-05-15 17:05:28 +0000
commit6d8500309843c8e739f116d57a70a1ecebf64f29 (patch)
tree35cc674486a454f5c53591a748c28a1fdaa3def8
parent6099009eae8f4f7f47ebd712f15f7eb936973c7a (diff)
downloadpostgresql-6d8500309843c8e739f116d57a70a1ecebf64f29.tar.gz
Update crypto with patch for computation.
-rw-r--r--src/backend/access/gist/gist.c16
-rw-r--r--src/backend/access/gist/gistget.c13
2 files changed, 18 insertions, 11 deletions
diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c
index 1c5577b88a..39654b85ef 100644
--- a/src/backend/access/gist/gist.c
+++ b/src/backend/access/gist/gist.c
@@ -6,7 +6,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/gist/gist.c,v 1.72 2001/03/22 03:59:12 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/gist/gist.c,v 1.72.2.1 2001/05/15 17:05:28 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1199,13 +1199,17 @@ gistdentryinit(GISTSTATE *giststate, GISTENTRY *e, char *pr, Relation r,
gistentryinit(*e, pr, r, pg, o, b, l);
if (giststate->haskeytype)
{
- dep = (GISTENTRY *)
- DatumGetPointer(FunctionCall1(&giststate->decompressFn,
+ if ( b ) {
+ dep = (GISTENTRY *)
+ DatumGetPointer(FunctionCall1(&giststate->decompressFn,
PointerGetDatum(e)));
- gistentryinit(*e, dep->pred, dep->rel, dep->page, dep->offset, dep->bytes,
+ gistentryinit(*e, dep->pred, dep->rel, dep->page, dep->offset, dep->bytes,
dep->leafkey);
- if (dep != e)
- pfree(dep);
+ if (dep != e)
+ pfree(dep);
+ } else {
+ gistentryinit(*e, (char*)NULL, r, pg, o, 0, l);
+ }
}
}
diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c
index 8f3b5dd475..d6fac6f4e2 100644
--- a/src/backend/access/gist/gistget.c
+++ b/src/backend/access/gist/gistget.c
@@ -241,16 +241,16 @@ gistindex_keytest(IndexTuple tuple,
1,
tupdesc,
&isNull);
- gistdentryinit(giststate, &de, (char *) datum, r, p, offset,
- IndexTupleSize(tuple) - sizeof(IndexTupleData),
- FALSE);
-
- if (isNull)
+ if (isNull || IndexTupleSize(tuple) == sizeof(IndexTupleData) )
{
/* XXX eventually should check if SK_ISNULL */
return false;
}
+ gistdentryinit(giststate, &de, (char *) datum, r, p, offset,
+ IndexTupleSize(tuple) - sizeof(IndexTupleData),
+ FALSE);
+
if (key[0].sk_flags & SK_COMMUTE)
{
test = FunctionCall3(&key[0].sk_func,
@@ -266,6 +266,9 @@ gistindex_keytest(IndexTuple tuple,
ObjectIdGetDatum(key[0].sk_procedure));
}
+ if ( (char*)de.pred != (char*)datum )
+ if ( de.pred ) pfree( de.pred );
+
if (DatumGetBool(test) == !!(key[0].sk_flags & SK_NEGATE))
return false;