From: Vadim B. Mikheev Date: Wed, 22 Oct 1997 19:02:52 +0000 (+0000) Subject: Fix multi-column index scans in internal pages. X-Git-Tag: REL9_0_0~28143 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=bd305f3f06f19d78cc1f0f2b6f454135c1f9f910;p=pg-rex%2Fsyncrep.git Fix multi-column index scans in internal pages. --- diff --git a/src/backend/access/nbtree/nbtsearch.c b/src/backend/access/nbtree/nbtsearch.c index 7b7a4ee2bd..39a18ccc8a 100644 --- a/src/backend/access/nbtree/nbtsearch.c +++ b/src/backend/access/nbtree/nbtsearch.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsearch.c,v 1.26 1997/09/08 20:54:27 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsearch.c,v 1.27 1997/10/22 19:02:52 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -197,8 +197,12 @@ _bt_moveright(Relation rel, * if number of attrs > keysize. Example: (2,0) - last items * on this page, (2,1) - first item on next page (hikey), our * scankey is x = 2. Scankey == (2,1) because of we compare - * first attrs only, but we shouldn't to move right of here. - - * vadim 04/15/97 + * first attrs only, but we shouldn't to move right of here. + * - vadim 04/15/97 + * + * Also, if this page is not LEAF one (and # of attrs > keysize) + * then we can't move too. + * - vadim 10/22/97 */ if (_bt_skeycmp(rel, keysz, scankey, page, hikey, @@ -227,6 +231,8 @@ _bt_moveright(Relation rel, elog(FATAL, "btree: unexpected greater last item"); /* move right */ } + else if (!(opaque->btpo_flags & BTP_LEAF)) + break; else if (_bt_skeycmp(rel, keysz, scankey, page, PageGetItemId(page, offmax), BTLessEqualStrategyNumber))