This module defines the epgsql behaviour.
Required callback functions: handle_x_log_data/4.
bind_param() = any()
cb_state() = term()
column() = #column{name = binary(), type = epgsql:epgsql_type(), oid = integer(), size = -1 | pos_integer(), modifier = -1 | pos_integer(), format = integer()}
connect_error() = epgsql_cmd_connect:connect_error()
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_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() = pid()
epgsql_type() = type_name() | {array, type_name()} | {unknown_oid, integer()}
equery_row() = tuple()
tuple of bind_param().
error_reply() = {error, query_error()}
host() = inet:ip_address() | inet:hostname()
lsn() = integer()
ok_reply(RowType) = {ok, ColumnsDescription::[column()], RowsValues::[RowType]} | {ok, Count::non_neg_integer()} | {ok, Count::non_neg_integer(), ColumnsDescription::[column()], RowsValues::[RowType]}
password() = string() | iodata() | fun(() -> iodata())
pg_date() = epgsql_codec_datetime:pg_date()
pg_datetime() = epgsql_codec_datetime:pg_datetime()
pg_interval() = epgsql_codec_datetime:pg_interval()
pg_time() = epgsql_codec_datetime:pg_time()
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() = {align_lsn, boolean()}
Align last applied and flushed LSN with last received LSN after Primary keepalive message with ReplyRequired flag
replication_opts() = [replication_option()] | #{align_lsn => boolean()}
reply(RowType) = ok_reply(RowType) | error_reply()
sql_query() = iodata()
squery_row() = tuple()
tuple of binary().
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() = atom()
typed_param() = {epgsql_type(), bind_param()}
| bind/3 | |
| bind/4 | |
| cancel/1 | |
| close/1 | close connection. |
| close/2 | close statement. |
| close/3 | |
| connect/1 | |
| connect/2 | |
| connect/3 | |
| connect/4 | 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 | |
| describe/2 | |
| describe/3 | |
| equery/2 | |
| equery/3 | |
| equery/4 | |
| execute/2 | |
| execute/3 | |
| execute/4 | |
| execute_batch/2 | |
| get_cmd_status/1 | 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. |
| get_parameter/2 | |
| handle_x_log_data/5 | |
| parse/2 | |
| parse/3 | |
| parse/4 | |
| prepared_query/3 | |
| set_notice_receiver/2 | |
| squery/2 | runs simple SqlQuery via given Connection |
| standby_status_update/3 | sends 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/7 | 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. |
| sync/1 | |
| sync_on_error/2 | |
| update_type_cache/1 | |
| update_type_cache/2 | |
| with_transaction/2 | |
| with_transaction/3 | Execute callback function with connection in a transaction. |
bind(C, Statement, Parameters) -> any()
bind(C::connection(), Statement::statement(), PortalName::string(), Parameters::[bind_param()]) -> epgsql_cmd_bind:response()
cancel(C::connection()) -> ok
close(C::connection()) -> ok
close connection
close(C::connection(), Statement::statement()) -> epgsql_cmd_close:response()
close statement
close(C::connection(), Type::statement | portal, Name::iodata()) -> epgsql_cmd_close:response()
connect(Opts::connect_opts()) -> {ok, Connection::connection()} | {error, Reason::connect_error()}
connect(Host, Opts) -> any()
connect(Host, Username, Opts) -> any()
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(C::connection(), Host::host(), Username::string(), Password::password(), Opts::connect_opts()) -> {ok, Connection::connection()} | {error, Reason::connect_error()}
describe(C::connection(), Statement::statement()) -> epgsql_cmd_describe_statement:response()
describe(C::connection(), X2::portal, Name::iodata()) -> epgsql_cmd_describe_portal:response()
equery(C, Sql) -> any()
equery(C::connection(), Sql::sql_query(), Parameters::[bind_param()]) -> epgsql_cmd_equery:response()
equery(C::connection(), Name::string(), Sql::sql_query(), Parameters::[bind_param()]) -> epgsql_cmd_equery:response()
execute(C, S) -> any()
execute(C, S, N) -> any()
execute(C::connection(), S::statement(), PortalName::string(), N::non_neg_integer()) -> Reply
execute_batch(C::connection(), Batch::[{statement(), [bind_param()]}]) -> epgsql_cmd_batch:response()
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(C::connection(), Name::binary()) -> binary() | undefined
handle_x_log_data(Mod, StartLSN, EndLSN, WALRecord, Repl) -> any()
parse(C, Sql) -> any()
parse(C, Sql, Types) -> any()
parse(C::connection(), Name::iolist(), Sql::sql_query(), Types::[epgsql_type()]) -> epgsql_cmd_parse:response()
prepared_query(C::connection(), Name::string(), Parameters::[bind_param()]) -> epgsql_cmd_prepared_query:response()
set_notice_receiver(C::connection(), PidOrName::undefined | pid() | atom()) -> {ok, Previous::pid() | atom()}
squery(Connection::connection(), SqlQuery::sql_query()) -> epgsql_cmd_squery:response()
runs simple SqlQuery via given Connection
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(Connection, ReplicationSlot, Callback, CbInitState, WALPosition) -> any()
start_replication(Connection, ReplicationSlot, Callback, CbInitState, WALPosition, PluginOpts) -> any()
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(C::connection()) -> epgsql_cmd_sync:response()
sync_on_error(C, Error) -> any()
update_type_cache(C) -> any()
update_type_cache(C::connection(), Codecs::[{epgsql_codec:codec_mod(), Opts::any()}]) -> epgsql_cmd_update_type_cache:response() | {error, empty}
with_transaction(C::connection(), F::fun((connection()) -> Reply)) -> Reply | {rollback, any()}
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