aboutsummaryrefslogtreecommitdiff
path: root/contrib/btree_gist/btree_common.c
diff options
context:
space:
mode:
authorTeodor Sigaev <teodor@sigaev.ru>2004-03-30 15:45:33 +0000
committerTeodor Sigaev <teodor@sigaev.ru>2004-03-30 15:45:33 +0000
commitf2c064afcbfad4999d7e9ccb644a8aa99463a1ac (patch)
treea630e42b10478f1d88b637a96114945016faa2e0 /contrib/btree_gist/btree_common.c
parent8d9a28eeefc477638cca58d0685635271eae49d6 (diff)
downloadpostgresql-f2c064afcbfad4999d7e9ccb644a8aa99463a1ac.tar.gz
postgresql-f2c064afcbfad4999d7e9ccb644a8aa99463a1ac.zip
Cleanup vectors of GISTENTRY and eliminate problem with 64-bit strict-aligned
boxes. Change interface to user-defined GiST support methods union and picksplit. Now instead of bytea struct it used special GistEntryVector structure.
Diffstat (limited to 'contrib/btree_gist/btree_common.c')
-rw-r--r--contrib/btree_gist/btree_common.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/contrib/btree_gist/btree_common.c b/contrib/btree_gist/btree_common.c
index 9306076e0ae..b2353bf57be 100644
--- a/contrib/btree_gist/btree_common.c
+++ b/contrib/btree_gist/btree_common.c
@@ -22,14 +22,14 @@ btree_decompress(PG_FUNCTION_ARGS)
** The GiST PickSplit method
*/
extern GIST_SPLITVEC *
-btree_picksplit(bytea *entryvec, GIST_SPLITVEC *v, BINARY_UNION bu, CMPFUNC cmp)
+btree_picksplit(GistEntryVector *entryvec, GIST_SPLITVEC *v, BINARY_UNION bu, CMPFUNC cmp)
{
OffsetNumber i;
RIX *array;
OffsetNumber maxoff;
int nbytes;
- maxoff = ((VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY)) - 1;
+ maxoff = entryvec->n - 1;
nbytes = (maxoff + 2) * sizeof(OffsetNumber);
v->spl_left = (OffsetNumber *) palloc(nbytes);
v->spl_right = (OffsetNumber *) palloc(nbytes);
@@ -43,7 +43,7 @@ btree_picksplit(bytea *entryvec, GIST_SPLITVEC *v, BINARY_UNION bu, CMPFUNC cmp)
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
{
array[i].index = i;
- array[i].r = (char *) DatumGetPointer((((GISTENTRY *) (VARDATA(entryvec)))[i].key));
+ array[i].r = (char *) DatumGetPointer((entryvec->vector[i].key));
}
qsort((void *) &array[FirstOffsetNumber], maxoff - FirstOffsetNumber + 1,
sizeof(RIX), cmp);