Awesome
SQLite Extensions
Overview
sqlite
package provides a low-level interface that allows you to build sqlite
extensions that can be loaded dynamically at runtime
or linked statically at build-time <sup>(experimental)</sup>
Installation
This package can be installed with go get
as:
$ go get -u go.riyazali.net/sqlite
sqlite
is a cgo
package and requires a working c
compiler.
Usage
To build an sqlite
extension, you need to build your project with -buildmode=c-shared
. That would emit
a .so
file (or .dll
on windows), which you can then load into sqlite
.
Consider as an example, the sample upper
module in _examples/
. To build it, you'd use something similar to:
$ go build -buildmode=c-shared -o upper.so _examples/upper
which would emit an upper.so
in the current directory. Now, to use it with (say) the sqlite3
shell, you could do something like
$ sqlite3
> .load upper.so
> SELECT upper("sqlite3");
SQLITE3
> .exit
Features
-
commit
/rollback
hooks - custom
collation
- custom
scalar
,aggregate
andwindow
functions - custom
virtual table
<sup>does not supportxShadowName
and nested transations yet</sup>
Each of the support feature provides an exported interface that the user code must implement. Refer to code and godoc for more details.
License
MIT License Copyright (c) 2020 Riyaz Ali
Refer to LICENSE for full text.