From aebc4e67fffc89a0cf933b9617316b7019318db4 Mon Sep 17 00:00:00 2001 From: Teodor Sigaev Date: Wed, 2 Dec 2009 13:13:24 +0000 Subject: Preventing intersection of ranges during page split. Changes are only optimization, so don't backpatch. --- contrib/btree_gist/btree_date.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'contrib/btree_gist/btree_date.c') diff --git a/contrib/btree_gist/btree_date.c b/contrib/btree_gist/btree_date.c index b9929922fec..b6e4e0b292a 100644 --- a/contrib/btree_gist/btree_date.c +++ b/contrib/btree_gist/btree_date.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/contrib/btree_gist/btree_date.c,v 1.7 2009/06/11 14:48:50 momjian Exp $ + * $PostgreSQL: pgsql/contrib/btree_gist/btree_date.c,v 1.8 2009/12/02 13:13:24 teodor Exp $ */ #include "btree_gist.h" #include "btree_utils_num.h" @@ -73,11 +73,15 @@ gbt_datelt(const void *a, const void *b) static int gbt_datekey_cmp(const void *a, const void *b) { - if (gbt_dategt((void *) &(((Nsrt *) a)->t[0]), (void *) &(((Nsrt *) b)->t[0]))) - return 1; - else if (gbt_datelt((void *) &(((Nsrt *) a)->t[0]), (void *) &(((Nsrt *) b)->t[0]))) - return -1; - return 0; + dateKEY *ia = (dateKEY*)(((Nsrt *) a)->t); + dateKEY *ib = (dateKEY*)(((Nsrt *) b)->t); + int res; + + 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 res; } -- cgit v1.2.3