]> granicus.if.org Git - postgresql/commitdiff
Share PG_DIAG_* macros between client and server and use them internally.
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 27 Aug 2003 00:33:34 +0000 (00:33 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 27 Aug 2003 00:33:34 +0000 (00:33 +0000)
src/backend/utils/error/elog.c
src/include/postgres_ext.h
src/interfaces/libpq/fe-exec.c
src/interfaces/libpq/fe-protocol2.c
src/interfaces/libpq/fe-protocol3.c
src/interfaces/libpq/libpq-fe.h

index 15d6a1bb68d65838ab2a15d0de9a6239500e94a2..2f0e7dc7ea4c7112b095fdae562f4da73c99baff 100644 (file)
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.120 2003/08/26 21:15:27 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.121 2003/08/27 00:33:34 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1165,7 +1165,7 @@ send_message_to_frontend(ErrorData *edata)
                int                     ssval;
                int                     i;
 
-               pq_sendbyte(&msgbuf, 'S');
+               pq_sendbyte(&msgbuf, PG_DIAG_SEVERITY);
                pq_sendstring(&msgbuf, error_severity(edata->elevel));
 
                /* unpack MAKE_SQLSTATE code */
@@ -1177,11 +1177,11 @@ send_message_to_frontend(ErrorData *edata)
                }
                tbuf[i] = '\0';
 
-               pq_sendbyte(&msgbuf, 'C');
+               pq_sendbyte(&msgbuf, PG_DIAG_SQLSTATE);
                pq_sendstring(&msgbuf, tbuf);
 
                /* M field is required per protocol, so always send something */
-               pq_sendbyte(&msgbuf, 'M');
+               pq_sendbyte(&msgbuf, PG_DIAG_MESSAGE_PRIMARY);
                if (edata->message)
                        pq_sendstring(&msgbuf, edata->message);
                else
@@ -1189,45 +1189,45 @@ send_message_to_frontend(ErrorData *edata)
 
                if (edata->detail)
                {
-                       pq_sendbyte(&msgbuf, 'D');
+                       pq_sendbyte(&msgbuf, PG_DIAG_MESSAGE_DETAIL);
                        pq_sendstring(&msgbuf, edata->detail);
                }
 
                if (edata->hint)
                {
-                       pq_sendbyte(&msgbuf, 'H');
+                       pq_sendbyte(&msgbuf, PG_DIAG_MESSAGE_HINT);
                        pq_sendstring(&msgbuf, edata->hint);
                }
 
                if (edata->context)
                {
-                       pq_sendbyte(&msgbuf, 'W');
+                       pq_sendbyte(&msgbuf, PG_DIAG_CONTEXT);
                        pq_sendstring(&msgbuf, edata->context);
                }
 
                if (edata->cursorpos > 0)
                {
                        snprintf(tbuf, sizeof(tbuf), "%d", edata->cursorpos);
-                       pq_sendbyte(&msgbuf, 'P');
+                       pq_sendbyte(&msgbuf, PG_DIAG_STATEMENT_POSITION);
                        pq_sendstring(&msgbuf, tbuf);
                }
 
                if (edata->filename)
                {
-                       pq_sendbyte(&msgbuf, 'F');
+                       pq_sendbyte(&msgbuf, PG_DIAG_SOURCE_FILE);
                        pq_sendstring(&msgbuf, edata->filename);
                }
 
                if (edata->lineno > 0)
                {
                        snprintf(tbuf, sizeof(tbuf), "%d", edata->lineno);
-                       pq_sendbyte(&msgbuf, 'L');
+                       pq_sendbyte(&msgbuf, PG_DIAG_SOURCE_LINE);
                        pq_sendstring(&msgbuf, tbuf);
                }
 
                if (edata->funcname)
                {
-                       pq_sendbyte(&msgbuf, 'R');
+                       pq_sendbyte(&msgbuf, PG_DIAG_SOURCE_FUNCTION);
                        pq_sendstring(&msgbuf, edata->funcname);
                }
 
