|
@@ -0,0 +1,495 @@
|
|
|
+{ This unit contains the definitions for structures and externs for
|
|
|
+ functions used by frontend postgres applications. It is based on
|
|
|
+ Postgresql's libpq-fe.h.
|
|
|
+
|
|
|
+ It is for postgreSQL version 7.4 and higher with support for the v3.0
|
|
|
+ connection-protocol
|
|
|
+}
|
|
|
+unit postgres3;
|
|
|
+
|
|
|
+interface
|
|
|
+
|
|
|
+uses dllist;
|
|
|
+
|
|
|
+{$PACKRECORDS C}
|
|
|
+
|
|
|
+const
|
|
|
+ External_library='pq';
|
|
|
+
|
|
|
+Type
|
|
|
+ PLongint = ^Longint;
|
|
|
+ PSmallInt = ^SmallInt;
|
|
|
+ PByte = ^Byte;
|
|
|
+ PWord = ^Word;
|
|
|
+ PDWord = ^DWord;
|
|
|
+ PDouble = ^Double;
|
|
|
+ size_t = sizeint;
|
|
|
+ psize_t = ^size_t;
|
|
|
+ TFILE = Longint;
|
|
|
+ PFIle = ^TFILE;
|
|
|
+ POid = ^Oid;
|
|
|
+ Oid = dword;
|
|
|
+
|
|
|
+const
|
|
|
+ ERROR_MSG_LENGTH = 4096;
|
|
|
+ CMDSTATUS_LEN = 40;
|
|
|
+
|
|
|
+Type
|
|
|
+ TSockAddr = Array [1..112] of byte;
|
|
|
+ TPGresAttDesc = record
|
|
|
+ name : Pchar;
|
|
|
+ adtid : Oid;
|
|
|
+ adtsize : integer;
|
|
|
+ end;
|
|
|
+ PPGresAttDesc= ^TPGresAttDesc;
|
|
|
+ PPPGresAttDesc= ^PPGresAttDesc;
|
|
|
+ TPGresAttValue = record
|
|
|
+ len : longint;
|
|
|
+ value : Pchar;
|
|
|
+ end;
|
|
|
+ PPGresAttValue= ^TPGresAttValue;
|
|
|
+ PPPGresAttValue= ^PPGresAttValue;
|
|
|
+
|
|
|
+ PExecStatusType = ^TExecStatusType;
|
|
|
+ TExecStatusType = (PGRES_EMPTY_QUERY := 0,PGRES_COMMAND_OK,
|
|
|
+ PGRES_TUPLES_OK,PGRES_COPY_OUT,PGRES_COPY_IN,
|
|
|
+ PGRES_BAD_RESPONSE,PGRES_NONFATAL_ERROR,
|
|
|
+ PGRES_FATAL_ERROR);
|
|
|
+
|
|
|
+
|
|
|
+ TPGlobjfuncs = record
|
|
|
+ fn_lo_open : Oid;
|
|
|
+ fn_lo_close : Oid;
|
|
|
+ fn_lo_creat : Oid;
|
|
|
+ fn_lo_unlink : Oid;
|
|
|
+ fn_lo_lseek : Oid;
|
|
|
+ fn_lo_tell : Oid;
|
|
|
+ fn_lo_read : Oid;
|
|
|
+ fn_lo_write : Oid;
|
|
|
+ end;
|
|
|
+ PPGlobjfuncs= ^TPGlobjfuncs;
|
|
|
+
|
|
|
+ PConnStatusType = ^TConnStatusType;
|
|
|
+ TConnStatusType = (CONNECTION_OK,CONNECTION_BAD,CONNECTION_STARTED,
|
|
|
+ CONNECTION_MADE,CONNECTION_AWAITING_RESPONSE,
|
|
|
+ CONNECTION_AUTH_OK,CONNECTION_SETENV,
|
|
|
+ CONNECTION_SSL_STARTUP,CONNECTION_NEEDED);
|
|
|
+
|
|
|
+ TPGconn = record
|
|
|
+ pghost : Pchar;
|
|
|
+ pgtty : Pchar;
|
|
|
+ pgport : Pchar;
|
|
|
+ pgoptions : Pchar;
|
|
|
+ dbName : Pchar;
|
|
|
+ status : TConnStatusType;
|
|
|
+ errorMessage : array[0..(ERROR_MSG_LENGTH)-1] of char;
|
|
|
+ Pfin : PFILE;
|
|
|
+ Pfout : PFILE;
|
|
|
+ Pfdebug : PFILE;
|
|
|
+ sock : longint;
|
|
|
+ laddr : TSockAddr;
|
|
|
+ raddr : TSockAddr;
|
|
|
+ salt : array[0..(2)-1] of char;
|
|
|
+ asyncNotifyWaiting : longint;
|
|
|
+ notifyList : PDllist;
|
|
|
+ pguser : Pchar;
|
|
|
+ pgpass : Pchar;
|
|
|
+ lobjfuncs : PPGlobjfuncs;
|
|
|
+ end;
|
|
|
+ PPGconn= ^TPGconn;
|
|
|
+
|
|
|
+ TPGresult = record
|
|
|
+ ntups : longint;
|
|
|
+ numAttributes : longint;
|
|
|
+ attDescs : PPGresAttDesc;
|
|
|
+ tuples : PPPGresAttValue;
|
|
|
+ tupArrSize : longint;
|
|
|
+ resultStatus : TExecStatusType;
|
|
|
+ cmdStatus : array[0..(CMDSTATUS_LEN)-1] of char;
|
|
|
+ binary : longint;
|
|
|
+ conn : PPGconn;
|
|
|
+ end;
|
|
|
+ PPGresult= ^TPGresult;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ PPostgresPollingStatusType = ^PostgresPollingStatusType;
|
|
|
+ PostgresPollingStatusType = (PGRES_POLLING_FAILED := 0,PGRES_POLLING_READING,
|
|
|
+ PGRES_POLLING_WRITING,PGRES_POLLING_OK,
|
|
|
+ PGRES_POLLING_ACTIVE);
|
|
|
+
|
|
|
+
|
|
|
+ PPGTransactionStatusType = ^PGTransactionStatusType;
|
|
|
+ PGTransactionStatusType = (PQTRANS_IDLE,PQTRANS_ACTIVE,PQTRANS_INTRANS,
|
|
|
+ PQTRANS_INERROR,PQTRANS_UNKNOWN);
|
|
|
+
|
|
|
+ PPGVerbosity = ^PGVerbosity;
|
|
|
+ PGVerbosity = (PQERRORS_TERSE,PQERRORS_DEFAULT,PQERRORS_VERBOSE);
|
|
|
+
|
|
|
+ PpgNotify = ^pgNotify;
|
|
|
+ pgNotify = record
|
|
|
+ relname : Pchar;
|
|
|
+ be_pid : longint;
|
|
|
+ extra : Pchar;
|
|
|
+ end;
|
|
|
+
|
|
|
+{ Function types for notice-handling callbacks }
|
|
|
+ PQnoticeReceiver = procedure (arg:pointer; res:PPGresult);cdecl;
|
|
|
+ PQnoticeProcessor = procedure (arg:pointer; message:Pchar);cdecl;
|
|
|
+{ Print options for PQprint() }
|
|
|
+ Ppqbool = ^pqbool;
|
|
|
+ pqbool = char;
|
|
|
+
|
|
|
+ P_PQprintOpt = ^_PQprintOpt;
|
|
|
+ _PQprintOpt = record
|
|
|
+ header : pqbool;
|
|
|
+ align : pqbool;
|
|
|
+ standard : pqbool;
|
|
|
+ html3 : pqbool;
|
|
|
+ expanded : pqbool;
|
|
|
+ pager : pqbool;
|
|
|
+ fieldSep : Pchar;
|
|
|
+ tableOpt : Pchar;
|
|
|
+ caption : Pchar;
|
|
|
+ fieldName : ^Pchar;
|
|
|
+ end;
|
|
|
+ PQprintOpt = _PQprintOpt;
|
|
|
+ PPQprintOpt = ^PQprintOpt;
|
|
|
+
|
|
|
+ { ----------------
|
|
|
+ * Structure for the conninfo parameter definitions returned by PQconndefaults
|
|
|
+ *
|
|
|
+ * All fields except "val" point at static strings which must not be altered.
|
|
|
+ * "val" is either NULL or a malloc'd current-value string. PQconninfoFree()
|
|
|
+ * will release both the val strings and the PQconninfoOption array itself.
|
|
|
+ * ----------------
|
|
|
+ }
|
|
|
+
|
|
|
+ P_PQconninfoOption = ^_PQconninfoOption;
|
|
|
+ _PQconninfoOption = record
|
|
|
+ keyword : Pchar;
|
|
|
+ envvar : Pchar;
|
|
|
+ compiled : Pchar;
|
|
|
+ val : Pchar;
|
|
|
+ _label : Pchar;
|
|
|
+ dispchar : Pchar;
|
|
|
+ dispsize : longint;
|
|
|
+ end;
|
|
|
+ PQconninfoOption = _PQconninfoOption;
|
|
|
+ PPQconninfoOption = ^PQconninfoOption;
|
|
|
+ { ----------------
|
|
|
+ * PQArgBlock -- structure for PQfn() arguments
|
|
|
+ * ----------------
|
|
|
+ }
|
|
|
+ { can't use void (dec compiler barfs) }
|
|
|
+
|
|
|
+ PPQArgBlock = ^PQArgBlock;
|
|
|
+ PQArgBlock = record
|
|
|
+ len : longint;
|
|
|
+ isint : longint;
|
|
|
+ u : record
|
|
|
+ case longint of
|
|
|
+ 0 : ( ptr : Plongint );
|
|
|
+ 1 : ( integer : longint );
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+ { ----------------
|
|
|
+ * Exported functions of libpq
|
|
|
+ * ----------------
|
|
|
+ }
|
|
|
+ { === in fe-connect.c === }
|
|
|
+ { make a new client connection to the backend }
|
|
|
+ { Asynchronous (non-blocking) }
|
|
|
+(* Const before type ignored *)
|
|
|
+
|
|
|
+ function PQconnectStart(conninfo:Pchar):PPGconn;cdecl;external External_library name 'PQconnectStart';
|
|
|
+
|
|
|
+ function PQconnectPoll(conn:PPGconn):PostgresPollingStatusType;cdecl;external External_library name 'PQconnectPoll';
|
|
|
+
|
|
|
+ { Synchronous (blocking) }
|
|
|
+(* Const before type ignored *)
|
|
|
+ function PQconnectdb(conninfo:Pchar):PPGconn;cdecl;external External_library name 'PQconnectdb';
|
|
|
+
|
|
|
+ function PQsetdbLogin(pghost:Pchar; pgport:Pchar; pgoptions:Pchar; pgtty:Pchar; dbName:Pchar;
|
|
|
+ login:Pchar; pwd:Pchar):PPGconn;cdecl;external External_library name 'PQsetdbLogin';
|
|
|
+
|
|
|
+ { was #define dname(params) para_def_expr }
|
|
|
+ { argument types are unknown }
|
|
|
+ { return type might be wrong }
|
|
|
+ function PQsetdb(M_PGHOST,M_PGPORT,M_PGOPT,M_PGTTY,M_DBNAME : pchar) : ppgconn;
|
|
|
+
|
|
|
+ { close the current connection and free the PGconn data structure }
|
|
|
+ procedure PQfinish(conn:PPGconn);cdecl;external External_library name 'PQfinish';
|
|
|
+
|
|
|
+ { get info about connection options known to PQconnectdb }
|
|
|
+ function PQconndefaults:PPQconninfoOption;cdecl;external External_library name 'PQconndefaults';
|
|
|
+
|
|
|
+ { free the data structure returned by PQconndefaults() }
|
|
|
+ procedure PQconninfoFree(connOptions:PPQconninfoOption);cdecl;external External_library name 'PQconninfoFree';
|
|
|
+
|
|
|
+ {
|
|
|
+ * close the current connection and restablish a new one with the same
|
|
|
+ * parameters
|
|
|
+ }
|
|
|
+ { Asynchronous (non-blocking) }
|
|
|
+ function PQresetStart(conn:PPGconn):longint;cdecl;external External_library name 'PQresetStart';
|
|
|
+
|
|
|
+ function PQresetPoll(conn:PPGconn):PostgresPollingStatusType;cdecl;external External_library name 'PQresetPoll';
|
|
|
+
|
|
|
+ { Synchronous (blocking) }
|
|
|
+ procedure PQreset(conn:PPGconn);cdecl;external External_library name 'PQreset';
|
|
|
+
|
|
|
+ { issue a cancel request }
|
|
|
+ function PQrequestCancel(conn:PPGconn):longint;cdecl;external External_library name 'PQrequestCancel';
|
|
|
+
|
|
|
+ { Accessor functions for PGconn objects }
|
|
|
+ function PQdb(conn:PPGconn):Pchar;cdecl;external External_library name 'PQdb';
|
|
|
+
|
|
|
+ function PQuser(conn:PPGconn):Pchar;cdecl;external External_library name 'PQuser';
|
|
|
+
|
|
|
+ function PQpass(conn:PPGconn):Pchar;cdecl;external External_library name 'PQpass';
|
|
|
+
|
|
|
+ function PQhost(conn:PPGconn):Pchar;cdecl;external External_library name 'PQhost';
|
|
|
+
|
|
|
+ function PQport(conn:PPGconn):Pchar;cdecl;external External_library name 'PQport';
|
|
|
+
|
|
|
+ function PQtty(conn:PPGconn):Pchar;cdecl;external External_library name 'PQtty';
|
|
|
+
|
|
|
+ function PQoptions(conn:PPGconn):Pchar;cdecl;external External_library name 'PQoptions';
|
|
|
+
|
|
|
+ function PQstatus(conn:PPGconn):TConnStatusType;cdecl;external External_library name 'PQstatus';
|
|
|
+
|
|
|
+ function PQtransactionStatus(conn:PPGconn):PGTransactionStatusType;cdecl;external External_library name 'PQtransactionStatus';
|
|
|
+
|
|
|
+ function PQparameterStatus(conn:PPGconn; paramName:Pchar):Pchar;cdecl;external External_library name 'PQparameterStatus';
|
|
|
+
|
|
|
+ function PQprotocolVersion(conn:PPGconn):longint;cdecl;external External_library name 'PQprotocolVersion';
|
|
|
+
|
|
|
+ function PQerrorMessage(conn:PPGconn):Pchar;cdecl;external External_library name 'PQerrorMessage';
|
|
|
+
|
|
|
+ function PQsocket(conn:PPGconn):longint;cdecl;external External_library name 'PQsocket';
|
|
|
+
|
|
|
+ function PQbackendPID(conn:PPGconn):longint;cdecl;external External_library name 'PQbackendPID';
|
|
|
+
|
|
|
+ function PQclientEncoding(conn:PPGconn):longint;cdecl;external External_library name 'PQclientEncoding';
|
|
|
+
|
|
|
+ function PQsetClientEncoding(conn:PPGconn; encoding:Pchar):longint;cdecl;external External_library name 'PQsetClientEncoding';
|
|
|
+
|
|
|
+{$ifdef USE_SSL}
|
|
|
+ { Get the SSL structure associated with a connection }
|
|
|
+ function PQgetssl(conn:PPGconn):PSSL;cdecl;external External_library name 'PQgetssl';
|
|
|
+{$endif}
|
|
|
+
|
|
|
+ { Set verbosity for PQerrorMessage and PQresultErrorMessage }
|
|
|
+ function PQsetErrorVerbosity(conn:PPGconn; verbosity:PGVerbosity):PGVerbosity;cdecl;external External_library name 'PQsetErrorVerbosity';
|
|
|
+ { Enable/disable tracing }
|
|
|
+ procedure PQtrace(conn:PPGconn; debug_port:PFILE);cdecl;external External_library name 'PQtrace';
|
|
|
+ procedure PQuntrace(conn:PPGconn);cdecl;external External_library name 'PQuntrace';
|
|
|
+ { Override default notice handling routines }
|
|
|
+ function PQsetNoticeReceiver(conn:PPGconn; proc:PQnoticeReceiver; arg:pointer):PQnoticeReceiver;cdecl;external External_library name 'PQsetNoticeReceiver';
|
|
|
+ function PQsetNoticeProcessor(conn:PPGconn; proc:PQnoticeProcessor; arg:pointer):PQnoticeProcessor;cdecl;external External_library name 'PQsetNoticeProcessor';
|
|
|
+
|
|
|
+ { === in fe-exec.c === }
|
|
|
+ { Simple synchronous query }
|
|
|
+ function PQexec(conn:PPGconn; query:Pchar):PPGresult;cdecl;external External_library name 'PQexec';
|
|
|
+ function PQexecParams(conn:PPGconn; command:Pchar; nParams:longint; paramTypes:POid; paramValues:PPchar;
|
|
|
+ paramLengths:Plongint; paramFormats:Plongint; resultFormat:longint):PPGresult;cdecl;external External_library name 'PQexecParams';
|
|
|
+
|
|
|
+ function PQexecPrepared(conn:PPGconn; stmtName:Pchar; nParams:longint; paramValues:PPchar; paramLengths:Plongint;
|
|
|
+ paramFormats:Plongint; resultFormat:longint):PPGresult;cdecl;external External_library name 'PQexecPrepared';
|
|
|
+
|
|
|
+ { Interface for multiple-result or asynchronous queries }
|
|
|
+ function PQsendQuery(conn:PPGconn; query:Pchar):longint;cdecl;external External_library name 'PQsendQuery';
|
|
|
+
|
|
|
+ function PQsendQueryParams(conn:PPGconn; command:Pchar; nParams:longint; paramTypes:POid; paramValues:PPchar;
|
|
|
+ paramLengths:Plongint; paramFormats:Plongint; resultFormat:longint):longint;cdecl;external External_library name 'PQsendQueryParams';
|
|
|
+
|
|
|
+ function PQsendQueryPrepared(conn:PPGconn; stmtName:Pchar; nParams:longint; paramValues:PPchar; paramLengths:Plongint;
|
|
|
+ paramFormats:Plongint; resultFormat:longint):longint;cdecl;external External_library name 'PQsendQueryPrepared';
|
|
|
+
|
|
|
+ function PQgetResult(conn:PPGconn):PPGresult;cdecl;external External_library name 'PQgetResult';
|
|
|
+
|
|
|
+ { Routines for managing an asynchronous query }
|
|
|
+ function PQisBusy(conn:PPGconn):longint;cdecl;external External_library name 'PQisBusy';
|
|
|
+
|
|
|
+ function PQconsumeInput(conn:PPGconn):longint;cdecl;external External_library name 'PQconsumeInput';
|
|
|
+
|
|
|
+ { LISTEN/NOTIFY support }
|
|
|
+ function PQnotifies(conn:PPGconn):PPGnotify;cdecl;external External_library name 'PQnotifies';
|
|
|
+
|
|
|
+ { Routines for copy in/out }
|
|
|
+ function PQputCopyData(conn:PPGconn; buffer:Pchar; nbytes:longint):longint;cdecl;external External_library name 'PQputCopyData';
|
|
|
+
|
|
|
+ function PQputCopyEnd(conn:PPGconn; errormsg:Pchar):longint;cdecl;external External_library name 'PQputCopyEnd';
|
|
|
+
|
|
|
+ function PQgetCopyData(conn:PPGconn; buffer:PPchar; async:longint):longint;cdecl;external External_library name 'PQgetCopyData';
|
|
|
+
|
|
|
+ { Deprecated routines for copy in/out }
|
|
|
+ function PQgetline(conn:PPGconn; _string:Pchar; length:longint):longint;cdecl;external External_library name 'PQgetline';
|
|
|
+
|
|
|
+ function PQputline(conn:PPGconn; _string:Pchar):longint;cdecl;external External_library name 'PQputline';
|
|
|
+
|
|
|
+ function PQgetlineAsync(conn:PPGconn; buffer:Pchar; bufsize:longint):longint;cdecl;external External_library name 'PQgetlineAsync';
|
|
|
+
|
|
|
+ function PQputnbytes(conn:PPGconn; buffer:Pchar; nbytes:longint):longint;cdecl;external External_library name 'PQputnbytes';
|
|
|
+
|
|
|
+ function PQendcopy(conn:PPGconn):longint;cdecl;external External_library name 'PQendcopy';
|
|
|
+
|
|
|
+ { Set blocking/nonblocking connection to the backend }
|
|
|
+ function PQsetnonblocking(conn:PPGconn; arg:longint):longint;cdecl;external External_library name 'PQsetnonblocking';
|
|
|
+
|
|
|
+ function PQisnonblocking(conn:PPGconn):longint;cdecl;external External_library name 'PQisnonblocking';
|
|
|
+
|
|
|
+ { Force the write buffer to be written (or at least try) }
|
|
|
+ function PQflush(conn:PPGconn):longint;cdecl;external External_library name 'PQflush';
|
|
|
+
|
|
|
+ {
|
|
|
+ * "Fast path" interface --- not really recommended for application
|
|
|
+ * use
|
|
|
+ }
|
|
|
+ function PQfn(conn:PPGconn; fnid:longint; result_buf:Plongint; result_len:Plongint; result_is_int:longint;
|
|
|
+ args:PPQArgBlock; nargs:longint):PPGresult;cdecl;external External_library name 'PQfn';
|
|
|
+
|
|
|
+ { Accessor functions for PGresult objects }
|
|
|
+ function PQresultStatus(res:PPGresult):TExecStatusType;cdecl;external External_library name 'PQresultStatus';
|
|
|
+
|
|
|
+ function PQresStatus(status:TExecStatusType):Pchar;cdecl;external External_library name 'PQresStatus';
|
|
|
+ function PQresultErrorMessage(res:PPGresult):Pchar;cdecl;external External_library name 'PQresultErrorMessage';
|
|
|
+
|
|
|
+ function PQresultErrorField(res:PPGresult; fieldcode:longint):Pchar;cdecl;external External_library name 'PQresultErrorField';
|
|
|
+
|
|
|
+ function PQntuples(res:PPGresult):longint;cdecl;external External_library name 'PQntuples';
|
|
|
+
|
|
|
+ function PQnfields(res:PPGresult):longint;cdecl;external External_library name 'PQnfields';
|
|
|
+
|
|
|
+ function PQbinaryTuples(res:PPGresult):longint;cdecl;external External_library name 'PQbinaryTuples';
|
|
|
+
|
|
|
+ function PQfname(res:PPGresult; field_num:longint):Pchar;cdecl;external External_library name 'PQfname';
|
|
|
+
|
|
|
+ function PQfnumber(res:PPGresult; field_name:Pchar):longint;cdecl;external External_library name 'PQfnumber';
|
|
|
+
|
|
|
+ function PQftable(res:PPGresult; field_num:longint):Oid;cdecl;external External_library name 'PQftable';
|
|
|
+
|
|
|
+ function PQftablecol(res:PPGresult; field_num:longint):longint;cdecl;external External_library name 'PQftablecol';
|
|
|
+
|
|
|
+ function PQfformat(res:PPGresult; field_num:longint):longint;cdecl;external External_library name 'PQfformat';
|
|
|
+
|
|
|
+ function PQftype(res:PPGresult; field_num:longint):Oid;cdecl;external External_library name 'PQftype';
|
|
|
+
|
|
|
+ function PQfsize(res:PPGresult; field_num:longint):longint;cdecl;external External_library name 'PQfsize';
|
|
|
+
|
|
|
+ function PQfmod(res:PPGresult; field_num:longint):longint;cdecl;external External_library name 'PQfmod';
|
|
|
+
|
|
|
+ function PQcmdStatus(res:PPGresult):Pchar;cdecl;external External_library name 'PQcmdStatus';
|
|
|
+
|
|
|
+ function PQoidStatus(res:PPGresult):Pchar;cdecl;external External_library name 'PQoidStatus';
|
|
|
+
|
|
|
+ { old and ugly }
|
|
|
+ function PQoidValue(res:PPGresult):Oid;cdecl;external External_library name 'PQoidValue';
|
|
|
+
|
|
|
+ { new and improved }
|
|
|
+ function PQcmdTuples(res:PPGresult):Pchar;cdecl;external External_library name 'PQcmdTuples';
|
|
|
+ function PQgetvalue(res:PPGresult; tup_num:longint; field_num:longint):Pchar;cdecl;external External_library name 'PQgetvalue';
|
|
|
+
|
|
|
+ function PQgetlength(res:PPGresult; tup_num:longint; field_num:longint):longint;cdecl;external External_library name 'PQgetlength';
|
|
|
+
|
|
|
+ function PQgetisnull(res:PPGresult; tup_num:longint; field_num:longint):longint;cdecl;external External_library name 'PQgetisnull';
|
|
|
+
|
|
|
+ { Delete a PGresult }
|
|
|
+ procedure PQclear(res:PPGresult);cdecl;external External_library name 'PQclear';
|
|
|
+
|
|
|
+ { For freeing other alloc'd results, such as PGnotify structs }
|
|
|
+ procedure PQfreemem(ptr:pointer);cdecl;external External_library name 'PQfreemem';
|
|
|
+
|
|
|
+ { Exists for backward compatibility. bjm 2003-03-24 }
|
|
|
+ { was #define dname(params) para_def_expr }
|
|
|
+ { argument types are unknown }
|
|
|
+ { return type might be wrong }
|
|
|
+// function PQfreeNotify(ptr : longint) : longint;
|
|
|
+
|
|
|
+ {
|
|
|
+ * Make an empty PGresult with given status (some apps find this
|
|
|
+ * useful). If conn is not NULL and status indicates an error, the
|
|
|
+ * conn's errorMessage is copied.
|
|
|
+ }
|
|
|
+ function PQmakeEmptyPGresult(conn:PPGconn; status:TExecStatusType):PPGresult;cdecl;external External_library name 'PQmakeEmptyPGresult';
|
|
|
+
|
|
|
+ { Quoting strings before inclusion in queries. }
|
|
|
+ function PQescapeString(till:Pchar; from:Pchar; length:size_t):size_t;cdecl;external External_library name 'PQescapeString';
|
|
|
+ function PQescapeBytea(bintext:Pbyte; binlen:size_t; bytealen:Psize_t):Pbyte;cdecl;external External_library name 'PQescapeBytea';
|
|
|
+ function PQunescapeBytea(strtext:Pbyte; retbuflen:Psize_t):Pbyte;cdecl;external External_library name 'PQunescapeBytea';
|
|
|
+
|
|
|
+ { === in fe-print.c === }
|
|
|
+ { output stream }
|
|
|
+ procedure PQprint(fout:PFILE; res:PPGresult; ps:PPQprintOpt);cdecl;external External_library name 'PQprint';
|
|
|
+
|
|
|
+ { option structure }
|
|
|
+ {
|
|
|
+ * really old printing routines
|
|
|
+ }
|
|
|
+ { where to send the output }
|
|
|
+ { pad the fields with spaces }
|
|
|
+ { field separator }
|
|
|
+ { display headers? }
|
|
|
+ procedure PQdisplayTuples(res:PPGresult; fp:PFILE; fillAlign:longint; fieldSep:Pchar; printHeader:longint;
|
|
|
+ quiet:longint);cdecl;external External_library name 'PQdisplayTuples';
|
|
|
+
|
|
|
+(* Const before type ignored *)
|
|
|
+ { output stream }
|
|
|
+ { print attribute names }
|
|
|
+ { delimiter bars }
|
|
|
+ procedure PQprintTuples(res:PPGresult; fout:PFILE; printAttName:longint; terseOutput:longint; width:longint);cdecl;external External_library name 'PQprintTuples';
|
|
|
+
|
|
|
+ { width of column, if 0, use variable
|
|
|
+ * width }
|
|
|
+ { === in fe-lobj.c === }
|
|
|
+ { Large-object access routines }
|
|
|
+ function lo_open(conn:PPGconn; lobjId:Oid; mode:longint):longint;cdecl;external External_library name 'lo_open';
|
|
|
+
|
|
|
+ function lo_close(conn:PPGconn; fd:longint):longint;cdecl;external External_library name 'lo_close';
|
|
|
+
|
|
|
+ function lo_read(conn:PPGconn; fd:longint; buf:Pchar; len:size_t):longint;cdecl;external External_library name 'lo_read';
|
|
|
+
|
|
|
+ function lo_write(conn:PPGconn; fd:longint; buf:Pchar; len:size_t):longint;cdecl;external External_library name 'lo_write';
|
|
|
+
|
|
|
+ function lo_lseek(conn:PPGconn; fd:longint; offset:longint; whence:longint):longint;cdecl;external External_library name 'lo_lseek';
|
|
|
+
|
|
|
+ function lo_creat(conn:PPGconn; mode:longint):Oid;cdecl;external External_library name 'lo_creat';
|
|
|
+
|
|
|
+ function lo_tell(conn:PPGconn; fd:longint):longint;cdecl;external External_library name 'lo_tell';
|
|
|
+
|
|
|
+ function lo_unlink(conn:PPGconn; lobjId:Oid):longint;cdecl;external External_library name 'lo_unlink';
|
|
|
+
|
|
|
+ function lo_import(conn:PPGconn; filename:Pchar):Oid;cdecl;external External_library name 'lo_import';
|
|
|
+
|
|
|
+ function lo_export(conn:PPGconn; lobjId:Oid; filename:Pchar):longint;cdecl;external External_library name 'lo_export';
|
|
|
+
|
|
|
+ { === in fe-misc.c === }
|
|
|
+ { Determine length of multibyte encoded char at *s }
|
|
|
+ function PQmblen(s:Pbyte; encoding:longint):longint;cdecl;external External_library name 'PQmblen';
|
|
|
+
|
|
|
+ { Get encoding id from environment variable PGCLIENTENCODING }
|
|
|
+ function PQenv2encoding:longint;cdecl;external External_library name 'PQenv2encoding';
|
|
|
+
|
|
|
+implementation
|
|
|
+
|
|
|
+ { was #define dname(params) para_def_expr }
|
|
|
+ { argument types are unknown }
|
|
|
+ { return type might be wrong }
|
|
|
+ function PQsetdb(M_PGHOST,M_PGPORT,M_PGOPT,M_PGTTY,M_DBNAME : pchar) : ppgconn;
|
|
|
+ begin
|
|
|
+ PQsetdb:=PQsetdbLogin(M_PGHOST,M_PGPORT,M_PGOPT,M_PGTTY,M_DBNAME,'','');
|
|
|
+ end;
|
|
|
+
|
|
|
+ { was #define dname(params) para_def_expr }
|
|
|
+ { argument types are unknown }
|
|
|
+ { return type might be wrong }
|
|
|
+{ function PQfreeNotify(ptr : longint) : longint;
|
|
|
+ begin
|
|
|
+ PQfreeNotify:=PQfreemem(ptr);
|
|
|
+ end;}
|
|
|
+
|
|
|
+
|
|
|
+end.
|