summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3/util/sql3util
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/util/sql3util')
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/util/sql3util/README.md9
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go65
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/util/sql3util/const.go61
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/util/sql3util/parse.go210
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/util/sql3util/sql3util.go9
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/util/sql3util/wasm/sql3parse_table.wasmbin17400 -> 0 bytes
6 files changed, 0 insertions, 354 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/README.md b/vendor/github.com/ncruces/go-sqlite3/util/sql3util/README.md
deleted file mode 100644
index 9f47f5a9f..000000000
--- a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# SQLite utility functions
-
-This package implements assorted SQLite utilities
-useful to extension writers.
-
-It also wraps a [parser](https://github.com/marcobambini/sqlite-createtable-parser)
-for the [`CREATE`](https://sqlite.org/lang_createtable.html) and
-[`ALTER TABLE`](https://sqlite.org/lang_altertable.html) commands,
-created by [Marco Bambini](https://github.com/marcobambini). \ No newline at end of file
diff --git a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go b/vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go
deleted file mode 100644
index 3e8c728b0..000000000
--- a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go
+++ /dev/null
@@ -1,65 +0,0 @@
-package sql3util
-
-import "strings"
-
-// NamedArg splits an named arg into a key and value,
-// around an equals sign.
-// Spaces are trimmed around both key and value.
-func NamedArg(arg string) (key, val string) {
- key, val, _ = strings.Cut(arg, "=")
- key = strings.TrimSpace(key)
- val = strings.TrimSpace(val)
- return
-}
-
-// Unquote unquotes a string.
-//
-// https://sqlite.org/lang_keywords.html
-func Unquote(val string) string {
- if len(val) < 2 {
- return val
- }
- fst := val[0]
- lst := val[len(val)-1]
- rst := val[1 : len(val)-1]
- if fst == '[' && lst == ']' {
- return rst
- }
- if fst != lst {
- return val
- }
- var old, new string
- switch fst {
- default:
- return val
- case '`':
- old, new = "``", "`"
- case '"':
- old, new = `""`, `"`
- case '\'':
- old, new = `''`, `'`
- }
- return strings.ReplaceAll(rst, old, new)
-}
-
-// ParseBool parses a boolean.
-//
-// https://sqlite.org/pragma.html#syntax
-func ParseBool(s string) (b, ok bool) {
- if len(s) == 0 {
- return false, false
- }
- if s[0] == '0' {
- return false, true
- }
- if '1' <= s[0] && s[0] <= '9' {
- return true, true
- }
- switch strings.ToLower(s) {
- case "true", "yes", "on":
- return true, true
- case "false", "no", "off":
- return false, true
- }
- return false, false
-}
diff --git a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/const.go b/vendor/github.com/ncruces/go-sqlite3/util/sql3util/const.go
deleted file mode 100644
index 10e8af35a..000000000
--- a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/const.go
+++ /dev/null
@@ -1,61 +0,0 @@
-package sql3util
-
-const (
- _NONE = iota
- _MEMORY
- _SYNTAX
- _UNSUPPORTEDSQL
-)
-
-type ConflictClause uint32
-
-const (
- CONFLICT_NONE ConflictClause = iota
- CONFLICT_ROLLBACK
- CONFLICT_ABORT
- CONFLICT_FAIL
- CONFLICT_IGNORE
- CONFLICT_REPLACE
-)
-
-type OrderClause uint32
-
-const (
- ORDER_NONE OrderClause = iota
- ORDER_ASC
- ORDER_DESC
-)
-
-type FKAction uint32
-
-const (
- FKACTION_NONE FKAction = iota
- FKACTION_SETNULL
- FKACTION_SETDEFAULT
- FKACTION_CASCADE
- FKACTION_RESTRICT
- FKACTION_NOACTION
-)
-
-type FKDefType uint32
-
-const (
- DEFTYPE_NONE FKDefType = iota
- DEFTYPE_DEFERRABLE
- DEFTYPE_DEFERRABLE_INITIALLY_DEFERRED
- DEFTYPE_DEFERRABLE_INITIALLY_IMMEDIATE
- DEFTYPE_NOTDEFERRABLE
- DEFTYPE_NOTDEFERRABLE_INITIALLY_DEFERRED
- DEFTYPE_NOTDEFERRABLE_INITIALLY_IMMEDIATE
-)
-
-type StatementType uint32
-
-const (
- CREATE_UNKNOWN StatementType = iota
- CREATE_TABLE
- ALTER_RENAME_TABLE
- ALTER_RENAME_COLUMN
- ALTER_ADD_COLUMN
- ALTER_DROP_COLUMN
-)
diff --git a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/parse.go b/vendor/github.com/ncruces/go-sqlite3/util/sql3util/parse.go
deleted file mode 100644
index 7dd76ceb1..000000000
--- a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/parse.go
+++ /dev/null
@@ -1,210 +0,0 @@
-package sql3util
-
-import (
- "context"
- _ "embed"
- "sync"
-
- "github.com/tetratelabs/wazero"
- "github.com/tetratelabs/wazero/api"
-
- "github.com/ncruces/go-sqlite3/internal/util"
-)
-
-const (
- errp = 4
- sqlp = 8
-)
-
-var (
- //go:embed wasm/sql3parse_table.wasm
- binary []byte
- once sync.Once
- runtime wazero.Runtime
- compiled wazero.CompiledModule
-)
-
-// ParseTable parses a [CREATE] or [ALTER TABLE] command.
-//
-// [CREATE]: https://sqlite.org/lang_createtable.html
-// [ALTER TABLE]: https://sqlite.org/lang_altertable.html
-func ParseTable(sql string) (_ *Table, err error) {
- once.Do(func() {
- ctx := context.Background()
- cfg := wazero.NewRuntimeConfigInterpreter()
- runtime = wazero.NewRuntimeWithConfig(ctx, cfg)
- compiled, err = runtime.CompileModule(ctx, binary)
- })
- if err != nil {
- return nil, err
- }
-
- ctx := context.Background()
- mod, err := runtime.InstantiateModule(ctx, compiled, wazero.NewModuleConfig().WithName(""))
- if err != nil {
- return nil, err
- }
- defer mod.Close(ctx)
-
- if buf, ok := mod.Memory().Read(sqlp, uint32(len(sql))); ok {
- copy(buf, sql)
- }
-
- stack := [...]util.Stk_t{sqlp, util.Stk_t(len(sql)), errp}
- err = mod.ExportedFunction("sql3parse_table").CallWithStack(ctx, stack[:])
- if err != nil {
- return nil, err
- }
-
- c, _ := mod.Memory().ReadUint32Le(errp)
- switch c {
- case _MEMORY:
- panic(util.OOMErr)
- case _SYNTAX:
- return nil, util.ErrorString("sql3parse: invalid syntax")
- case _UNSUPPORTEDSQL:
- return nil, util.ErrorString("sql3parse: unsupported SQL")
- }
-
- var tab Table
- tab.load(mod, uint32(stack[0]), sql)
- return &tab, nil
-}
-
-// Table holds metadata about a table.
-type Table struct {
- Name string
- Schema string
- Comment string
- IsTemporary bool
- IsIfNotExists bool
- IsWithoutRowID bool
- IsStrict bool
- Columns []Column
- Type StatementType
- CurrentName string
- NewName string
-}
-
-func (t *Table) load(mod api.Module, ptr uint32, sql string) {
- t.Name = loadString(mod, ptr+0, sql)
- t.Schema = loadString(mod, ptr+8, sql)
- t.Comment = loadString(mod, ptr+16, sql)
-
- t.IsTemporary = loadBool(mod, ptr+24)
- t.IsIfNotExists = loadBool(mod, ptr+25)
- t.IsWithoutRowID = loadBool(mod, ptr+26)
- t.IsStrict = loadBool(mod, ptr+27)
-
- t.Columns = loadSlice(mod, ptr+28, func(ptr uint32, ret *Column) {
- p, _ := mod.Memory().ReadUint32Le(ptr)
- ret.load(mod, p, sql)
- })
-
- t.Type = loadEnum[StatementType](mod, ptr+44)
- t.CurrentName = loadString(mod, ptr+48, sql)
- t.NewName = loadString(mod, ptr+56, sql)
-}
-
-// Column holds metadata about a column.
-type Column struct {
- Name string
- Type string
- Length string
- ConstraintName string
- Comment string
- IsPrimaryKey bool
- IsAutoIncrement bool
- IsNotNull bool
- IsUnique bool
- PKOrder OrderClause
- PKConflictClause ConflictClause
- NotNullConflictClause ConflictClause
- UniqueConflictClause ConflictClause
- CheckExpr string
- DefaultExpr string
- CollateName string
- ForeignKeyClause *ForeignKey
-}
-
-func (c *Column) load(mod api.Module, ptr uint32, sql string) {
- c.Name = loadString(mod, ptr+0, sql)
- c.Type = loadString(mod, ptr+8, sql)
- c.Length = loadString(mod, ptr+16, sql)
- c.ConstraintName = loadString(mod, ptr+24, sql)
- c.Comment = loadString(mod, ptr+32, sql)
-
- c.IsPrimaryKey = loadBool(mod, ptr+40)
- c.IsAutoIncrement = loadBool(mod, ptr+41)
- c.IsNotNull = loadBool(mod, ptr+42)
- c.IsUnique = loadBool(mod, ptr+43)
-
- c.PKOrder = loadEnum[OrderClause](mod, ptr+44)
- c.PKConflictClause = loadEnum[ConflictClause](mod, ptr+48)
- c.NotNullConflictClause = loadEnum[ConflictClause](mod, ptr+52)
- c.UniqueConflictClause = loadEnum[ConflictClause](mod, ptr+56)
-
- c.CheckExpr = loadString(mod, ptr+60, sql)
- c.DefaultExpr = loadString(mod, ptr+68, sql)
- c.CollateName = loadString(mod, ptr+76, sql)
-
- if ptr, _ := mod.Memory().ReadUint32Le(ptr + 84); ptr != 0 {
- c.ForeignKeyClause = &ForeignKey{}
- c.ForeignKeyClause.load(mod, ptr, sql)
- }
-}
-
-type ForeignKey struct {
- Table string
- Columns []string
- OnDelete FKAction
- OnUpdate FKAction
- Match string
- Deferrable FKDefType
-}
-
-func (f *ForeignKey) load(mod api.Module, ptr uint32, sql string) {
- f.Table = loadString(mod, ptr+0, sql)
-
- f.Columns = loadSlice(mod, ptr+8, func(ptr uint32, ret *string) {
- *ret = loadString(mod, ptr, sql)
- })
-
- f.OnDelete = loadEnum[FKAction](mod, ptr+16)
- f.OnUpdate = loadEnum[FKAction](mod, ptr+20)
- f.Match = loadString(mod, ptr+24, sql)
- f.Deferrable = loadEnum[FKDefType](mod, ptr+32)
-}
-
-func loadString(mod api.Module, ptr uint32, sql string) string {
- off, _ := mod.Memory().ReadUint32Le(ptr + 0)
- if off == 0 {
- return ""
- }
- len, _ := mod.Memory().ReadUint32Le(ptr + 4)
- return sql[off-sqlp : off+len-sqlp]
-}
-
-func loadSlice[T any](mod api.Module, ptr uint32, fn func(uint32, *T)) []T {
- ref, _ := mod.Memory().ReadUint32Le(ptr + 4)
- if ref == 0 {
- return nil
- }
- len, _ := mod.Memory().ReadUint32Le(ptr + 0)
- ret := make([]T, len)
- for i := range ret {
- fn(ref, &ret[i])
- ref += 4
- }
- return ret
-}
-
-func loadEnum[T ~uint32](mod api.Module, ptr uint32) T {
- val, _ := mod.Memory().ReadUint32Le(ptr)
- return T(val)
-}
-
-func loadBool(mod api.Module, ptr uint32) bool {
- val, _ := mod.Memory().ReadByte(ptr)
- return val != 0
-}
diff --git a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/sql3util.go b/vendor/github.com/ncruces/go-sqlite3/util/sql3util/sql3util.go
deleted file mode 100644
index 6be61927d..000000000
--- a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/sql3util.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// Package sql3util implements SQLite utilities.
-package sql3util
-
-// ValidPageSize returns true if s is a valid page size.
-//
-// https://sqlite.org/fileformat.html#pages
-func ValidPageSize(s int) bool {
- return 512 <= s && s <= 65536 && s&(s-1) == 0
-}
diff --git a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/wasm/sql3parse_table.wasm b/vendor/github.com/ncruces/go-sqlite3/util/sql3util/wasm/sql3parse_table.wasm
deleted file mode 100644
index 4d3357ea1..000000000
--- a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/wasm/sql3parse_table.wasm
+++ /dev/null
Binary files differ