Module Postgresql

Client-interface to the PostgreSQL database.

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

module Error_field : sig ... end
module Error_code : sig ... end
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 put_copy_result =
| Put_copy_queued

Data queued

| Put_copy_not_queued

Data not queued due to full bufffers (async only)

| Put_copy_error

Copying failed, see #error_message for details

Result of put_copy_data and put_copy_end

type get_copy_result =
| Get_copy_data of string

Data corresponding to one row is returned

| Get_copy_wait

The next row is still being received (async only); wait for read-only, call consume_input, and try again

| Get_copy_end

All data has been successfully retrieved

| Get_copy_error

Copying failed, see #error_message for details

Result of get_copy_data

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 n Tuple_out_of_range (i, n) - access to tuple i not within range n Binary - result consists of binary tuple data Connection_failure msg - connection failed due to reason msg Unexpected_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 string to a ftype.

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 ()

returns

array of all records of type conninfo_option

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.