postgresql

Bindings to the PostgreSQL library
Module Postgresql

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

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.