Module InferBase.SqliteUtils
exception
Error of string
The functions in this module tend to raise more often than their counterparts in
Sqlite3
. In particular, they may raise if theSqlite3.Rc.t
result of certain operations is unexpected.
val check_result_code : Sqlite3.db -> log:string -> Sqlite3.Rc.t -> unit
Assert that the result is either
Sqlite3.Rc.OK
orSqlite3.Rc.ROW
. If the result is not valid, then iffatal
is set raiseError
, otherwise log the error and proceed.
val exec : Sqlite3.db -> log:string -> stmt:string -> unit
Execute the given Sqlite
stmt
and check the result withcheck_result_code ~fatal:true
.
val finalize : Sqlite3.db -> log:string -> Sqlite3.stmt -> unit
Finalize the given
stmt
. RaisesError
on failure.
val result_fold_rows : ?finalize:bool -> Sqlite3.db -> log:string -> Sqlite3.stmt -> init:'a -> f:('a -> Sqlite3.stmt -> 'a) -> 'a
Fold
f
over each row of the result.f
must not access the database.
val result_fold_single_column_rows : ?finalize:bool -> Sqlite3.db -> log:string -> Sqlite3.stmt -> init:'b -> f:('b -> Sqlite3.Data.t -> 'b) -> 'b
Like
result_fold_rows
but pass column 0 of each row in the results tof
.
val result_option : ?finalize:bool -> Sqlite3.db -> log:string -> read_row:(Sqlite3.stmt -> 'a) -> Sqlite3.stmt -> 'a option
Same as
result_fold_rows
but asserts that at most one row is returned.
val result_single_column_option : ?finalize:bool -> Sqlite3.db -> log:string -> Sqlite3.stmt -> Sqlite3.Data.t option
Same as
result_fold_single_column_rows
but asserts that at most one row is returned.
val result_unit : ?finalize:bool -> Sqlite3.db -> log:string -> Sqlite3.stmt -> unit
Same as
result_fold_rows
but asserts that no row is returned.
val db_close : Sqlite3.db -> unit
Close the given database and asserts that it was effective. Raises
Error
if not.
val with_transaction : Sqlite3.db -> f:(unit -> unit) -> unit
Execute
f
within an explicit sqlite transaction.
module type Data = sig ... end
An API commonly needed to store and retrieve objects from the database
module MarshalledDataForComparison : functor (D : sig ... end) -> Data with type t = D.t
A default implementation of the Data API that encodes every objects as marshalled blobs with no sharing
module MarshalledDataNOTForComparison : functor (D : sig ... end) -> Data with type t = D.t
A default implementation of the Data API that encodes every objects as marshalled blobs
module MarshalledNullableDataNOTForComparison : functor (D : sig ... end) -> Data with type t = D.t option
A default implementation of the Data API that encodes None as a NULL SQLite value