Enable FTS5 in SQLite migrations #582
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This statically compiles in the FTS5 module, allowing dbmate to handle migrations that use the full-text search features of SQLite.
History
Issue #237 raised the question of handling migrations that included FTS5 tables. It was later converted to a discussion (#357).
Solution
It is possible to enable the feature in the statically-compiled SQLite that ships with dbmate via a feature flag. Adding the
sqlite_fts5
flag to theMakefile
embeds this feature statically.Testing
An additional test was added with a
CREATE VIRTUAL TABLE
statement that leverages the FTS5 module. This test fails when dbmate is compiled without the feature flag. After adding the flag, this test passes.make test
andmake docker-all
pass.Confirmed that it works in practice locally on Ubuntu 22.04.
Additional info
For information about the extension:
https://www.sqlite.org/fts5.html
For the feature flag for mattn/go-sqlite3:
https://github.com/mattn/go-sqlite3/?tab=readme-ov-file#feature--extension-list