Skip to content

fix(fts): keep the case of ignore_pattern - #116

Merged
adsharma merged 1 commit into
LadybugDB:mainfrom
zahariash:fix/fts-ignore-pattern-case
Oct 14, 2026
Merged

adsharma merged 1 commit into
LadybugDB:mainfrom
zahariash:fix/fts-ignore-pattern-case

Conversation

@zahariash

Copy link
Copy Markdown

This work was produced with the help of language models.

Fixes #115.

CREATE_FTS_INDEX lowercased ignore_pattern before compiling it, while the pattern is applied to the text before the text itself is lowercased. Capitals in the pattern therefore changed its meaning: [^A-Za-z]+ became [^a-za-z]+ and stripped every capital letter, so 'Ladybug Graph' was indexed as adybug and raph, and \W+ became \w+, which strips every word and leaves nothing to index.

Fix. The pattern is used as written; IgnorePattern::validate still compiles it at bind time, and the query-side pattern is the same string. Indexes created earlier keep their stored, lowercased pattern in both the index entry and the tokenize macro, so they tokenize exactly as before.

Tests. ignore_pattern.test gains a case that indexes 'Ladybug Graph' and 'Quiet Morning' under [^A-Za-z]+ and under \W+, checks that ladybug, Morning, graph and quiet are found and adybug is not, and repeats a query after -RELOADDB to cover the stored pattern. It fails on main and passes here. FTS extension tests: no new failures.

CREATE_FTS_INDEX lowercased ignore_pattern before compiling it, but the
pattern is matched against the text before the text is lowercased, so
capitals in the pattern changed meaning: [^A-Za-z]+ stripped capital
letters, and \W+ became \w+, which strips every word. The pattern is now
used as written. Indexes created earlier keep their stored pattern and
tokenize as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@adsharma
adsharma merged commit 7fefc91 into LadybugDB:main Oct 14, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: FTS ignore_pattern is applied lowercased and strips the wrong characters

2 participants