@@ -124,11 +124,17 @@ gbt_timetz_compress(PG_FUNCTION_ARGS)
124124{
125125timeKEY * r = (timeKEY * )palloc (sizeof (timeKEY ));
126126TimeTzADT * tz = DatumGetTimeTzADTP (entry -> key );
127+ TimeADT tmp ;
127128
128129retval = palloc (sizeof (GISTENTRY ));
129130
130131/* We are using the time + zone only to compress */
131- r -> lower = r -> upper = (tz -> time + tz -> zone );
132+ #ifdef HAVE_INT64_TIMESTAMP
133+ tmp = tz -> time + (tz -> zone * INT64CONST (1000000 ));
134+ #else
135+ tmp = (tz -> time + tz -> zone );
136+ #endif
137+ r -> lower = r -> upper = tmp ;
132138gistentryinit (* retval ,PointerGetDatum (r ),
133139entry -> rel ,entry -> page ,
134140entry -> offset ,sizeof (timeKEY ), FALSE);
@@ -162,10 +168,17 @@ gbt_timetz_consistent(PG_FUNCTION_ARGS)
162168{
163169GISTENTRY * entry = (GISTENTRY * )PG_GETARG_POINTER (0 );
164170TimeTzADT * query = PG_GETARG_TIMETZADT_P (1 );
165- TimeADT qqq = query -> time + query -> zone ;
171+ StrategyNumber strategy = (StrategyNumber )PG_GETARG_UINT16 (2 );
172+
166173timeKEY * kkk = (timeKEY * )DatumGetPointer (entry -> key );
174+ TimeADT qqq ;
167175GBT_NUMKEY_R key ;
168- StrategyNumber strategy = (StrategyNumber )PG_GETARG_UINT16 (2 );
176+
177+ #ifdef HAVE_INT64_TIMESTAMP
178+ qqq = query -> time + (query -> zone * INT64CONST (1000000 ));
179+ #else
180+ qqq = (query -> time + query -> zone );
181+ #endif
169182
170183key .lower = (GBT_NUMKEY * )& kkk -> lower ;
171184key .upper = (GBT_NUMKEY * )& kkk -> upper ;