Support DBD::SQLite FTS4 perl custom tokenizers
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 44/100
Research direction
Start with t/Search/Fulltext/Tokenizer/Ngram.t and reproduce the Unigram tokenizer failure on both execution backends. Trace Search::Fulltext::SQLite through CREATE VIRTUAL TABLE handling in the bundled DBI/SQLite implementation, then add the focused FTS4 callback test described in the issue. Done means the perl tokenizer syntax works and the integration test passes on both backends.
Written by the indexing model from the issue text.
Description
Summary
PerlOnJava's bundled JDBC-backed DBI/SQLite implementation does not support the perl custom tokenizer used by DBD::SQLite FTS4. This prevents Search::Fulltext from using pure-Perl custom tokenizers.
Reproduction
Distribution: Search-Fulltext-Tokenizer-Ngram-0.01
The upstream test constructs Search::Fulltext with:
tokenizer => "perl 'Search::Fulltext::Tokenizer::${tokenizer_name}::get_tokenizer'"
The equivalent minimal reproducer is:
use Search::Fulltext;
Search::Fulltext->new(
docs => ['abc'],
tokenizer => q(perl "Search::Fulltext::Tokenizer::Bigram::get_tokenizer"),
);
PerlOnJava reports:
DBI execute failed: unknown tokenizer: perl
Results
- Archived CPAN run:
20260918-141920-96054 - Standard Perl: PASS, 4 tests
- PerlOnJava JVM backend: FAIL
- PerlOnJava interpreter backend: FAIL
- Failing test:
t/Search/Fulltext/Tokenizer/Ngram.t,Unigram tokenizersubtest - The failure occurs when
Search::Fulltext::SQLiteexecutesCREATE VIRTUAL TABLE ... USING fts4(..., tokenize=perl ...).
The target and dependency distributions contain no XS/native code. This is a bundled DBI/SQLite compatibility gap, not an upstream test or environment failure.
Expected behavior
Support the perl FTS4 tokenizer syntax used by DBD::SQLite, or provide a documented compatible implementation that invokes the requested Perl tokenizer callback.
Suggested regression coverage
Add a focused DBI/SQLite test that creates an FTS4 table with tokenize=perl and exercises a Perl tokenizer callback, then retain Search::Fulltext::Tokenizer::Ngram as integration coverage on both execution backends.
- Dominant language
- Perl
- Stars
- 64
- Forks
- 6
- Avg merge
- 5h 25m
- Merged PRs (30d)
- 157
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from fglock/PerlOnJava
-
area:cpan-port area:unicode bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
fglock/PerlOnJava#1341 ·
-
area:cpan-port bug
Difficulty 3/5 1-2 days Newbie friendliness 72/100
fglock/PerlOnJava#1457 ·
-
bug high-impact
Difficulty 3/5 1-2 days Newbie friendliness 67/100
fglock/PerlOnJava#1456 · 1 comment ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 72/100
fglock/PerlOnJava#1455 ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 68/100
fglock/PerlOnJava#1454 ·
All issues in fglock/PerlOnJava
Similar issues
-
1.severity: security
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
api7/lua-resty-saml#63 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 68/100
-
Difficulty 1/5 Under an hour Newbie friendliness 82/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100