index b252453bbff4cc35f695e10f16e8a33f00dcb96d..c61bd4de0fe06df43b115cb3ca5e75f64aace8ba 100644 (file)
@@ -15,7 +15,7 @@
  *     use header files that are otherwise internal to Postgres to interface
  *     with the backend.
  *
- * $Id: postgres_ext.h,v 1.12 2003/03/18 17:21:07 momjian Exp $
+ * $Id: postgres_ext.h,v 1.13 2003/08/27 00:33:34 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -47,4 +47,21 @@ typedef unsigned int Oid;
  */
 #define NAMEDATALEN 64
 
+
+/*
+ * Identifiers of error message fields.  Kept here to keep common
+ * between frontend and backend, and also to export them to libpq
+ * applications.
+ */
+#define PG_DIAG_SEVERITY               'S'
+#define PG_DIAG_SQLSTATE               'C'
+#define PG_DIAG_MESSAGE_PRIMARY        'M'
+#define PG_DIAG_MESSAGE_DETAIL 'D'
+#define PG_DIAG_MESSAGE_HINT   'H'
+#define PG_DIAG_STATEMENT_POSITION 'P'
+#define PG_DIAG_CONTEXT                        'W'
+#define PG_DIAG_SOURCE_FILE            'F'
+#define PG_DIAG_SOURCE_LINE            'L'
+#define PG_DIAG_SOURCE_FUNCTION        'R'
+
 #endif
index 3e6527668137d47d4352b898066450ccf802154c..f9ce9564a7cdf0fc969014685710ea6425022ac0 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.145 2003/08/13 18:56:21 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.146 2003/08/27 00:33:34 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -480,8 +480,8 @@ pqInternalNotice(const PGNoticeHooks * hooks, const char *fmt,...)
        /*
         * Set up fields of notice.
         */
-       pqSaveMessageField(res, 'M', msgBuf);
-       pqSaveMessageField(res, 'S', libpq_gettext("NOTICE"));
+       pqSaveMessageField(res, PG_DIAG_MESSAGE_PRIMARY, msgBuf);
+       pqSaveMessageField(res, PG_DIAG_SEVERITY, libpq_gettext("NOTICE"));
        /* XXX should provide a SQLSTATE too? */
 
        /*
index 834aa69bbf4b27def48e7c798f470452638da5bc..1b766996910ed6fb3e57fd2a4a33bb478ad3f273 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol2.c,v 1.6 2003/08/04 02:40:20 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol2.c,v 1.7 2003/08/27 00:33:34 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -828,7 +828,7 @@ pqGetErrorNotice2(PGconn *conn, bool isError)
        {
                /* what comes before the colon is severity */
                *splitp = '\0';
-               pqSaveMessageField(res, 'S', workBuf.data);
+               pqSaveMessageField(res, PG_DIAG_SEVERITY, workBuf.data);
                startp = splitp + 3;
        }
        else
@@ -841,16 +841,16 @@ pqGetErrorNotice2(PGconn *conn, bool isError)
        {
                /* what comes before the newline is primary message */
                *splitp++ = '\0';
-               pqSaveMessageField(res, 'M', startp);
+               pqSaveMessageField(res, PG_DIAG_MESSAGE_PRIMARY, startp);
                /* the rest is detail; strip any leading whitespace */
                while (*splitp && isspace((unsigned char) *splitp))
                        splitp++;
-               pqSaveMessageField(res, 'D', splitp);
+               pqSaveMessageField(res, PG_DIAG_MESSAGE_DETAIL, splitp);
        }
        else
        {
                /* single-line message, so all primary */
-               pqSaveMessageField(res, 'M', startp);
+               pqSaveMessageField(res, PG_DIAG_MESSAGE_PRIMARY, startp);
        }
 
        /*
index 0591d63da98fed4c1f268b3b833fb1d30e13a7c9..ba06a37848f8893e9d605a064e4db43f2739ce62 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol3.c,v 1.8 2003/08/13 18:56:21 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol3.c,v 1.9 2003/08/27 00:33:34 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -614,19 +614,19 @@ pqGetErrorNotice3(PGconn *conn, bool isError)
         * Now build the "overall" error message for PQresultErrorMessage.
         */
        resetPQExpBuffer(&workBuf);
