Update crypto with patch for computation.
authorBruce Momjian <bruce@momjian.us>
Tue, 15 May 2001 17:05:28 +0000 (17:05 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 15 May 2001 17:05:28 +0000 (17:05 +0000)
src/backend/access/gist/gist.c
src/backend/access/gist/gistget.c

index 1c5577b88a066a1ecebfd6ce317147efc28d489c..39654b85efd731001655e26e57287361d61ed6d0 100644 (file)
@@ -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);
+       }
    }
 }
 
index 8f3b5dd475c96ce0c1b4cacddb51d0ceeae2264b..d6fac6f4e2050eaf5e117b9217fb31787078a676 100644 (file)
@@ -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;