aboutsummaryrefslogtreecommitdiff
path: root/contrib/btree_gist/btree_ts.c
diff options
context:
space:
mode:
authorTeodor Sigaev <teodor@sigaev.ru>2004-06-03 12:26:10 +0000
committerTeodor Sigaev <teodor@sigaev.ru>2004-06-03 12:26:10 +0000
commit7b81988f9b5275e2cdf7bbb0ca0620a24f1afc82 (patch)
treea21263073a48e6b7f9e6949734a3f0724a799579 /contrib/btree_gist/btree_ts.c
parent921d749bd4c34c3349f1c254d5faa2f1cec03911 (diff)
downloadpostgresql-7b81988f9b5275e2cdf7bbb0ca0620a24f1afc82.tar.gz
postgresql-7b81988f9b5275e2cdf7bbb0ca0620a24f1afc82.zip
- Add aligment of variable data types
- Add aligment for interval data types - Avoid floating point overflow in penalty functions Janko Richter <jankorichter@yahoo.de> and teodor
Diffstat (limited to 'contrib/btree_gist/btree_ts.c')
-rw-r--r--contrib/btree_gist/btree_ts.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/contrib/btree_gist/btree_ts.c b/contrib/btree_gist/btree_ts.c
index 3c73a7b83cc..97f209ed74a 100644
--- a/contrib/btree_gist/btree_ts.c
+++ b/contrib/btree_gist/btree_ts.c
@@ -140,7 +140,7 @@ gbt_tstz_compress(PG_FUNCTION_ARGS)
if (entry->leafkey)
{
tsKEY *r = (tsKEY *) palloc(sizeof(tsKEY));
-
+
TimestampTz ts = *(TimestampTz *) DatumGetPointer(entry->key);
Timestamp gmt ;
@@ -167,6 +167,7 @@ gbt_ts_consistent(PG_FUNCTION_ARGS)
tsKEY *kkk = (tsKEY *) DatumGetPointer(entry->key);
GBT_NUMKEY_R key ;
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
+
key.lower = (GBT_NUMKEY*) &kkk->lower ;
key.upper = (GBT_NUMKEY*) &kkk->upper ;
@@ -180,12 +181,13 @@ gbt_tstz_consistent(PG_FUNCTION_ARGS)
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
TimestampTz *query = (Timestamp *) PG_GETARG_POINTER(1);
- tsKEY *kkk = (tsKEY *) DatumGetPointer(entry->key);
+ char *kkk = (char *) DatumGetPointer(entry->key);
GBT_NUMKEY_R key ;
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
Timestamp qqq ;
- key.lower = (GBT_NUMKEY*) &kkk->lower ;
- key.upper = (GBT_NUMKEY*) &kkk->upper ;
+
+ key.lower = (GBT_NUMKEY*) &kkk[0];
+ key.upper = (GBT_NUMKEY*) &kkk[MAXALIGN(tinfo.size)];
tstz_to_ts_gmt ( &qqq, query );
PG_RETURN_BOOL(