mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Replace TS_execute's TS_EXEC_CALC_NOT flag with TS_EXEC_SKIP_NOT.
It's fairly silly that ignoring NOT subexpressions is TS_execute's default behavior. It's wrong on its face and it encourages errors of omission. Moreover, the only two remaining callers that aren't specifying CALC_NOT are in ts_headline calculations, and it's very arguable that those are bugs: if you've specified "!foo" in your query, why would you want to get a headline that includes "foo"? Hence, rip that out and change the default behavior to be to calculate NOT accurately. As a concession to the slim chance that there is still somebody somewhere who needs the incorrect behavior, provide a new SKIP_NOT flag to explicitly request that. Back-patch into v13, mainly because it seems better to change this at the same time as the previous commit's rejiggering of TS_execute related APIs. Any outside callers affected by this change are probably also affected by that one. Discussion: https://postgr.es/m/CALT9ZEE-aLotzBg-pOp2GFTesGWVYzXA3=mZKzRDa_OKnLF7Mg@mail.gmail.com
This commit is contained in:
@ -183,10 +183,12 @@ typedef TSTernaryValue (*TSExecuteCallback) (void *arg, QueryOperand *val,
|
||||
*/
|
||||
#define TS_EXEC_EMPTY (0x00)
|
||||
/*
|
||||
* If TS_EXEC_CALC_NOT is not set, then NOT expressions are automatically
|
||||
* evaluated to be true. Useful in cases where NOT isn't important (ranking).
|
||||
* If TS_EXEC_SKIP_NOT is set, then NOT sub-expressions are automatically
|
||||
* evaluated to be true. This was formerly the default behavior. It's now
|
||||
* deprecated because it tends to give silly answers, but some applications
|
||||
* might still have a use for it.
|
||||
*/
|
||||
#define TS_EXEC_CALC_NOT (0x01)
|
||||
#define TS_EXEC_SKIP_NOT (0x01)
|
||||
/*
|
||||
* If TS_EXEC_PHRASE_NO_POS is set, allow OP_PHRASE to be executed lossily
|
||||
* in the absence of position information: a true result indicates that the
|
||||
|
Reference in New Issue
Block a user