Module Postgresql

Client-interface to the PostgreSQL database.

Please learn about more details in the database documentation!

Types
type oid = int

Object ID (= Postgresql type of an object)

type large_object

Handle for large objects

module FFormat : sig ... end

Type of field formats

type ftype =
| BOOL
| BYTEA
| CHAR
| NAME
| INT8
| INT2
| INT2VECTOR
| INT4
| REGPROC
| TEXT
| OID
| TID
| XID
| CID
| OIDVECTOR
| JSON
| POINT
| LSEG
| PATH
| BOX
| POLYGON
| LINE
| FLOAT4
| FLOAT8
| ABSTIME
| RELTIME
| TINTERVAL
| UNKNOWN
| CIRCLE
| CASH
| MACADDR
| INET
| CIDR
| ACLITEM
| BPCHAR
| VARCHAR
| DATE
| TIME
| TIMESTAMP
| TIMESTAMPTZ
| INTERVAL
| TIMETZ
| BIT
| VARBIT
| NUMERIC
| REFCURSOR
| REGPROCEDURE
| REGOPER
| REGOPERATOR
| REGCLASS
| REGTYPE
| RECORD
| CSTRING
| ANY
| ANYARRAY
| VOID
| TRIGGER
| LANGUAGE_HANDLER
| INTERNAL
| OPAQUE
| ANYELEMENT
| JSONB

Type of fields

type result_status =
| Empty_query

(** String sent to the backend was empty *)

| Command_ok

(** Successful completion of a command returning no data *)

| Tuples_ok

(** The query successfully executed *)

| Copy_out

(** Copy Out (from server) data transfer started *)

| Copy_in

(** Copy In (to server) data transfer started *)

| Bad_response

(** The server's response was not understood *)

| Nonfatal_error
| Fatal_error
| Copy_both
| Single_tuple

(** One tuple of a result set (set_single_row_mode) *)

Status of command/query results

type getline_result =
| EOF

(** End of input reached *)

| LineRead

(** Entire line has been read *)

| BufFull

(** Buffer full but terminating newline not encountered *)

Result of getline

type getline_async_result =
| EndOfData

(** End-of-copy-data marker recognized *)

| NoData

(** No data available *)

| DataRead of int

(** DataRead n indicates n bytes of read data *)

| PartDataRead of int

(** Like DataRead, but data only partially read *)

Result of getline_async

type seek_cmd =
| SEEK_SET

(** Seek from start of large object *)

| SEEK_CUR

(** Seek from current read/write position of large object *)

| SEEK_END

(** Seek from end of large object *)

Seek command ("whence")

Exceptions and error handling
type error =
| Field_out_of_range of int * int
| Tuple_out_of_range of int * int
| Binary
| Connection_failure of string
| Unexpected_status of result_status * string * result_status list
| Cancel_failure of string

Kinds of exceptions:

Field_out_of_range (i, n) - access to field i not within range nTuple_out_of_range (i, n) - access to tuple i not within range nBinary - result consists of binary tuple data Connection_failure msg - connection failed due to reason msgUnexpected_status (stat, msg, expected) - result status stat was not in expected due to error msg

exception Error of error

Error error indicates an error

val string_of_error : error ‑> string

string_of_error error convert error to a human-readable message

exception Oid of oid

Oid oid conversion from an oid to an ftype encountered an unknown oid

Utility functions
val unescape_bytea : string ‑> string

unescape_bytea str unescapes binary string str. This function supports the new hex format for encoding bytea strings (introduced in Postgresql 9.0) even if the local libpq library is from an older version.

val ftype_of_oid : oid ‑> ftype

ftype_of_oid oid converts oid to an ftype.

val oid_of_ftype : ftype ‑> oid

oid_of_ftype ftype converts ftype to an oid.

val string_of_ftype : ftype ‑> string

string_of_ftype ftype converts ftype to a string.

val ftype_of_string : string ‑> ftype

string_of_ftype ftype converts ftype to a string.

Handling results of commands and queries
val result_status : result_status ‑> string

result_status stat convert status stat to a human-readable message

val invalid_oid : oid

invalid_oid invalid Oid.

Query parameters
val null : string

null can be used as an element of the optional argument parameters passed to the exec or send_query method to indicate a NULL value.

class type result = object ... end

Class type of query results.

Handling database connections
type connection_status =
| Ok
| Bad
| Connection_started
| Connection_made
| Connection_awaiting_response
| Connection_auth_ok
| Connection_setenv
| Connection_ssl_startup

Status of a connection

type polling_status =
| Polling_failed
| Polling_reading
| Polling_writing
| Polling_ok

Polling status used while establishing a connection asynchronously.

type flush_status =
| Successful
| Data_left_to_send

Result of a call to flush on nonblocking connections.

type conninfo_option = {
cio_keyword : string;

(** Keyword of option *)

cio_envvar : string option;

(** Fallback environment variable name *)

cio_compiled : string option;

(** Fallback compiled in default value *)

cio_val : string option;

(** Current value of option, or NULL *)

cio_label : string;

(** Label for field in connect dialog *)

cio_dispchar : string;

(** Character to display for this field in dialog *)

cio_dispsize : int;

(** Field size in characters for dialog *)

}

Record of connection options

module Notification : sig ... end

Type of asynchronous notifications

val conndefaults : unit ‑> conninfo_option array

conndefaults ()

class connection : ?⁠host:string ‑> ?⁠hostaddr:string ‑> ?⁠port:string ‑> ?⁠dbname:string ‑> ?⁠user:string ‑> ?⁠password:string ‑> ?⁠options:string ‑> ?⁠tty:string ‑> ?⁠requiressl:string ‑> ?⁠conninfo:string ‑> ?⁠startonly:bool ‑> unit ‑> object ... end

Class of connections.