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 the Sqlite3.Rc.t result of certain operations is unexpected.

val check_sqlite_error : ?⁠fatal:bool ‑> Sqlite3.db ‑> log:string ‑> Sqlite3.Rc.t ‑> unit

Assert that the result is either Sqlite3.Rc.OK. If row_is_ok then Sqlite3.Rc.ROW is also accepted. If the result is not valid, then if fatal is set raise Error, otherwise log the error and proceed.

val exec : Sqlite3.db ‑> log:string ‑> stmt:string ‑> unit

Execute the given Sqlite stmt and asserts that it resulted in Sqlite3.Rc.OK. Otherwise, fail similarly to check_sqlite_error ~fatal:true.

val finalize : Sqlite3.db ‑> log:string ‑> Sqlite3.stmt ‑> unit

Finalize the given stmt. Raises Error on failure.

val sqlite_result_rev_list_step : ?⁠finalize:bool ‑> Sqlite3.db ‑> log:string ‑> Sqlite3.stmt ‑> Sqlite3.Data.t option list

Return a reversed list of results obtained by repeatedly stepping through stmt and saving only column 0 of each returned row (all that's been needed so far).

val sqlite_result_step : ?⁠finalize:bool ‑> Sqlite3.db ‑> log:string ‑> Sqlite3.stmt ‑> Sqlite3.Data.t option

Same as sqlite_result_rev_list_step but asserts that at most one result is returned.

val sqlite_unit_step : ?⁠finalize:bool ‑> Sqlite3.db ‑> log:string ‑> Sqlite3.stmt ‑> unit

Same as sqlite_result_rev_list_step but asserts that no result is returned.

val db_close : Sqlite3.db ‑> unit

Close the given database and asserts that it was effective. Raises Error if not.

module type Data : sig ... end

An API commonly needed to store and retrieve objects from the database

module MarshalledData : functor (D : sig ... end) -> Data with type t = D.t

A default implementation of the Data API that encodes every objects as marshalled blobs