diff options
author | Teodor Sigaev <teodor@sigaev.ru> | 2009-12-02 13:13:24 +0000 |
---|---|---|
committer | Teodor Sigaev <teodor@sigaev.ru> | 2009-12-02 13:13:24 +0000 |
commit | aebc4e67fffc89a0cf933b9617316b7019318db4 (patch) | |
tree | 81010843c02750bb9142142876598ae62cce2698 /contrib/btree_gist/btree_time.c | |
parent | 59ed94ad0c9f74a3f057f359316c845cedc4461e (diff) | |
download | postgresql-aebc4e67fffc89a0cf933b9617316b7019318db4.tar.gz postgresql-aebc4e67fffc89a0cf933b9617316b7019318db4.zip |
Preventing intersection of ranges during page split. Changes are only
optimization, so don't backpatch.
Diffstat (limited to 'contrib/btree_gist/btree_time.c')
-rw-r--r-- | contrib/btree_gist/btree_time.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/contrib/btree_gist/btree_time.c b/contrib/btree_gist/btree_time.c index 7287755fc70..25c756588be 100644 --- a/contrib/btree_gist/btree_time.c +++ b/contrib/btree_gist/btree_time.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/contrib/btree_gist/btree_time.c,v 1.16 2009/06/11 14:48:50 momjian Exp $ + * $PostgreSQL: pgsql/contrib/btree_gist/btree_time.c,v 1.17 2009/12/02 13:13:24 teodor Exp $ */ #include "btree_gist.h" #include "btree_utils_num.h" @@ -101,11 +101,15 @@ gbt_timelt(const void *a, const void *b) static int gbt_timekey_cmp(const void *a, const void *b) { - if (gbt_timegt((void *) &(((Nsrt *) a)->t[0]), (void *) &(((Nsrt *) b)->t[0]))) - return 1; - else if (gbt_timelt((void *) &(((Nsrt *) a)->t[0]), (void *) &(((Nsrt *) b)->t[0]))) - return -1; - return 0; + timeKEY *ia = (timeKEY*)(((Nsrt *) a)->t); + timeKEY *ib = (timeKEY*)(((Nsrt *) b)->t); + int res; + + res = DatumGetInt32(DirectFunctionCall2(time_cmp, TimeADTGetDatumFast(ia->lower), TimeADTGetDatumFast(ib->lower))); + if (res == 0) + return DatumGetInt32(DirectFunctionCall2(time_cmp, TimeADTGetDatumFast(ia->upper), TimeADTGetDatumFast(ib->upper))); + + return res; } |