sqlite: add virtual table support via createModule() #61544
+1,190
−0
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.
Expose SQLite's virtual table API through a new
database.createModule(name, options)method, wrappingsqlite3_create_module_v2().This enables users to create read-only virtual tables backed by JavaScript data sources. The registered module can be used in two ways:
SELECT * FROM module_name).CREATE VIRTUAL TABLE t USING module_name.Hidden columns can be used to pass parameters via table-valued function syntax (e.g.,
SELECT * FROM module_name(param1, param2)).The
optionsobject accepts:columns: Array of column definitions (name,type, optionalhidden)rows: Function returning an iterable of row arraysdirectOnly: Restrict usage to top-level SQL (default:false)useBigIntArguments: Pass integer parameters as BigInts (default:false)Column types are validated against
INTEGER,TEXT,REAL,BLOB, andANY. Column names are quoted to prevent SQL injection. AnidxNumbitmask is used to correctly map hidden column constraints betweenxBestIndexandxFilter.Fixes: #61539