]> granicus.if.org Git - postgresql/commit
Fix an additional set of problems in GIN's handling of lossy page pointers.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 1 Aug 2010 19:16:47 +0000 (19:16 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 1 Aug 2010 19:16:47 +0000 (19:16 +0000)
commit7354dbfa8c2f88dfea1a93960e04d1d7544d38c3
tree6fbe813a16f7718e27c28dbabb2eff6d688335e4
parent538cb94db8ca507803d22a3c0ee1649822ec1c03
Fix an additional set of problems in GIN's handling of lossy page pointers.
Although the key-combining code claimed to work correctly if its input
contained both lossy and exact pointers for a single page in a single TID
stream, in fact this did not work, and could not work without pretty
fundamental redesign.  Modify keyGetItem so that it will not return such a
stream, by handling lossy-pointer cases a bit more explicitly than we did
before.

Per followup investigation of a gripe from Artur Dabrowski.
An example of a query that failed given his data set is
select count(*) from search_tab where
(to_tsvector('german', keywords ) @@ to_tsquery('german', 'ee:* | dd:*')) and
(to_tsvector('german', keywords ) @@ to_tsquery('german', 'aa:*'));

Back-patch to 8.4 where the lossy pointer code was introduced.
src/backend/access/gin/ginget.c
src/include/access/gin.h