Extends the existing TextIndexLike + JsonSkipIndex coverage toward the full
ClickHouse text-index surface. Validated on dev-vm head 26.6.1.734: a 1-hour
full-fleet run (167k queries, all ~45 oracles) produced 0 false positives from
any of these units. Soundness rules below were established empirically there.
ClickHouse#3 Pure-optimization toggle arm: TextIndexLike gains a DIRECT_READ_OFF arm
(query_plan_direct_read_from_text_index=0, query_plan_text_index_add_hint=0).
A pure optimization toggle must never change results; UNKNOWN_SETTING is
already tolerated so it degrades on older builds.
ClickHouse#4 Merge + delete-masked-part topology: TextIndexLike optionally issues a
synchronous lightweight DELETE (lightweight_deletes_sync=2) and/or OPTIMIZE
TABLE ... FINAL after the inserts, recording topology in assertion messages.
The Java ground truth now counts over the live (non-deleted) rows. Targets
the #107309 class (index honoring a delete-masked part).
ClickHouse#6 General-fleet predicate injection: generateTextSearchPredicate emits
startsWith / endsWith / multiSearchAny over plain String columns from a fixed
vocabulary, gated by --text-search-predicate-emission (default on). These
three are the functions proven index==scan-equivalent across ALL tokenizers
(incl. array). hasToken/hasAllTokens/hasAnyTokens are deliberately NOT emitted
here: hasToken diverges index-vs-scan on the array tokenizer (whole-value
token) and hasAllTokens/hasAnyTokens diverge on ngrams (the multi-token
needle's space-spanning grams) -- by-design tokenizer-semantics differences,
not bugs. Sound for NoREC because renderSkipIndex never carries a preprocessor.
#7a renderSkipIndex breadth: full tokenizer matrix (splitByNonAlpha, ngrams(N),
array, asciiCJK, splitByString, sparseGrams) and text() eligibility extended
to FixedString / LowCardinality(String) / Nullable(String) / Array(String)
(bare) and Map(String,*) via mapKeys/mapValues expression indexes. New
ClickHouseErrors.getTextIndexErrors() tolerances wired into table creation.
ClickHouse#5 TextIndexPreprocessor oracle (NEW): builds a private table with
INDEX(s) preprocessor=lower(s), then asserts that a forced direct read
(force_data_skipping_indices + direct_read=1, add_hint=0) over a mixed-case
corpus equals a Java lower()-token-membership ground truth. (The documented
INDEX(lower(s)) equivalent form cannot be force-engaged for hasToken(s,...) on
26.6.1.734 -- it raises INDEX_NOT_USED -- so the ground-truth comparison
replaces a second-table comparison.)
#7b TextIndexContainer oracle (NEW): Array(String) + array tokenizer with exact
has/hasAny/hasAll List ground truth, and Map(String,String) key-vs-value
isolation via mapContainsKey/mapContainsValue, across DEFAULT /
ignore_data_skipping_indices / use_skip_indexes=0 arms.
ALTER lifecycle: ClickHouseAlterGenerator gains ADD_INDEX / MATERIALIZE_INDEX /
CLEAR_INDEX / DROP_INDEX kinds. New ClickHouseTextIndexLifecycle oracle
asserts CREATE-with-index == (index-free + ALTER ADD INDEX + MATERIALIZE
INDEX SETTINGS mutations_sync=2) == use_skip_indexes=0 scan over a predicate
battery (LIKE + hasToken always; hasAllTokens/hasAnyTokens only on the
splitByNonAlpha arm, where they are index==scan-equivalent), exercising the
distinct MATERIALIZE-over-historical-parts code path.
All three new oracles registered in ClickHouseOracleFactory and the run /
validity oracle-name lists. All oracles use private per-iteration tables, fixed
token vocabulary, and integer-key/count comparisons to stay clear of the repo's
known false-positive families.
Bumps org.postgresql:postgresql from 42.5.1 to 42.7.11.
Release notesSourced from org.postgresql:postgresql's releases.
... (truncated)
ChangelogSourced from org.postgresql:postgresql's changelog.
... (truncated)
CommitsDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
You can disable automated security fix PRs for this repo from the Security Alerts page.