1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Fix bug #4814 (wrong subscript in consistent-function call), and add some

minimal regression test coverage for matchPartialInPendingList().
This commit is contained in:
Tom Lane
2009-05-19 02:48:26 +00:00
parent 2c39ab12f3
commit 7280fab717
3 changed files with 54 additions and 8 deletions

View File

@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/access/gin/ginget.c,v 1.25 2009/04/05 11:32:01 teodor Exp $
* $PostgreSQL: pgsql/src/backend/access/gin/ginget.c,v 1.26 2009/05/19 02:48:26 tgl Exp $
*-------------------------------------------------------------------------
*/
@ -820,10 +820,11 @@ scanGetCandidate(IndexScanDesc scan, pendingPosition *pos)
}
/*
* Scan page from current tuple (off) up to the first event:
* - tuple's attribute number is not equal to entry's attrnum
* - reach of last tuple
* Scan page from current tuple (off) up till the first of:
* - match is found (then returns true)
* - no later match is possible
* - tuple's attribute number is not equal to entry's attrnum
* - reach end of page
*/
static bool
matchPartialInPendingList(GinState *ginstate, Page page,
@ -849,13 +850,13 @@ matchPartialInPendingList(GinState *ginstate, Page page,
}
/*----------
* Check of partial match.
* Check partial match.
* case cmp == 0 => match
* case cmp > 0 => not match and finish scan
* case cmp > 0 => not match and end scan (no later match possible)
* case cmp < 0 => not match and continue scan
*----------
*/
cmp = DatumGetInt32(FunctionCall4(&ginstate->comparePartialFn[attrnum],
cmp = DatumGetInt32(FunctionCall4(&ginstate->comparePartialFn[attrnum-1],
value,
datum[off-1],
UInt16GetDatum(strategy),