package sqlite3
import "zgo.at/zdb/drivers/go-sqlite3"
Package sqlite3 provides a zdb driver for SQLite.
This uses https://github.com/mattn/go-sqlite3/
Several connection parameters are set to different defaults in SQLite:
_journal_mode=wal Almost always faster with better concurrency,
with little drawbacks for most use cases.
https://www.sqlite.org/wal.html
_foreign_keys=on Check FK constraints; by default they're not
enforced, which is probably not what you want.
_busy_timeout=200 Wait 200ms for locks instead of immediately
throwing an error.
_defer_foreign_keys=on Delay FK checks until the transaction commit; by
default they're checked immediately (if
enabled).
_case_sensitive_like=on LIKE is case-sensitive, like PostgreSQL.
_cache_size=-20000 20M cache size, instead of 2M. Can be a
significant performance improvement.
You can still use "?_journal_mode=something_else" in the connection string to set something different.
To use a ConnectHook, you can DefaultHook() to automatically set the given connection hook on every new connection. Alternatively, you can register it first using the regular method:
sql.Register("sqlite3-hook1", &sqlite3.SQLiteDriver{
ConnectHook: func(c *sqlite3.SQLiteConn) error {
return c.RegisterFunc("hook1", func() string { return "hook1" }, true)
},
})
And then call zdb.Connect() with "sqlite3-hook1" as the driver name. Note the driver name *must* start with "sqlite3".
Index ¶
Functions ¶
func DefaultHook ¶
func DefaultHook(f func(*sqlite3.SQLiteConn) error)
DefaultHook sets the default SQLite connection hook to use on every connection if no specific hook was specified.
Note that connections made before this are not modified.
Source Files ¶
sqlite3.go sqlite3_cgo.go
- Version
- v0.0.0-20250411114835-98f201430043 (latest)
- Published
- Apr 11, 2025
- Platform
- linux/amd64
- Imports
- 12 packages
- Last checked
- 11 months ago –
Tools for package owners.