]> granicus.if.org Git - postgresql/blobdiff - src/interfaces/libpq/libpq-fe.h
Add a "SQLSTATE-only" error verbosity option to libpq and psql.
[postgresql] / src / interfaces / libpq / libpq-fe.h
index e7496c59db3d2629af0d5f99be83b565996484af..f44030b4b0d0dcf09e611f2aef42947ca53a4e84 100644 (file)
@@ -4,7 +4,7 @@
  *       This file contains definitions for structures and
  *       externs for functions used by frontend postgres applications.
  *
- * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * src/interfaces/libpq/libpq-fe.h
@@ -16,7 +16,7 @@
 #define LIBPQ_FE_H
 
 #ifdef __cplusplus
-extern         "C"
+extern "C"
 {
 #endif
 
@@ -56,8 +56,8 @@ typedef enum
         */
        CONNECTION_STARTED,                     /* Waiting for connection to be made.  */
        CONNECTION_MADE,                        /* Connection OK; waiting to send.     */
-       CONNECTION_AWAITING_RESPONSE,           /* Waiting for a response from the
-                                                                                * postmaster.        */
+       CONNECTION_AWAITING_RESPONSE,   /* Waiting for a response from the
+                                                                        * postmaster.        */
        CONNECTION_AUTH_OK,                     /* Received authentication; waiting for
                                                                 * backend startup. */
        CONNECTION_SETENV,                      /* Negotiating environment. */
@@ -65,8 +65,9 @@ typedef enum
        CONNECTION_NEEDED,                      /* Internal state: connect() needed */
        CONNECTION_CHECK_WRITABLE,      /* Check if we could make a writable
                                                                 * connection. */
-       CONNECTION_CONSUME                      /* Wait for any pending message and consume
+       CONNECTION_CONSUME,                     /* Wait for any pending message and consume
                                                                 * them. */
+       CONNECTION_GSS_STARTUP          /* Negotiating GSSAPI. */
 } ConnStatusType;
 
 typedef enum
@@ -111,7 +112,8 @@ typedef enum
 {
        PQERRORS_TERSE,                         /* single-line error messages */
        PQERRORS_DEFAULT,                       /* recommended style */
-       PQERRORS_VERBOSE                        /* all the facts, ma'am */
+       PQERRORS_VERBOSE,                       /* all the facts, ma'am */
+       PQERRORS_SQLSTATE                       /* only error severity and SQLSTATE code */
 } PGVerbosity;
 
 typedef enum
@@ -253,14 +255,14 @@ typedef struct pgresAttDesc
 /* make a new client connection to the backend */
 /* Asynchronous (non-blocking) */
 extern PGconn *PQconnectStart(const char *conninfo);
-extern PGconn *PQconnectStartParams(const char *const * keywords,
-                                        const char *const * values, int expand_dbname);
+extern PGconn *PQconnectStartParams(const char *const *keywords,
+                                        const char *const *values, int expand_dbname);
 extern PostgresPollingStatusType PQconnectPoll(PGconn *conn);
 
 /* Synchronous (blocking) */
 extern PGconn *PQconnectdb(const char *conninfo);
