Golang library to build sqlite extensions :rocket:
179
stars
85
commits
Go
primary language
Feb 4, 2025
updated
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 (experimental)
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.
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
commit / rollback hookscollationscalar, aggregate and window functionsvirtual table does not support xShadowName and nested transations yetEach of the support feature provides an exported interface that the user code must implement. Refer to code and godoc for more details.
MIT License Copyright (c) 2020 Riyaz Ali
Refer to LICENSE for full text.
Go
83.2%
C
16.1%
Golang library to build sqlite extensions :rocket:
179
stars
85
commits
Go
primary language
Feb 4, 2025
updated
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 (experimental)
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.
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
commit / rollback hookscollationscalar, aggregate and window functionsvirtual table does not support xShadowName and nested transations yetEach of the support feature provides an exported interface that the user code must implement. Refer to code and godoc for more details.
MIT License Copyright (c) 2020 Riyaz Ali
Refer to LICENSE for full text.
Go
83.2%
C
16.1%