Module epgsql

This module defines the epgsql behaviour.
Required callback functions: handle_x_log_data/4.

Data Types

bind_param()

bind_param() = any()

cb_state()

cb_state() = term()

column()

column() = #column{name = binary(), type = epgsql:epgsql_type(), oid = integer(), size = -1 | pos_integer(), modifier = -1 | pos_integer(), format = integer()}

connect_error()

connect_error() = epgsql_cmd_connect:connect_error()

connect_option()

connect_option() = {host, host()} | {username, string()} | {password, password()} | {database, DBName::string()} | {port, PortNum::inet:port_number()} | {ssl, IsEnabled::boolean() | required} | {ssl_opts, SslOptions::[ssl:ssl_option()]} | {timeout, TimeoutMs::timeout()} | {async, Receiver::pid() | atom()} | {codecs, Codecs::[{epgsql_codec:codec_mod(), any()}]} | {replication, Replication::string()}

connect_opts()

connect_opts() = [connect_option()] | #{host => host(), username => string(), password => password(), database => string(), port => inet:port_number(), ssl => boolean() | required, ssl_opts => [ssl:ssl_option()], timeout => timeout(), async => pid() | atom(), codecs => [{epgsql_codec:codec_mod(), any()}], replication => string()}

connection()

connection() = pid()

epgsql_type()

epgsql_type() = type_name() | {array, type_name()} | {unknown_oid, integer()}

equery_row()

equery_row() = tuple()

tuple of bind_param().

error_reply()

error_reply() = {error, query_error()}

host()

host() = inet:ip_address() | inet:hostname()

lsn()

lsn() = integer()

ok_reply()

ok_reply(RowType) = {ok, ColumnsDescription::[column()], RowsValues::[RowType]} | {ok, Count::non_neg_integer()} | {ok, Count::non_neg_integer(), ColumnsDescription::[column()], RowsValues::[RowType]}

password()

password() = string() | iodata() | fun(() -> iodata())

pg_date()

pg_date() = epgsql_codec_datetime:pg_date()

pg_datetime()

pg_datetime() = epgsql_codec_datetime:pg_datetime()

pg_interval()

pg_interval() = epgsql_codec_datetime:pg_interval()

pg_time()

pg_time() = epgsql_codec_datetime:pg_time()

query_error()

query_error() = #error{severity = debug | log | info | notice | warning | error | fatal | panic, code = binary(), codename = atom(), message = binary(), extra = [{severity | detail | hint | position | internal_position | internal_query | where | schema_name | table_name | column_name | data_type_name | constraint_name | file | line | routine, binary()}]}

replication_option()

replication_option() = {align_lsn, boolean()}

Align last applied and flushed LSN with last received LSN after Primary keepalive message with ReplyRequired flag

replication_opts()

replication_opts() = [replication_option()] | #{align_lsn => boolean()}

reply()

reply(RowType) = ok_reply(RowType) | error_reply()

sql_query()

sql_query() = iodata()

squery_row()

squery_row() = tuple()

tuple of binary().

statement()

statement() = #statement{name = string(), columns = [#column{name = binary(), type = epgsql:epgsql_type(), oid = integer(), size = -1 | pos_integer(), modifier = -1 | pos_integer(), format = integer()}], types = [epgsql:epgsql_type()], parameter_info = [epgsql_oid_db:oid_entry()]}

type_name()

type_name() = atom()

typed_param()

typed_param() = {epgsql_type(), bind_param()}

Function Index

bind/3
bind/4
cancel/1
close/1close connection.
close/2close statement.
close/3
connect/1
connect/2
connect/3
connect/4connects to Postgres where Host - host to connect to Username - username to connect as, defaults to $USER Password - optional password to authenticate with Opts - proplist or map of extra options returns {ok, Connection} otherwise {error, Reason}
connect/5
describe/2
describe/3
equery/2
equery/3
equery/4
execute/2
execute/3
execute/4
execute_batch/2
get_cmd_status/1Returns last command status message If multiple queries were executed using squery/2, separated by semicolon, only the last query's status will be available.
get_parameter/2
handle_x_log_data/5
parse/2
parse/3
parse/4
prepared_query/3
set_notice_receiver/2
squery/2runs simple SqlQuery via given Connection
standby_status_update/3sends last flushed and applied WAL positions to the server in a standby status update message via given Connection
start_replication/5
start_replication/6
start_replication/7instructs Postgres server to start streaming WAL for logical replication where Connection - connection in replication mode ReplicationSlot - the name of the replication slot to stream changes from Callback - Callback module which should have the callback functions implemented for message processing.
sync/1
sync_on_error/2
update_type_cache/1
update_type_cache/2
with_transaction/2
with_transaction/3Execute callback function with connection in a transaction.

Function Details

bind/3

bind(C, Statement, Parameters) -> any()

bind/4

bind(C::connection(), Statement::statement(), PortalName::string(), Parameters::[bind_param()]) -> epgsql_cmd_bind:response()

cancel/1

cancel(C::connection()) -> ok

close/1

close(C::connection()) -> ok

close connection

close/2

close(C::connection(), Statement::statement()) -> epgsql_cmd_close:response()

close statement

close/3

close(C::connection(), Type::statement | portal, Name::iodata()) -> epgsql_cmd_close:response()

connect/1

connect(Opts::connect_opts()) -> {ok, Connection::connection()} | {error, Reason::connect_error()}

