aboutsummaryrefslogtreecommitdiff
path: root/contrib/btree_gist/btree_inet.c
diff options
context:
space:
mode:
authorTeodor Sigaev <teodor@sigaev.ru>2009-12-02 13:13:24 +0000
committerTeodor Sigaev <teodor@sigaev.ru>2009-12-02 13:13:24 +0000
commitaebc4e67fffc89a0cf933b9617316b7019318db4 (patch)
tree81010843c02750bb9142142876598ae62cce2698 /contrib/btree_gist/btree_inet.c
parent59ed94ad0c9f74a3f057f359316c845cedc4461e (diff)
downloadpostgresql-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_inet.c')
-rw-r--r--contrib/btree_gist/btree_inet.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/contrib/btree_gist/btree_inet.c b/contrib/btree_gist/btree_inet.c
index 32f9d11102d..a77864abeb5 100644
--- a/contrib/btree_gist/btree_inet.c
+++ b/contrib/btree_gist/btree_inet.c
@@ -1,5 +1,5 @@
/*
- * $PostgreSQL: pgsql/contrib/btree_gist/btree_inet.c,v 1.10 2009/06/11 14:48:50 momjian Exp $
+ * $PostgreSQL: pgsql/contrib/btree_gist/btree_inet.c,v 1.11 2009/12/02 13:13:24 teodor Exp $
*/
#include "btree_gist.h"
#include "btree_utils_num.h"
@@ -60,13 +60,18 @@ gbt_inetlt(const void *a, const void *b)
static int
gbt_inetkey_cmp(const void *a, const void *b)
{
+ inetKEY *ia = (inetKEY*)(((Nsrt *) a)->t);
+ inetKEY *ib = (inetKEY*)(((Nsrt *) b)->t);
- if (*(double *) (&((Nsrt *) a)->t[0]) > *(double *) (&((Nsrt *) b)->t[0]))
- return 1;
- else if (*(double *) (&((Nsrt *) a)->t[0]) < *(double *) (&((Nsrt *) b)->t[0]))
- return -1;
- return 0;
+ if (ia->lower == ib->lower)
+ {
+ if (ia->upper == ib->upper)
+ return 0;
+
+ return (ia->upper > ib->upper) ? 1 : -1;
+ }
+ return (ia->lower > ib->lower) ? 1 : -1;
}