• Tom Lane's avatar
    Fix an additional set of problems in GIN's handling of lossy page pointers. · d4fe61b0
    Tom Lane authored
    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.
    d4fe61b0
gin.h 18 KB