connect/2

connect(Host, Opts) -> any()

connect/3

connect(Host, Username, Opts) -> any()

connect/4

connect(Host::host(), Username::string(), Password::password(), Opts::connect_opts()) -> {ok, Connection::connection()} | {error, Reason::connect_error()}

connects to Postgres where Host - host to connect to Username - username to connect as, defaults to $USER Password - optional password to authenticate with Opts - proplist or map of extra options returns {ok, Connection} otherwise {error, Reason}

connect/5

connect(C::connection(), Host::host(), Username::string(), Password::password(), Opts::connect_opts()) -> {ok, Connection::connection()} | {error, Reason::connect_error()}

describe/2

describe(C::connection(), Statement::statement()) -> epgsql_cmd_describe_statement:response()

describe/3

describe(C::connection(), X2::portal, Name::iodata()) -> epgsql_cmd_describe_portal:response()

equery/2

equery(C, Sql) -> any()

equery/3

equery(C::connection(), Sql::sql_query(), Parameters::[bind_param()]) -> epgsql_cmd_equery:response()

equery/4

equery(C::connection(), Name::string(), Sql::sql_query(), Parameters::[bind_param()]) -> epgsql_cmd_equery:response()

execute/2

execute(C, S) -> any()

execute/3

execute(C, S, N) -> any()

execute/4

execute(C::connection(), S::statement(), PortalName::string(), N::non_neg_integer()) -> Reply

execute_batch/2

execute_batch(C::connection(), Batch::[{statement(), [bind_param()]}]) -> epgsql_cmd_batch:response()

get_cmd_status/1

get_cmd_status(C::connection()) -> {ok, Status}

Returns last command status message If multiple queries were executed using squery/2, separated by semicolon, only the last query's status will be available. See https://www.postgresql.org/docs/current/static/libpq-exec.html#LIBPQ-PQCMDSTATUS

get_parameter/2

get_parameter(C::connection(), Name::binary()) -> binary() | undefined

handle_x_log_data/5

handle_x_log_data(Mod, StartLSN, EndLSN, WALRecord, Repl) -> any()

parse/2

parse(C, Sql) -> any()

parse/3

parse(C, Sql, Types) -> any()

parse/4

parse(C::connection(), Name::iolist(), Sql::sql_query(), Types::[epgsql_type()]) -> epgsql_cmd_parse:response()

prepared_query/3

prepared_query(C::connection(), Name::string(), Parameters::[bind_param()]) -> epgsql_cmd_prepared_query:response()

set_notice_receiver/2

set_notice_receiver(C::connection(), PidOrName::undefined | pid() | atom()) -> {ok, Previous::pid() | atom()}

squery/2

squery(Connection::connection(), SqlQuery::sql_query()) -> epgsql_cmd_squery:response()

runs simple SqlQuery via given Connection

standby_status_update/3

standby_status_update(Connection::connection(), FlushedLSN::lsn(), AppliedLSN::lsn()) -> ok

sends last flushed and applied WAL positions to the server in a standby status update message via given Connection

start_replication/5

start_replication(Connection, ReplicationSlot, Callback, CbInitState, WALPosition) -> any()

start_replication/6

start_replication(Connection, ReplicationSlot, Callback, CbInitState, WALPosition, PluginOpts) -> any()

start_replication/7

start_replication(Connection::connection(), ReplicationSlot::string(), Callback, CbInitState::cb_state(), WALPosition::string(), PluginOpts::string(), Opts::replication_opts()) -> Response

instructs Postgres server to start streaming WAL for logical replication where Connection - connection in replication mode ReplicationSlot - the name of the replication slot to stream changes from Callback - Callback module which should have the callback functions implemented for message processing. or a process which should be able to receive replication messages. CbInitState - Callback Module's initial state WALPosition - the WAL position XXX/XXX to begin streaming at. "0/0" to let the server determine the start point. PluginOpts - optional options passed to the slot's logical decoding plugin. For example: "option_name1 'value1', option_name2 'value2'" Opts - options of logical replication returns ok otherwise {error, Reason}

sync/1

sync(C::connection()) -> epgsql_cmd_sync:response()

sync_on_error/2

sync_on_error(C, Error) -> any()

update_type_cache/1

update_type_cache(C) -> any()

update_type_cache/2

update_type_cache(C::connection(), Codecs::[{epgsql_codec:codec_mod(), Opts::any()}]) -> epgsql_cmd_update_type_cache:response() | {error, empty}

with_transaction/2

with_transaction(C::connection(), F::fun((connection()) -> Reply)) -> Reply | {rollback, any()}

with_transaction/3

with_transaction(C::connection(), F::fun((connection()) -> Reply), Opts) -> Reply | {rollback, any()} | no_return()

Execute callback function with connection in a transaction. Transaction will be rolled back in case of exception. Options (proplist or map): - reraise (true): when set to true, exception will be re-thrown, otherwise {rollback, ErrorReason} will be returned - ensure_comitted (false): even when callback returns without exception, check that transaction was comitted by checking CommandComplete status of "COMMIT" command. In case when transaction was rolled back, status will be "rollback" instead of "commit". - begin_opts (""): append extra options to "BEGIN" command (see https://www.postgresql.org/docs/current/static/sql-begin.html) Beware of SQL injections! No escaping is made on begin_opts!


Generated by EDoc