diff options
| author | Teodor Sigaev | 2004-03-30 15:45:33 +0000 |
|---|---|---|
| committer | Teodor Sigaev | 2004-03-30 15:45:33 +0000 |
| commit | 3f58637ed75db9fb5ca126332b82b051014b754b (patch) | |
| tree | c54d6e0a57a7fec660b9b55b70263303633cdd01 /contrib/btree_gist/btree_ts.c | |
| parent | 591e968f759f7cb720219b57a30d2b4f8fac5c24 (diff) | |
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_ts.c')
| -rw-r--r-- | contrib/btree_gist/btree_ts.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/contrib/btree_gist/btree_ts.c b/contrib/btree_gist/btree_ts.c index 59fdcdba5c..658528dcb9 100644 --- a/contrib/btree_gist/btree_ts.c +++ b/contrib/btree_gist/btree_ts.c @@ -146,22 +146,22 @@ gts_consistent(PG_FUNCTION_ARGS) Datum gts_union(PG_FUNCTION_ARGS) { - bytea *entryvec = (bytea *) PG_GETARG_POINTER(0); + GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0); int i, numranges; TSKEY *cur, *out = palloc(sizeof(TSKEY)); - numranges = (VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY); + numranges = entryvec->n; *(int *) PG_GETARG_POINTER(1) = sizeof(TSKEY); - cur = (TSKEY *) DatumGetPointer((((GISTENTRY *) (VARDATA(entryvec)))[0].key)); + cur = (TSKEY *) DatumGetPointer((entryvec->vector[0].key)); out->lower = cur->lower; out->upper = cur->upper; for (i = 1; i < numranges; i++) { - cur = (TSKEY *) DatumGetPointer((((GISTENTRY *) (VARDATA(entryvec)))[i].key)); + cur = (TSKEY *) DatumGetPointer((entryvec->vector[i].key)); if (TSGT(&out->lower, &cur->lower)) out->lower = cur->lower; if (TSLT(&out->upper, &cur->upper)) @@ -204,7 +204,7 @@ Datum gts_picksplit(PG_FUNCTION_ARGS) { PG_RETURN_POINTER(btree_picksplit( - (bytea *) PG_GETARG_POINTER(0), + (GistEntryVector *) PG_GETARG_POINTER(0), (GIST_SPLITVEC *) PG_GETARG_POINTER(1), gts_binary_union, tskey_cmp |
