31 #ifdef ENABLE_THREAD_SAFETY 47 #if defined(HAVE_GSSAPI_H) 50 #include <gssapi/gssapi.h> 55 #define SECURITY_WIN32 56 #if defined(WIN32) && !defined(_MSC_VER) 75 #include <openssl/ssl.h> 76 #include <openssl/err.h> 78 #ifndef OPENSSL_NO_ENGINE 79 #define USE_SSL_ENGINE 86 #define CMDSTATUS_LEN 64 133 #define NULL_LEN (-1) 396 char last_sqlstate[6];
485 #ifdef USE_SSL_ENGINE 496 gss_name_t gtarg_nam;
504 char *gss_SendBuffer;
508 int gss_SendConsumed;
510 char *gss_RecvBuffer;
512 char *gss_ResultBuffer;
513 int gss_ResultLength;
522 CredHandle *sspicred;
561 #define USER_CERT_FILE ".postgresql/postgresql.crt" 562 #define USER_KEY_FILE ".postgresql/postgresql.key" 563 #define ROOT_CERT_FILE ".postgresql/root.crt" 564 #define ROOT_CRL_FILE ".postgresql/root.crl" 567 #define USER_CERT_FILE "postgresql.crt" 568 #define USER_KEY_FILE "postgresql.key" 569 #define ROOT_CERT_FILE "root.crt" 570 #define ROOT_CRL_FILE "root.crl" 588 const void *
buf,
size_t buf_len);
591 #ifdef ENABLE_THREAD_SAFETY 594 #define PGTHREAD_ERROR(msg) \ 596 fprintf(stderr, "%s\n", msg); \ 601 #define pglock_thread() pg_g_threadlock(true) 602 #define pgunlock_thread() pg_g_threadlock(false) 604 #define pglock_thread() ((void) 0) 605 #define pgunlock_thread() ((void) 0) 637 int *result_buf,
int *actual_result_len,
664 extern
int pqWait(
int forRead,
int forWrite,
PGconn *conn);
675 extern ssize_t
pqsecure_read(PGconn *,
void *ptr,
size_t len);
676 extern ssize_t
pqsecure_write(PGconn *, const
void *ptr,
size_t len);
680 #if defined(ENABLE_THREAD_SAFETY) && !defined(WIN32) 681 extern int pq_block_sigpipe(sigset_t *osigset,
bool *sigpipe_pending);
682 extern void pq_reset_sigpipe(sigset_t *osigset,
bool sigpipe_pending,
724 extern ssize_t
pgtls_read(PGconn *conn,
void *ptr,
size_t len);
738 extern ssize_t
pgtls_write(PGconn *conn,
const void *ptr,
size_t len);
750 #if defined(USE_OPENSSL) && defined(HAVE_X509_GET_SIGNATURE_NID) 751 #define HAVE_PGTLS_GET_PEER_CERTIFICATE_HASH 752 extern char *pgtls_get_peer_certificate_hash(PGconn *conn,
size_t *len);
781 extern ssize_t
pg_GSS_write(PGconn *conn,
const void *ptr,
size_t len);
782 extern ssize_t
pg_GSS_read(PGconn *conn,
void *ptr,
size_t len);
791 #define pqIsnonblocking(conn) ((conn)->nonblocking) 797 #define libpq_gettext(x) (x) 798 #define libpq_ngettext(s, p, n) ((n) == 1 ? (s) : (p)) 806 #define SOCK_ERRNO (WSAGetLastError()) 807 #define SOCK_STRERROR winsock_strerror 808 #define SOCK_ERRNO_SET(e) WSASetLastError(e) 810 #define SOCK_ERRNO errno 811 #define SOCK_STRERROR strerror_r 812 #define SOCK_ERRNO_SET(e) (errno = (e))
struct pgDataValue PGdataValue
int pqPutInt(int value, size_t bytes, PGconn *conn)
PGContextVisibility show_context
void(* PQnoticeReceiver)(void *arg, const PGresult *res)
void pgtls_close(PGconn *conn)
int pqPutMsgStart(char msg_type, PGconn *conn)
int pqWait(int forRead, int forWrite, PGconn *conn)
PGMessageField * errFields
bool pgtls_read_pending(PGconn *conn)
int pqPacketSend(PGconn *conn, char pack_type, const void *buf, size_t buf_len)
ssize_t pgtls_read(PGconn *conn, void *ptr, size_t len)
int pqReadData(PGconn *conn)
char * pqBuildStartupPacket3(PGconn *conn, int *packetlen, const PQEnvironmentOption *options)
struct addrinfo * addr_cur
ssize_t pqsecure_write(PGconn *, const void *ptr, size_t len)
void pqSaveErrorResult(PGconn *conn)
int pqPutMsgEnd(PGconn *conn)
int pqRowProcessor(PGconn *conn, const char **errmsgp)
int(* PGEventProc)(PGEventId evtId, void *evtInfo, void *passThrough)
ssize_t pgtls_write(PGconn *conn, const void *ptr, size_t len)
char * pqResultStrdup(PGresult *res, const char *str)
def bytes(source, encoding='ascii', errors='strict')
PQExpBufferData workBuffer
void(* PQnoticeProcessor)(void *arg, const char *message)
#define FLEXIBLE_ARRAY_MEMBER
struct pgMessageField * next
char * ssl_min_protocol_version
void pqClearAsyncResult(PGconn *conn)
void pqsecure_close(PGconn *)
void pgtls_init_library(bool do_ssl, int do_crypto)
void pqBuildErrorMessage3(PQExpBuffer msg, const PGresult *res, PGVerbosity verbosity, PGContextVisibility show_context)
PGresult * pqPrepareAsyncResult(PGconn *conn)
struct addrinfo * addrlist
int pqGets_append(PQExpBuffer buf, PGconn *conn)
void pqParseInput3(PGconn *conn)
void * pqResultAlloc(PGresult *res, size_t nBytes, bool isBinary)
#define pg_attribute_printf(f, a)
void pqInternalNotice(const PGNoticeHooks *hooks, const char *fmt,...) pg_attribute_printf(2
PGresult * pqFunctionCall3(PGconn *conn, Oid fnid, int *result_buf, int *actual_result_len, int result_is_int, const PQArgBlock *args, int nargs)
char * client_encoding_initial
ssize_t pqsecure_read(PGconn *, void *ptr, size_t len)
PGAsyncStatusType asyncStatus
int pqPutnchar(const char *s, size_t len, PGconn *conn)
PGTernaryBool default_transaction_read_only
int pqCheckInBufferSpace(size_t bytes_needed, PGconn *conn)
void pqSaveParameterStatus(PGconn *conn, const char *name, const char *value)
void(* pgthreadlock_t)(int acquire)
PGNoticeHooks noticeHooks
int pqsecure_initialize(PGconn *)
ssize_t pg_GSS_write(PGconn *conn, const void *ptr, size_t len)
struct pgParameterStatus pgParameterStatus
PostgresPollingStatusType pgtls_open_client(PGconn *conn)
PGNoticeHooks noticeHooks
char * keepalives_interval
#define libpq_ngettext(s, p, n)
PQnoticeReceiver noticeRec
int pqGetInt(int *result, size_t bytes, PGconn *conn)
int pqGetlineAsync3(PGconn *conn, char *buffer, int bufsize)
char * target_session_attrs
pgthreadlock_t pg_g_threadlock
void void pqSaveMessageField(PGresult *res, char code, const char *value)
#define pg_attribute_format_arg(a)
int pqReadReady(PGconn *conn)
void pqDropConnection(PGconn *conn, bool flushInput)
struct PQEnvironmentOption PQEnvironmentOption
struct pgresParamDesc PGresParamDesc
int pqGets(PQExpBuffer buf, PGconn *conn)
PGTernaryBool in_hot_standby
ssize_t pqsecure_raw_read(PGconn *, void *ptr, size_t len)
pgParameterStatus * pstatus
int pqGetCopyData3(PGconn *conn, char **buffer, int async)
int pqPuts(const char *s, PGconn *conn)
char *const pgresStatus[]
int pgtls_verify_peer_name_matches_certificate_guts(PGconn *conn, int *names_examined, char **first_name)
struct pgresAttValue PGresAttValue
int pqWriteReady(PGconn *conn)
PQnoticeProcessor noticeProc
PQExpBufferData errorMessage
int pqGetnchar(char *s, size_t len, PGconn *conn)
int pqWaitTimed(int forRead, int forWrite, PGconn *conn, time_t finish_time)
PGresParamDesc * paramDescs
struct pg_conn_host pg_conn_host
int pqPutc(char c, PGconn *conn)
ssize_t pqsecure_raw_write(PGconn *, const void *ptr, size_t len)
struct pgParameterStatus * next
int pqCheckOutBufferSpace(size_t bytes_needed, PGconn *conn)
char contents[FLEXIBLE_ARRAY_MEMBER]
int pqFlush(PGconn *conn)
PostgresPollingStatusType
PostgresPollingStatusType pqsecure_open_client(PGconn *)
ssize_t pg_GSS_read(PGconn *conn, void *ptr, size_t len)
int PQsendQueryContinue(PGconn *conn, const char *query)
struct pgLobjfuncs PGlobjfuncs
char * ssl_max_protocol_version
int pqGetc(char *result, PGconn *conn)
PostgresPollingStatusType pqsecure_open_gss(PGconn *conn)
bool pqGetHomeDirectory(char *buf, int bufsize)
int pqSkipnchar(size_t len, PGconn *conn)
int pqEndcopy3(PGconn *conn)
int pqGetErrorNotice3(PGconn *conn, bool isError)
PGTargetServerType target_server_type
ExecStatusType resultStatus
char * pgtcp_user_timeout
int pgtls_init(PGconn *conn)
void pqSetResultError(PGresult *res, const char *msg)
struct pgMessageField PGMessageField
int pqGetline3(PGconn *conn, char *s, int maxlen)
PGTransactionStatusType xactStatus