package sqlite3
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=02ddd45536ea432f4cc149ca140f77de0c1a99c67741caf28afd6f092c396a69
sha512=d982094454d06dc4f070da20fb9b02a112bfe17bae8d7889a370b6d7c88a44d09746675f1f061f107a9382b21032368505c889886278be3310a0545075133e11
Description
sqlite3-ocaml is an OCaml library with bindings to the SQLite3 client API. Sqlite3 is a self-contained, serverless, zero-configuration, transactional SQL database engine with outstanding performance for many use cases.
Published: 05 Aug 2020
README
SQLite3-OCaml - SQLite3 Bindings for OCaml
What is SQLite3-OCaml?
SQLite3-OCaml is an OCaml library with bindings to the SQLite3 client API. Sqlite3 is a self-contained, serverless, zero-configuration, transactional SQL database engine with outstanding performance for many use cases.
These bindings are written in a way that enables a friendly coexistence with the old (version 2) SQLite and its OCaml wrapper ocaml-sqlite
.
Usage
The API in file src/sqlite3.mli
is fully documented. It can also be found online.
SQLite3 has its own online documentation.
Examples
The test
-directory in this distribution contains a few simple examples for testing various features of this library. The tests can be run by executing dune runtest
.
Build issues
SQLite3-OCaml depends on pkg-config
to locate and compile against an SQLite3 library.
If the SQLite3 version is greater than or equal to 3.3.7, it is assumed that it supports Run-Time Loadable Extensions. If this feature has been explicitly disabled in the library, building applications will fail with:
Undefined symbols for architecture ...:
"_sqlite3_enable_load_extension", referenced from:
_caml_sqlite3_enable_load_extension in libsqlite3_stubs.a(sqlite3_stubs.o)
(maybe you meant: _caml_sqlite3_enable_load_extension)
You can check if your library is missing loadable extensions by searching it for the string
OMIT_LOAD_EXTENSION
.If you need to change where
pkg-config
will look for the SQLite3 library, set thePKG_CONFIG_PATH
environment variable to the new directory. This can be automated by setting theSQLITE3_OCAML_BREWCHECK
environment variable. This will instruct the build to see if a brewed version of SQLite is installed and routepkg-config
appropriately.You can explicitly disable run-time loadable extensions by calling
configure
with the flag--disable-loadable-extensions
or by setting the environment variableSQLITE3_DISABLE_LOADABLE_EXTENSIONS
if linking problems persist.Due to frequent installation issues with loadable extensions on Mac OS X, the default there is to disable them. You will have to explicitly enable them on that platform.
Credits
Mikhail Fedotov wrote ocaml-sqlite for SQLite version 2. His bindings served as a reference for this wrapper, but sqlite3 is written completely from scratch since the C interface changed significantly.
Christian Szegedy wrote the initial release for SQLite version 3.
Markus Mottl rewrote Christian's bindings for Jane Street Holding, LLC to clean up a few things and to make it perform better in multi-threaded environments.
Enrico Tassi contributed support for user-defined scalar functions.
Markus W. Weissmann contributed backup functionality.
Contact Information and Contributing
Please submit bugs reports, feature requests, contributions and similar to the GitHub issue tracker.
Up-to-date information is available at: https://mmottl.github.io/sqlite3-ocaml
Dependencies (4)
-
conf-sqlite3
build
- dune-configurator
-
dune
>= "1.11"
-
ocaml
>= "4.06"
Dev Dependencies (1)
-
ppx_inline_test
with-test
Used by (27)
- benchpress
- benchpress-server
-
calculon
>= "0.8"
- caqti-driver-sqlite3
- catapult-sqlite
- compsort
- current
-
current_web
>= "0.4"
-
eliom
>= "6.0.0" & < "9.0.0"
- gensqlite
- google-drive-ocamlfuse
-
ketrew
< "3.0.0"
- lemonade-sqlite
- libres3
- links-sqlite3
- obuilder
- ocluster
-
ocsigenserver
>= "2.2.0" & < "5.0.1"
- ocsipersist-sqlite
-
omigrate
>= "0.3.0"
-
oraft
>= "0.3.0"
- patoline
- skkserv-lite
- sqlexpr
- sqlite3_utils
- sqlite3EZ
-
why3
< "0.81"
Conflicts
None