git.postgresql.org Git - postgresql.git/commit

git projects / postgresql.git / commit
? search:
summary | shortlog | log | commit | commitdiff | tree
(parent: bdadf36) | patch
Ensure that a tsquery like '!foo' matches empty tsvectors.
2017年1月26日 17:17:47 +0000 (12:17 -0500)
2017年1月26日 17:18:07 +0000 (12:18 -0500)
commit 9d4ca01314ba0c571139c5560a40ef764ad0feee
Ensure that a tsquery like '!foo' matches empty tsvectors.

!foo means "the tsvector does not contain foo", and therefore it should
match an empty tsvector. ts_match_vq() overenthusiastically supposed
that an empty tsvector could never match any query, so it forcibly
returned FALSE, the wrong answer. Remove the premature optimization.

Our behavior on this point was inconsistent, because while seqscans and
GIST index searches both failed to match empty tsvectors, GIN index
searches would find them, since GIN scans don't rely on ts_match_vq().
That makes this certainly a bug, not a debatable definition disagreement,
so back-patch to all supported branches.

Report and diagnosis by Tom Dunstan (bug #14515); added test cases by me.

Discussion: https://postgr.es/m/20170126025524.1434.97828@wrigleys.postgresql.org
src/backend/utils/adt/tsvector_op.c diff | blob | blame | history
src/test/regress/expected/tsearch.out diff | blob | blame | history
src/test/regress/expected/tstypes.out diff | blob | blame | history
src/test/regress/sql/tsearch.sql diff | blob | blame | history
src/test/regress/sql/tstypes.sql diff | blob | blame | history
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /