The following is normally only needed for drivers and to define new field types. Everything needed for common usage is covered in Row Types.
An extensible type describing primitive SQL types and types which can be converted to and from such types. When adding a new constructor, register the coding with
Field.define_coding if possible. Otherwise, the type will only work with drivers which handle it themselves. The shipped drivers only handle the constructors listed here.
type field +=
Primitive field types handled by the shipped drivers.
module Field : sig ... end
Facilities for extending and using primitive field types.
type _ t = private
Type descriptor for row types.
Note. The concrete representation of this type should be considered private, including pattern-matching usage; use the below functions for compatibility with future versions.
val length : 'a t -> int
length t is the number of fields used to represent
val show : 'a t -> string
show t is a human presentation of
field ft is a row of a single field of type
ft. This function can be used when adding new field types; use the below functions otherwise.
Standard type descriptors provided as a submodule for easy inclusion.
include Caqti_type_sig.Std with type 'a t := 'a t
The following provides constructors for narrow tuple types; to describe wider tuple types, use nested application.
val unit : unit t
A holding no fields. This is used to pass no parameters and as the result for queries which does not return any rows. It can also be nested in tuples, in which case it will not contribute to the total number of fields.
val custom : encode:( 'a -> ( 'b, string ) result ) -> decode:( 'b -> ( 'a, string ) result ) -> 'b t -> 'a t
custom ~encode ~decode rep creates a custom type represented by
encode is used to encode parameters into
decode is used to decode result rows from
Note. This should be considered experimental and may be revised or removed in a future version.
val bool : bool t
val int : int t
val int32 : int32 t
A 32 bit integer.
val int64 : int64 t
A 64 bit integer.
val float : float t
val string : string t
An UTF-8 string. The database should accept UTF-8 if non-ASCII characters are present.
val octets : string t
A binary string.
An absolute time with driver-dependent precision. This corresponds to an SQL
timestamp type with UTC time zone.