postgres.git / summary / log / commit / refs

commit    59dbd542ab18f557a88caa8a4c7279a4bb7e82e8
Author:   Teodor Sigaev <teodor@sigaev.ru>
Date:     Mon Jan 18 11:53:10 2010 +0000
First released in: 9.0.0, 8.4.3

    Fix incorrect comparison of scan key in GIN. Per report from
    Vyacheslav Kalinin <vka@mgcp.com>


src/backend/access/gin/ginscan.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/backend/access/gin/ginscan.c b/src/backend/access/gin/ginscan.c index bda97033adc..6090c4f1e24 100644 --- a/src/backend/access/gin/ginscan.c +++ b/src/backend/access/gin/ginscan.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/ginscan.c,v 1.24 2009/06/11 14:48:53 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/ginscan.c,v 1.24.2.1 2010/01/18 11:53:10 teodor Exp $ *------------------------------------------------------------------------- */ @@ -74,7 +74,9 @@ fillScanKey(GinState *ginstate, GinScanKey key, OffsetNumber attnum, Datum query /* link to the equals entry in current scan key */ key->scanEntry[i].master = NULL; for (j = 0; j < i; j++) - if (compareEntries(ginstate, attnum, entryValues[i], entryValues[j]) == 0) + if (compareEntries(ginstate, attnum, entryValues[i], entryValues[j]) == 0 && + key->scanEntry[i].isPartialMatch == key->scanEntry[j].isPartialMatch && + key->scanEntry[i].strategy == key->scanEntry[j].strategy) { key->scanEntry[i].master = key->scanEntry + j; break; [parent: 524d357d09cd]