pgsql: Fix assorted bugs by changing TS_execute's callback API to terna

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Fix assorted bugs by changing TS_execute's callback API to terna
Дата
Msg-id E1jz3c0-0005E8-Rl@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix assorted bugs by changing TS_execute's callback API to ternary logic.

Text search sometimes failed to find valid matches, for instance
'!crew:A'::tsquery might fail to locate 'crew:1B'::tsvector during
an index search.  The root of the issue is that TS_execute's callback
functions were not changed to use ternary (yes/no/maybe) reporting
when we made the search logic itself do so.  It's somewhat annoying
to break that API, but on the other hand we now see that any code
using plain boolean logic is almost certainly broken since the
addition of phrase search.  There seem to be very few outside callers
of this code anyway, so we'll just break them intentionally to get
them to adapt.

This allows removal of tsginidx.c's private re-implementation of
TS_execute, since that's now entirely duplicative.  It's also no
longer necessary to avoid use of CALC_NOT in tsgistidx.c, since
the underlying callbacks can now do something reasonable.

Back-patch into v13.  We can't change this in stable branches,
but it seems not quite too late to fix it in v13.

Tom Lane and Pavel Borisov

Discussion: https://postgr.es/m/CALT9ZEE-aLotzBg-pOp2GFTesGWVYzXA3=mZKzRDa_OKnLF7Mg@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/2f2007fbb255be178aca586780967f43885203a7

Modified Files
--------------
src/backend/tsearch/wparser_def.c     |   8 +-
src/backend/utils/adt/tsginidx.c      | 133 ++++++------------------------
src/backend/utils/adt/tsgistidx.c     |  26 +++---
src/backend/utils/adt/tsrank.c        |  12 ++-
src/backend/utils/adt/tsvector_op.c   | 147 ++++++++++++++++++++++------------
src/include/tsearch/ts_utils.h        |  32 +++++---
src/test/regress/expected/tsearch.out | 144 +++++++++++++++++++++++++++++++++
src/test/regress/expected/tstypes.out |  49 ++++++++++++
src/test/regress/sql/tsearch.sql      |  24 ++++++
src/test/regress/sql/tstypes.sql      |   9 +++
10 files changed, 395 insertions(+), 189 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: Rename configure.in to configure.ac
Следующее
От: Amit Kapila
Дата:
Сообщение: pgsql: Fix buffer usage stats for nodes above Gather Merge.