-       val = PQresultErrorField(res, 'S'); /* Severity */
+       val = PQresultErrorField(res, PG_DIAG_SEVERITY);
        if (val)
                appendPQExpBuffer(&workBuf, "%s:  ", val);
        if (conn->verbosity == PQERRORS_VERBOSE)
        {
-               val = PQresultErrorField(res, 'C');             /* SQLSTATE Code */
+               val = PQresultErrorField(res, PG_DIAG_SQLSTATE);
                if (val)
                        appendPQExpBuffer(&workBuf, "%s: ", val);
        }
-       val = PQresultErrorField(res, 'M'); /* Primary message */
+       val = PQresultErrorField(res, PG_DIAG_MESSAGE_PRIMARY);
        if (val)
                appendPQExpBufferStr(&workBuf, val);
-       val = PQresultErrorField(res, 'P'); /* Position */
+       val = PQresultErrorField(res, PG_DIAG_STATEMENT_POSITION);
        if (val)
        {
                /* translator: %s represents a digit string */
@@ -635,13 +635,13 @@ pqGetErrorNotice3(PGconn *conn, bool isError)
        appendPQExpBufferChar(&workBuf, '\n');
        if (conn->verbosity != PQERRORS_TERSE)
        {
-               val = PQresultErrorField(res, 'D');             /* Detail */
+               val = PQresultErrorField(res, PG_DIAG_MESSAGE_DETAIL);
                if (val)
                        appendPQExpBuffer(&workBuf, libpq_gettext("DETAIL:  %s\n"), val);
-               val = PQresultErrorField(res, 'H');             /* Hint */
+               val = PQresultErrorField(res, PG_DIAG_MESSAGE_HINT);
                if (val)
                        appendPQExpBuffer(&workBuf, libpq_gettext("HINT:  %s\n"), val);
-               val = PQresultErrorField(res, 'W');             /* Where */
+               val = PQresultErrorField(res, PG_DIAG_CONTEXT);
                if (val)
                        appendPQExpBuffer(&workBuf, libpq_gettext("CONTEXT:  %s\n"), val);
        }
@@ -650,9 +650,9 @@ pqGetErrorNotice3(PGconn *conn, bool isError)
                const char *valf;
                const char *vall;
 
-               valf = PQresultErrorField(res, 'F');    /* File */
-               vall = PQresultErrorField(res, 'L');    /* Line */
-               val = PQresultErrorField(res, 'R');             /* Routine */
+               valf = PQresultErrorField(res, PG_DIAG_SOURCE_FILE);
+               vall = PQresultErrorField(res, PG_DIAG_SOURCE_LINE);
+               val = PQresultErrorField(res, PG_DIAG_SOURCE_FUNCTION);
                if (val || valf || vall)
                {
                        appendPQExpBufferStr(&workBuf, libpq_gettext("LOCATION:  "));
index 3e068cc6dc942f53f1435e9ed920ae756a5ec7fc..bafe0ddd6c94a8d3931d422ae0b6f680f79d0bdc 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: libpq-fe.h,v 1.99 2003/08/24 18:36:38 petere Exp $
+ * $Id: libpq-fe.h,v 1.100 2003/08/27 00:33:34 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -104,18 +104,6 @@ typedef enum
        PQERRORS_VERBOSE                        /* all the facts, ma'am */
 } PGVerbosity;
 
-/* for PQresultErrorField() */
-#define PG_DIAG_SEVERITY               'S'
-#define PG_DIAG_SQLSTATE               'C'
-#define PG_DIAG_MESSAGE_PRIMARY        'M'
-#define PG_DIAG_MESSAGE_DETAIL 'D'
-#define PG_DIAG_MESSAGE_HINT   'H'
-#define PG_DIAG_STATEMENT_POSITION 'P'
-#define PG_DIAG_CONTEXT                        'W'
-#define PG_DIAG_SOURCE_FILE            'F'
-#define PG_DIAG_SOURCE_LINE            'L'
-#define PG_DIAG_SOURCE_FUNCTION        'R'
-
 /* PGconn encapsulates a connection to the backend.
  * The contents of this struct are not supposed to be known to applications.
  */