mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
Fix bug introduced by last patch, thanks again to Mario Weilguni <mweilguni@sime.com>
This commit is contained in:
parent
79a1a2ec6b
commit
e7d490f91d
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* GiST support for ltree
|
||||
* Teodor Sigaev <teodor@stack.net>
|
||||
* $PostgreSQL: pgsql/contrib/ltree/ltree_gist.c,v 1.17 2006/08/07 17:39:04 teodor Exp $
|
||||
* $PostgreSQL: pgsql/contrib/ltree/ltree_gist.c,v 1.18 2006/08/08 15:45:18 teodor Exp $
|
||||
*/
|
||||
|
||||
#include "ltree.h"
|
||||
@ -456,16 +456,36 @@ gist_isparent(ltree_gist * key, ltree * query)
|
||||
return false;
|
||||
}
|
||||
|
||||
static ltree *
|
||||
copy_ltree( ltree *src ) {
|
||||
ltree *dst = (ltree*)palloc(src->len);
|
||||
memcpy(dst, src, src->len);
|
||||
return dst;
|
||||
}
|
||||
|
||||
static bool
|
||||
gist_ischild(ltree_gist * key, ltree * query)
|
||||
{
|
||||
if (ltree_compare(query, LTG_GETLNODE(key)) < 0)
|
||||
return false;
|
||||
ltree *left = copy_ltree(LTG_GETLNODE(key));
|
||||
ltree *right = copy_ltree(LTG_GETRNODE(key));
|
||||
bool res = true;
|
||||
|
||||
if (ltree_compare(query, LTG_GETRNODE(key)) > 0)
|
||||
return false;
|
||||
if (left->numlevel > query->numlevel)
|
||||
left->numlevel = query->numlevel;
|
||||
|
||||
return true;
|
||||
if (ltree_compare(query, left) < 0)
|
||||
res = false;
|
||||
|
||||
if (right->numlevel > query->numlevel)
|
||||
right->numlevel = query->numlevel;
|
||||
|
||||
if (res && ltree_compare(query, right) > 0)
|
||||
res = false;
|
||||
|
||||
pfree(left);
|
||||
pfree(right);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static bool
|
||||
|
Loading…
x
Reference in New Issue
Block a user