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_utils_var.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'contrib/btree_gist/btree_utils_var.c') diff --git a/contrib/btree_gist/btree_utils_var.c b/contrib/btree_gist/btree_utils_var.c index 57d12e4cda2..f5f490bf4e9 100644 --- a/contrib/btree_gist/btree_utils_var.c +++ b/contrib/btree_gist/btree_utils_var.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/contrib/btree_gist/btree_utils_var.c,v 1.21 2009/06/11 14:48:50 momjian Exp $ + * $PostgreSQL: pgsql/contrib/btree_gist/btree_utils_var.c,v 1.22 2009/12/02 13:13:24 teodor Exp $ */ #include "btree_gist.h" @@ -444,8 +444,13 @@ gbt_vsrt_cmp(const void *a, const void *b, void *arg) GBT_VARKEY_R ar = gbt_var_key_readable(((const Vsrt *) a)->t); GBT_VARKEY_R br = gbt_var_key_readable(((const Vsrt *) b)->t); const gbtree_vinfo *tinfo = (const gbtree_vinfo *) arg; + int res; - return (*tinfo->f_cmp) (ar.lower, br.lower); + res = (*tinfo->f_cmp) (ar.lower, br.lower); + if (res == 0) + return (*tinfo->f_cmp) (ar.upper, br.upper); + + return res; } GIST_SPLITVEC * -- cgit v1.2.3