mirror of
https://github.com/ldmud/ldmud
synced 2026-08-12 14:26:05 -04:00
88 lines
3.5 KiB
Text
88 lines
3.5 KiB
Text
CONCEPT
|
|
pgsql - PostgreSQL support
|
|
|
|
DESCRIPTION
|
|
On hosts with the PostgreSQL package installed, the driver can be
|
|
configured to interface with the PostgreSQL database. If that is done,
|
|
the driver defines the macro __PGSQL__ for LPC programs and
|
|
activates a number of related efuns.
|
|
|
|
-- Usage --
|
|
|
|
The interface to the PostgreSQL database is implemented
|
|
through the concept of a controlling object: when opening a
|
|
database connection, the LPC code has to provide a callback
|
|
function. The object this function is bound to is the
|
|
controlling object: all queries to the database will be issued
|
|
by this object, and the responses will be sent to the callback
|
|
function.
|
|
|
|
The interface is also asynchronous: the pg_query() efun just
|
|
queues the query with the database connection, and returns
|
|
immediately. When the database has finished working the query,
|
|
the callback function is called with the results.
|
|
|
|
The callback function can be defined by name or by closure,
|
|
and can be defined with extra parameters:
|
|
|
|
|
|
#include <pgsql.h>
|
|
|
|
void <callback>(int type, mixed ret, int id [, mixed extra...])
|
|
|
|
<type> is the type of the call, <id> identifies the query
|
|
for which this call is executed:
|
|
|
|
PGRES_TUPLES_OK: <ret> is the result from a query.
|
|
It is either a mapping (field name as
|
|
key, indexing <n> values for n returned
|
|
tuples), or an array of arrays (one per
|
|
row).
|
|
|
|
PGRES_COMMAND_OK: <ret> is a string which contains the
|
|
server response (e.g. on INSERT or DELETE)
|
|
|
|
PGRES_BAD_RESPONSE,
|
|
PGRES_NONFATAL_ERROR,
|
|
PGRES_FATAL_ERROR: ret is the error-string
|
|
|
|
|
|
void <callback>(int type, mixed ret [, mixed extra...])
|
|
|
|
<type> is the type of the call, which is not related to a
|
|
specific query:
|
|
|
|
PGCONN_SUCCESS: The database-connection was established,
|
|
<ret> is a dummy string.
|
|
PGCONN_FAILED: The database-connection failed, <ret> is
|
|
the error message.
|
|
The first message to the callback after a call to
|
|
pg_connect() is always one of these two.
|
|
|
|
PGRES_NOTICE: <ret> is a informational text.
|
|
|
|
PGCONN_ABORTED: If the connection to the backend fails
|
|
we try to re-establish (reset) it. If the
|
|
reset fails, the connection is closed and
|
|
this value is returned. Consider the
|
|
connection gone and don't try to close or
|
|
otherwise operate further on it.
|
|
<ret> is a dummy string.
|
|
|
|
-- Security --
|
|
|
|
All SQL efuns (unless execute by the master or the simul-efun object)
|
|
trigger a privilege_violation ("pgsql", "<efun_name>"). If a more
|
|
finegrained control is desired, overload the individual efuns with a
|
|
nomask simul-efun.
|
|
|
|
AUTHOR
|
|
Florian Heinz and others.
|
|
|
|
HISTORY
|
|
Added as package in LDMud 3.3.445.
|
|
LDMud 3.3.640 added a privilege_violation() call for each efun.
|
|
|
|
SEE ALSO
|
|
mysql(C), sqlite(C), pg_connect(E), pg_conv_string(E), pg_query(E),
|
|
pg_pending(E), pg_close(E), privilege_violation(M)
|