Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6d54320

Browse files
committed
fix bug about modifying value in shared buffer,
what was a reason to corrupt index.Thank to Mario Weilguni <mweilguni@sime.com> todiscover a bug.
1 parente002836 commit6d54320

File tree

1 file changed

+13
-41
lines changed

1 file changed

+13
-41
lines changed

‎contrib/ltree/ltree_gist.c

Lines changed: 13 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* GiST support for ltree
33
* Teodor Sigaev <teodor@stack.net>
4-
* $PostgreSQL: pgsql/contrib/ltree/ltree_gist.c,v 1.16 2006/07/11 16:00:44 teodor Exp $
4+
* $PostgreSQL: pgsql/contrib/ltree/ltree_gist.c,v 1.17 2006/08/07 17:39:04 teodor Exp $
55
*/
66

77
#include"ltree.h"
@@ -459,27 +459,13 @@ gist_isparent(ltree_gist * key, ltree * query)
459459
staticbool
460460
gist_ischild(ltree_gist*key,ltree*query)
461461
{
462-
ltree*left=LTG_GETLNODE(key);
463-
ltree*right=LTG_GETRNODE(key);
464-
int4numlevelL=left->numlevel;
465-
int4numlevelR=right->numlevel;
466-
boolres= true;
462+
if (ltree_compare(query,LTG_GETLNODE(key))<0)
463+
return false;
467464

468-
if (numlevelL>query->numlevel)
469-
left->numlevel=query->numlevel;
465+
if (ltree_compare(query,LTG_GETRNODE(key))>0)
466+
return false;
470467

471-
if (ltree_compare(query,left)<0)
472-
res= false;
473-
474-
if (numlevelR>query->numlevel)
475-
right->numlevel=query->numlevel;
476-
477-
if (res&&ltree_compare(query,right)>0)
478-
res= false;
479-
480-
left->numlevel=numlevelL;
481-
right->numlevel=numlevelR;
482-
returnres;
468+
return true;
483469
}
484470

485471
staticbool
@@ -547,36 +533,22 @@ gist_tqcmp(ltree * t, lquery * q)
547533
ql=LQL_NEXT(ql);
548534
}
549535

550-
returnt->numlevel-q->firstgood;
536+
returnMin(t->numlevel,q->firstgood)-q->firstgood;
551537
}
552538

553539
staticbool
554540
gist_between(ltree_gist*key,lquery*query)
555541
{
556-
ltree*left=LTG_GETLNODE(key);
557-
ltree*right=LTG_GETRNODE(key);
558-
int4numlevelL=left->numlevel;
559-
int4numlevelR=right->numlevel;
560-
boolres= true;
561-
562542
if (query->firstgood==0)
563543
return true;
564544

565-
if (numlevelL>query->firstgood)
566-
left->numlevel=query->firstgood;
545+
if (gist_tqcmp(LTG_GETLNODE(key),query)>0)
546+
return false;
567547

568-
if (gist_tqcmp(left,query)>0)
569-
res= false;
548+
if (gist_tqcmp(LTG_GETRNODE(key),query)<0)
549+
return false;
570550

571-
if (numlevelR>query->firstgood)
572-
right->numlevel=query->firstgood;
573-
574-
if (res&&gist_tqcmp(right,query)<0)
575-
res= false;
576-
577-
left->numlevel=numlevelL;
578-
right->numlevel=numlevelR;
579-
returnres;
551+
return true;
580552
}
581553

582554
staticbool
@@ -675,7 +647,7 @@ ltree_consistent(PG_FUNCTION_ARGS)
675647
gist_isparent(key, (ltree*)query);
676648
break;
677649
case11:
678-
query=PG_GETARG_LTREE_COPY(1);
650+
query=PG_GETARG_LTREE(1);
679651
res= (GIST_LEAF(entry)) ?
680652
inner_isparent(LTG_NODE(key), (ltree*)query)
681653
:

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp