@ -29,41 +29,42 @@ PG_FUNCTION_INFO_V1(gbt_date_same);
static bool
gbt_dategt ( const void * a , const void * b , FmgrInfo * flinfo )
{
return DatumGetBool (
DirectFunctionCall2 ( date_gt , DateADTGetDatum ( * ( ( const DateADT * ) a ) ) , DateADTGetDatum ( * ( ( const DateADT * ) b ) ) )
) ;
return DatumGetBool ( DirectFunctionCall2 ( date_gt ,
DateADTGetDatum ( * ( ( const DateADT * ) a ) ) ,
DateADTGetDatum ( * ( ( const DateADT * ) b ) ) ) ) ;
}
static bool
gbt_datege ( const void * a , const void * b , FmgrInfo * flinfo )
{
return DatumGetBool (
DirectFunctionCall2 ( date_ge , DateADTGetDatum ( * ( ( const DateADT * ) a ) ) , DateADTGetDatum ( * ( ( const DateADT * ) b ) ) )
) ;
return DatumGetBool ( DirectFunctionCall2 ( date_ge ,
DateADTGetDatum ( * ( ( const DateADT * ) a ) ) ,
DateADTGetDatum ( * ( ( const DateADT * ) b ) ) ) ) ;
}
static bool
gbt_dateeq ( const void * a , const void * b , FmgrInfo * flinfo )
{
return DatumGetBool (
DirectFunctionCall2 ( date_eq , DateADTGetDatum ( * ( ( const DateADT * ) a ) ) , DateADTGetDatum ( * ( ( const DateADT * ) b ) ) )
return DatumGetBool ( DirectFunctionCall2 ( date_eq ,
DateADTGetDatum ( * ( ( const DateADT * ) a ) ) ,
DateADTGetDatum ( * ( ( const DateADT * ) b ) ) )
) ;
}
static bool
gbt_datele ( const void * a , const void * b , FmgrInfo * flinfo )
{
return DatumGetBool (
DirectFunctionCall2 ( date_le , DateADTGetDatum ( * ( ( const DateADT * ) a ) ) , DateADTGetDatum ( * ( ( const DateADT * ) b ) ) )
) ;
return DatumGetBool ( DirectFunctionCall2 ( date_le ,
DateADTGetDatum ( * ( ( const DateADT * ) a ) ) ,
DateADTGetDatum ( * ( ( const DateADT * ) b ) ) ) ) ;
}
static bool
gbt_datelt ( const void * a , const void * b , FmgrInfo * flinfo )
{
return DatumGetBool (
DirectFunctionCall2 ( date_lt , DateADTGetDatum ( * ( ( const DateADT * ) a ) ) , DateADTGetDatum ( * ( ( const DateADT * ) b ) ) )
) ;
return DatumGetBool ( DirectFunctionCall2 ( date_lt ,
DateADTGetDatum ( * ( ( const DateADT * ) a ) ) ,
DateADTGetDatum ( * ( ( const DateADT * ) b ) ) ) ) ;
}
@ -75,9 +76,13 @@ gbt_datekey_cmp(const void *a, const void *b, FmgrInfo *flinfo)
dateKEY * ib = ( dateKEY * ) ( ( ( const Nsrt * ) b ) - > t ) ;
int res ;
res = DatumGetInt32 ( DirectFunctionCall2 ( date_cmp , DateADTGetDatum ( ia - > lower ) , DateADTGetDatum ( ib - > lower ) ) ) ;
res = DatumGetInt32 ( DirectFunctionCall2 ( date_cmp ,
DateADTGetDatum ( ia - > lower ) ,
DateADTGetDatum ( ib - > lower ) ) ) ;
if ( res = = 0 )
return DatumGetInt32 ( DirectFunctionCall2 ( date_cmp , DateADTGetDatum ( ia - > upper ) , DateADTGetDatum ( ib - > upper ) ) ) ;
return DatumGetInt32 ( DirectFunctionCall2 ( date_cmp ,
DateADTGetDatum ( ia - > upper ) ,
DateADTGetDatum ( ib - > upper ) ) ) ;
return res ;
}
@ -162,9 +167,9 @@ gbt_date_consistent(PG_FUNCTION_ARGS)
key . lower = ( GBT_NUMKEY * ) & kkk - > lower ;
key . upper = ( GBT_NUMKEY * ) & kkk - > upper ;
PG_RETURN_BOOL (
gbt_num_consistent ( & key , ( void * ) & query , & strategy , GIST_LEAF ( entry ) , & tinfo , fcinfo - > flinfo )
) ;
PG_RETURN_BOOL ( gbt_num_consistent ( & key , ( void * ) & query , & strategy ,
GIST_LEAF ( entry ) , & tinfo ,
fcinfo - > flinfo ) ) ;
}
@ -181,9 +186,8 @@ gbt_date_distance(PG_FUNCTION_ARGS)
key . lower = ( GBT_NUMKEY * ) & kkk - > lower ;
key . upper = ( GBT_NUMKEY * ) & kkk - > upper ;
PG_RETURN_FLOAT8 (
gbt_num_distance ( & key , ( void * ) & query , GIST_LEAF ( entry ) , & tinfo , fcinfo - > flinfo )
) ;
PG_RETURN_FLOAT8 ( gbt_num_distance ( & key , ( void * ) & query , GIST_LEAF ( entry ) ,
& tinfo , fcinfo - > flinfo ) ) ;
}
@ -207,15 +211,13 @@ gbt_date_penalty(PG_FUNCTION_ARGS)
int32 diff ,
res ;
diff = DatumGetInt32 ( DirectFunctionCall2 (
date_mi ,
diff = DatumGetInt32 ( DirectFunctionCall2 ( date_mi ,
DateADTGetDatum ( newentry - > upper ) ,
DateADTGetDatum ( origentry - > upper ) ) ) ;
res = Max ( diff , 0 ) ;
diff = DatumGetInt32 ( DirectFunctionCall2 (
date_mi ,
diff = DatumGetInt32 ( DirectFunctionCall2 ( date_mi ,
DateADTGetDatum ( origentry - > lower ) ,
DateADTGetDatum ( newentry - > lower ) ) ) ;
@ -225,8 +227,7 @@ gbt_date_penalty(PG_FUNCTION_ARGS)
if ( res > 0 )
{
diff = DatumGetInt32 ( DirectFunctionCall2 (
date_mi ,
diff = DatumGetInt32 ( DirectFunctionCall2 ( date_mi ,
DateADTGetDatum ( origentry - > upper ) ,
DateADTGetDatum ( origentry - > lower ) ) ) ;
* result + = FLT_MIN ;
@ -241,11 +242,9 @@ gbt_date_penalty(PG_FUNCTION_ARGS)
Datum
gbt_date_picksplit ( PG_FUNCTION_ARGS )
{
PG_RETURN_POINTER ( gbt_num_picksplit (
( GistEntryVector * ) PG_GETARG_POINTER ( 0 ) ,
PG_RETURN_POINTER ( gbt_num_picksplit ( ( GistEntryVector * ) PG_GETARG_POINTER ( 0 ) ,
( GIST_SPLITVEC * ) PG_GETARG_POINTER ( 1 ) ,
& tinfo , fcinfo - > flinfo
) ) ;
& tinfo , fcinfo - > flinfo ) ) ;
}
Datum