-extern PGconn *PQconnectdbParams(const char *const * keywords,
-                                 const char *const * values, int expand_dbname);
+extern PGconn *PQconnectdbParams(const char *const *keywords,
+                                 const char *const *values, int expand_dbname);
 extern PGconn *PQsetdbLogin(const char *pghost, const char *pgport,
                         const char *pgoptions, const char *pgtty,
                         const char *dbName,
@@ -312,6 +314,7 @@ extern char *PQdb(const PGconn *conn);
 extern char *PQuser(const PGconn *conn);
 extern char *PQpass(const PGconn *conn);
 extern char *PQhost(const PGconn *conn);
+extern char *PQhostaddr(const PGconn *conn);
 extern char *PQport(const PGconn *conn);
 extern char *PQtty(const PGconn *conn);
 extern char *PQoptions(const PGconn *conn);
@@ -333,7 +336,7 @@ extern int  PQsetClientEncoding(PGconn *conn, const char *encoding);
 extern int     PQsslInUse(PGconn *conn);
 extern void *PQsslStruct(PGconn *conn, const char *struct_name);
 extern const char *PQsslAttribute(PGconn *conn, const char *attribute_name);
-extern const char *const * PQsslAttributeNames(PGconn *conn);
+extern const char *const *PQsslAttributeNames(PGconn *conn);
 
 /* Get the OpenSSL structure associated with a connection. Returns NULL for
  * unencrypted connections or if any other TLS library is in use. */
@@ -345,6 +348,12 @@ extern void PQinitSSL(int do_init);
 /* More detailed way to tell libpq whether it needs to initialize OpenSSL */
 extern void PQinitOpenSSL(int do_ssl, int do_crypto);
 
+/* Return true if GSSAPI encryption is in use */
+extern int PQgssEncInUse(PGconn *conn);
+
+/* Returns GSSAPI context if GSSAPI is in use */
+extern void *PQgetgssctx(PGconn *conn);
+
 /* Set verbosity for PQerrorMessage and PQresultErrorMessage */
 extern PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity);
 
@@ -383,7 +392,7 @@ extern PGresult *PQexecParams(PGconn *conn,
                         const char *command,
                         int nParams,
                         const Oid *paramTypes,
-                        const char *const * paramValues,
+                        const char *const *paramValues,
                         const int *paramLengths,
                         const int *paramFormats,
                         int resultFormat);
@@ -393,7 +402,7 @@ extern PGresult *PQprepare(PGconn *conn, const char *stmtName,
 extern PGresult *PQexecPrepared(PGconn *conn,
                           const char *stmtName,
                           int nParams,
-                          const char *const * paramValues,
+                          const char *const *paramValues,
                           const int *paramLengths,
                           const int *paramFormats,
                           int resultFormat);
@@ -404,7 +413,7 @@ extern int PQsendQueryParams(PGconn *conn,
                                  const char *command,
                                  int nParams,
                                  const Oid *paramTypes,
-                                 const char *const * paramValues,
+                                 const char *const *paramValues,
                                  const int *paramLengths,
                                  const int *paramFormats,
                                  int resultFormat);
@@ -414,7 +423,7 @@ extern int PQsendPrepare(PGconn *conn, const char *stmtName,
 extern int PQsendQueryPrepared(PGconn *conn,
                                        const char *stmtName,
                                        int nParams,
-                                       const char *const * paramValues,
+                                       const char *const *paramValues,
                                        const int *paramLengths,
                                        const int *paramFormats,
                                        int resultFormat);
@@ -445,8 +454,8 @@ extern int  PQsetnonblocking(PGconn *conn, int arg);
 extern int     PQisnonblocking(const PGconn *conn);
 extern int     PQisthreadsafe(void);
 extern PGPing PQping(const char *conninfo);
-extern PGPing PQpingParams(const char *const * keywords,
-                        const char *const * values, int expand_dbname);
+extern PGPing PQpingParams(const char *const *keywords,
+                        const char *const *values, int expand_dbname);
 
 /* Force the write buffer to be written (or at least try) */
 extern int     PQflush(PGconn *conn);
@@ -516,6 +525,7 @@ extern PGresult *PQmakeEmptyPGresult(PGconn *conn, ExecStatusType status);
 extern PGresult *PQcopyResult(const PGresult *src, int flags);
 extern int     PQsetResultAttrs(PGresult *res, int numAttributes, PGresAttDesc *attDescs);
 extern void *PQresultAlloc(PGresult *res, size_t nBytes);
+extern size_t PQresultMemorySize(const PGresult *res);
 extern int     PQsetvalue(PGresult *res, int tup_num, int field_num, char *value, int len);
 
 /* Quoting strings before inclusion in queries. */
@@ -609,4 +619,4 @@ extern int  pg_valid_server_encoding_id(int encoding);
 }
 #endif
 
-#endif   /* LIBPQ_FE_H */
+#endif                                                 /* LIBPQ_FE_H */