From aa02c14430c69a2819e034ce13d62b8f7275508b Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Fri, 10 Nov 2023 13:23:14 +0000 Subject: [PATCH] Towards virtual tables. --- vtab.go | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 vtab.go diff --git a/vtab.go b/vtab.go new file mode 100644 index 0000000..6057b35 --- /dev/null +++ b/vtab.go @@ -0,0 +1,68 @@ +package sqlite3 + +type Module interface { + Connect(db *Conn, arg ...string) (Vtab, error) +} + +type ModuleCreator interface { + Module + Create(db *Conn, arg ...string) (Vtab, error) +} + +type ModuleShadowNamer interface { + Module + ShadowName(suffix string) bool +} + +type Vtab interface { + BestIndex(*IndexInfo) error + Disconnect() error + Destroy() error + Open() (VtabCursor, error) +} + +type VtabUpdater interface { + Vtab + Update(arg ...Value) (rowid int64, err error) +} + +type VtabRenamer interface { + Vtab + Rename(new string) error +} + +type VtabOverloader interface { + Vtab + FindFunction(arg int, name string) (func(ctx Context, arg ...Value), error) +} + +type VtabChecker interface { + Vtab + Integrity(schema, table string, flags int) error +} + +type VtabTx interface { + Vtab + Begin() error + Sync() error + Commit() error + Rollback() error +} + +type VtabSavepointer interface { + VtabTx + Savepoint(n int) error + Release(n int) error + RollbackTo(n int) error +} + +type VtabCursor interface { + Close() error + Filter(idxNum int, idxStr string, arg ...Value) + Next() error + Eof() bool + Column(ctx *Context, n int) error + Rowid() (int64, error) +} + +type IndexInfo struct{}