From 13923be7c8799c4f8ce0f5a04e4cd06c5b696f25 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Fri, 10 Aug 2001 14:34:28 +0000 Subject: 1. null-safe interface to GiST (as proposed in http://fts.postgresql.org/db/mw/msg.html?mid=1028327) 2. support for 'pass-by-value' arguments - to test this we used special opclass for int4 with values in range [0-2^15] More testing will be done after resolving problem with index_formtuple and implementation of B-tree using GiST 3. small patch to contrib modules (seg,cube,rtree_gist,intarray) - mark functions as 'isstrict' where needed. Oleg Bartunov --- src/include/access/gist.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/include/access/gist.h') diff --git a/src/include/access/gist.h b/src/include/access/gist.h index b555a195db..af9b7c3b0d 100644 --- a/src/include/access/gist.h +++ b/src/include/access/gist.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: gist.h,v 1.29 2001/07/15 22:48:18 tgl Exp $ + * $Id: gist.h,v 1.30 2001/08/10 14:34:28 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -72,6 +72,7 @@ typedef struct GISTSTATE FmgrInfo penaltyFn[INDEX_MAX_KEYS]; FmgrInfo picksplitFn[INDEX_MAX_KEYS]; FmgrInfo equalFn[INDEX_MAX_KEYS]; + bool attbyval[INDEX_MAX_KEYS]; bool haskeytype; bool keytypbyval; } GISTSTATE; @@ -124,12 +125,14 @@ typedef struct GIST_SPLITVEC Datum spl_ldatum; /* Union of keys in spl_left */ Datum spl_lattr[INDEX_MAX_KEYS]; /* Union of subkeys in spl_left */ int spl_lattrsize[INDEX_MAX_KEYS]; + bool spl_lisnull[INDEX_MAX_KEYS]; OffsetNumber *spl_right; /* array of entries that go right */ int spl_nright; /* size of the array */ Datum spl_rdatum; /* Union of keys in spl_right */ Datum spl_rattr[INDEX_MAX_KEYS]; /* Union of subkeys in spl_right */ int spl_rattrsize[INDEX_MAX_KEYS]; + bool spl_risnull[INDEX_MAX_KEYS]; int *spl_idgrp; int *spl_ngrp; /* number in each group */ @@ -168,7 +171,7 @@ extern void gistfreestack(GISTSTACK *s); extern void initGISTstate(GISTSTATE *giststate, Relation index); extern void gistdentryinit(GISTSTATE *giststate, int nkey, GISTENTRY *e, Datum k, Relation r, Page pg, OffsetNumber o, - int b, bool l); + int b, bool l, bool isNull); extern StrategyNumber RelationGetGISTStrategy(Relation, AttrNumber, RegProcedure); -- cgit v1.2.1