This module defines the epgsql behaviour.
Required callback functions: handle_x_log_data/4.
bind_param() = null | boolean() | string() | binary() | integer() | float() | pg_date() | pg_time() | pg_datetime() | pg_interval() | {[{binary(), binary() | null}]} | [bind_param()]
cb_state() = term()
connect_error() = #error{severity = undefined | debug | log | info | notice | warning | error | fatal | panic, code = undefined | binary(), codename = undefined | atom(), message = undefined | binary(), extra = undefined | [{severity | detail | hint | position | internal_position | internal_query | where | schema_name | table_name | column_name | data_type_name | constraint_name | file | line | routine, binary()}]} | {unsupported_auth_method, atom()} | invalid_authorization_specification | invalid_password
connect_option() = {host, host()} | {username, string()} | {password, string()} | {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()} | {replication, Replication::string()}
connect_opts() = [connect_option()]
connection() = pid()
epgsql_type() = atom() | {array, atom()} | {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{name = undefined | binary(), type = undefined | epgsql_type(), size = undefined | -1 | pos_integer(), modifier = undefined | -1 | pos_integer(), format = undefined | integer()}], RowsValues::[RowType]} | {ok, Count::non_neg_integer()} | {ok, Count::non_neg_integer(), ColumnsDescription::[#column{name = undefined | binary(), type = undefined | epgsql_type(), size = undefined | -1 | pos_integer(), modifier = undefined | -1 | pos_integer(), format = undefined | integer()}], RowsValues::[RowType]}
pg_date() = {Year::-4712..294276, Month::1..12, Day::1..31}
pg_datetime() = {pg_date(), pg_time()}
pg_interval() = {pg_time(), Days::integer(), Months::integer()}
pg_time() = {Hour::0..24, Minute::0..59, Second::0..59 | float()}
query_error() = #error{severity = undefined | debug | log | info | notice | warning | error | fatal | panic, code = undefined | binary(), codename = undefined | atom(), message = undefined | binary(), extra = undefined | [{severity | detail | hint | position | internal_position | internal_query | where | schema_name | table_name | column_name | data_type_name | constraint_name | file | line | routine, binary()}]}
reply(RowType) = ok_reply(RowType) | error_reply()
sql_query() = iodata()
squery_row() = tuple()
tuple of binary().
typed_param() = {epgsql_type(), bind_param()}
| bind/3 | |
| bind/4 | |
| cancel/1 | |
| close/1 | |
| close/2 | |
| 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 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 | |
| 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 | 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{name = undefined | string(), columns = undefined | [#column{name = undefined | binary(), type = undefined | epgsql_type(), size = undefined | -1 | pos_integer(), modifier = undefined | -1 | pos_integer(), format = undefined | integer()}], types = undefined | [epgsql_type()]}, PortalName::string(), Parameters::[bind_param()]) -> ok | {error, query_error()}
cancel(C::connection()) -> ok
close(C::connection()) -> ok
close(C, Statement) -> any()
close(C, Type, Name) -> any()
connect(Settings0::connect_opts()) -> {ok, Connection::connection()} | {error, Reason::connect_error()}
connect(Host, Opts) -> any()
connect(Host, Username, Opts) -> any()
connect(Host::host(), Username::string(), Password::string(), 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 of extra options
returns {ok, Connection} otherwise {error, Reason}
connect(C::connection(), Host::host(), Username::string(), Password::string(), Opts0::connect_opts()) -> {ok, Connection::connection()} | {error, Reason::connect_error()}
describe(C, Statement) -> any()
describe(C, X2, Name) -> any()
equery(C, Sql) -> any()
equery(C, Sql, Parameters) -> any()
equery(C::connection(), Name::string(), Sql::sql_query(), Parameters::[bind_param()]) -> reply(equery_row())
execute(C, S) -> any()
execute(C, S, N) -> any()
execute(C::connection(), Statement::#statement{name = undefined | string(), columns = undefined | [#column{name = undefined | binary(), type = undefined | epgsql_type(), size = undefined | -1 | pos_integer(), modifier = undefined | -1 | pos_integer(), format = undefined | integer()}], types = undefined | [epgsql_type()]}, PortalName::string(), N::non_neg_integer()) -> Reply
execute_batch(C::connection(), Batch::[{#statement{name = undefined | string(), columns = undefined | [#column{name = undefined | binary(), type = undefined | epgsql_type(), size = undefined | -1 | pos_integer(), modifier = undefined | -1 | pos_integer(), format = undefined | integer()}], types = undefined | [epgsql_type()]}, [bind_param()]}]) -> [reply(equery_row())]
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
parse(C, Sql) -> any()
parse(C, Sql, Types) -> any()
parse(C::connection(), Name::iolist(), Sql::sql_query(), Types::[epgsql_type()]) -> {ok, #statement{name = undefined | string(), columns = undefined | [#column{name = undefined | binary(), type = undefined | epgsql_type(), size = undefined | -1 | pos_integer(), modifier = undefined | -1 | pos_integer(), format = undefined | integer()}], types = undefined | [epgsql_type()]}} | {error, query_error()}
prepared_query(C::connection(), Name::string(), Parameters::[bind_param()]) -> reply(equery_row())
set_notice_receiver(C::connection(), PidOrName::undefined | pid() | atom()) -> {ok, Previous::pid() | atom()}
squery(Connection::connection(), SqlQuery::sql_query()) -> reply(squery_row()) | [reply(squery_row())]
runs simple SqlQuery via given Connection
standby_status_update(Connection::connection(), FlushedLSN::lsn(), AppliedLSN::lsn()) -> ok | error_reply()
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::connection(), ReplicationSlot::string(), Callback, CbInitState::cb_state(), WALPosition::string(), PluginOpts::string()) -> ok | error_reply()
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'"
returns ok otherwise {error, Reason}
sync(C) -> any()
sync_on_error(C, Error) -> any()
update_type_cache(C::connection()) -> ok
update_type_cache(C::connection(), DynamicTypes::[binary()]) -> ok
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, Jun 8 2019, 19:00:33.