Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc3664c0

Browse files
committed
Add macros for error result fields to libpq.
1 parentb4ab39f commitc3664c0

File tree

4 files changed

+146
-16
lines changed

4 files changed

+146
-16
lines changed

‎doc/src/sgml/libpq.sgml

Lines changed: 127 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!--
2-
$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.131 2003/08/13 16:29:03 tgl Exp $
2+
$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.132 2003/08/24 18:36:38 petere Exp $
33
-->
44

55
<chapter id="libpq">
@@ -1283,20 +1283,138 @@ Returns an individual field of an error report.
12831283
<synopsis>
12841284
char *PQresultErrorField(const PGresult *res, int fieldcode);
12851285
</synopsis>
1286-
<parameter>fieldcode</> is an error field identifier defined by the
1287-
<productname>PostgreSQL</> protocol (see <xref
1288-
linkend="protocol-error-fields">), for example <literal>'C'</> for
1289-
the SQLSTATE error code. NULL is returned if the
1286+
<parameter>fieldcode</> is an error field identifier; see the symbols
1287+
listed below. <symbol>NULL</symbol> is returned if the
12901288
<structname>PGresult</structname> is not an error or warning result,
12911289
or does not include the specified field. Field values will normally
12921290
not include a trailing newline.
12931291
</para>
12941292

12951293
<para>
1296-
Errors generated internally by libpq will have severity and primary message,
1297-
but typically no other fields. Errors returned by a pre-3.0-protocol server
1298-
will include severity and primary message, and sometimes a detail message,
1299-
but no other fields.
1294+
The following field codes are available:
1295+
<variablelist>
1296+
1297+
<varlistentry>
1298+
<term><symbol>PG_DIAG_SEVERITY</></term>
1299+
<listitem>
1300+
<para>
1301+
The severity; the field contents are <literal>ERROR</>,
1302+
<literal>FATAL</>, or <literal>PANIC</> (in an error message), or
1303+
<literal>WARNING</>, <literal>NOTICE</>, <literal>DEBUG</>,
1304+
<literal>INFO</>, or <literal>LOG</> (in a notice message), or a
1305+
localized translation of one of these. Always present.
1306+
</para>
1307+
</listitem>
1308+
</varlistentry>
1309+
1310+
<varlistentry>
1311+
<term><symbol>PG_DIAG_SQLSTATE</>
1312+
</term>
1313+
<listitem>
1314+
<para>
1315+
The SQLSTATE code for the error (a 5-character string following SQL
1316+
spec conventions). Not localizable. Always present.
1317+
</para>
1318+
</listitem>
1319+
</varlistentry>
1320+
1321+
<varlistentry>
1322+
<term><symbol>PG_DIAG_MESSAGE_PRIMARY</></term>
1323+
<listitem>
1324+
<para>
1325+
The primary human-readable error message (typically one line). Always
1326+
present.
1327+
</para>
1328+
</listitem>
1329+
</varlistentry>
1330+
1331+
<varlistentry>
1332+
<term><symbol>PG_DIAG_MESSAGE_DETAIL</></term>
1333+
<listitem>
1334+
<para>
1335+
Detail: an optional secondary error message carrying more detail about
1336+
the problem. May run to multiple lines.
1337+
</para>
1338+
</listitem>
1339+
</varlistentry>
1340+
1341+
<varlistentry>
1342+
<term><symbol>PG_DIAG_MESSAGE_HINT</></term>
1343+
<listitem>
1344+
<para>
1345+
Hint: an optional suggestion what to do about the problem. This is
1346+
intended to differ from detail in that it offers advice (potentially
1347+
inappropriate) rather than hard facts. May run to multiple lines.
1348+
</para>
1349+
</listitem>
1350+
</varlistentry>
1351+
1352+
<varlistentry>
1353+
<term><symbol>PG_DIAG_STATEMENT_POSITION</></term>
1354+
<listitem>
1355+
<para>
1356+
A string containing a decimal integer indicating an error cursor
1357+
position as an index into the original statement string. The first
1358+
character has index 1, and positions are measured in characters not
1359+
bytes.
1360+
</para>
1361+
</listitem>
1362+
</varlistentry>
1363+
1364+
<varlistentry>
1365+
<term><symbol>PG_DIAG_CONTEXT</></term>
1366+
<listitem>
1367+
<para>
1368+
An indication of the context in which the error occurred. Presently
1369+
this includes a call stack traceback of active PL functions. The
1370+
trace is one entry per line, most recent first.
1371+
</para>
1372+
</listitem>
1373+
</varlistentry>
1374+
1375+
<varlistentry>
1376+
<term><symbol>PG_DIAG_SOURCE_FILE</></term>
1377+
<listitem>
1378+
<para>
1379+
The file name of the source-code location where the error was
1380+
reported.
1381+
</para>
1382+
</listitem>
1383+
</varlistentry>
1384+
1385+
<varlistentry>
1386+
<term><symbol>PG_DIAG_SOURCE_LINE</></term>
1387+
<listitem>
1388+
<para>
1389+
The line number of the source-code location where the error was
1390+
reported.
1391+
</para>
1392+
</listitem>
1393+
</varlistentry>
1394+
1395+
<varlistentry>
1396+
<term><symbol>PG_DIAG_SOURCE_FUNCTION</></term>
1397+
<listitem>
1398+
<para>
1399+
The name of the source-code function reporting the error.
1400+
</para>
1401+
</listitem>
1402+
</varlistentry>
1403+
</variablelist>
1404+
</para>
1405+
1406+
<para>
1407+
The client is responsible for formatting displayed information to meet
1408+
its needs; in particular it should break long lines as needed.
1409+
Newline characters appearing in the error message fields should be
1410+
treated as paragraph breaks, not line breaks.
1411+
</para>
1412+
1413+
<para>
1414+
Errors generated internally by <application>libpq</application> will
1415+
have severity and primary message, but typically no other fields.
1416+
Errors returned by a pre-3.0-protocol server will include severity and
1417+
primary message, and sometimes a detail message, but no other fields.
13001418
</para>
13011419

13021420
<para>

‎src/interfaces/ecpg/ecpglib/connect.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/connect.c,v 1.16 2003/08/08 13:16:20 petere Exp $ */
1+
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/connect.c,v 1.17 2003/08/24 18:36:38 petere Exp $ */
22

33
#definePOSTGRES_ECPG_INTERNAL
44
#include"postgres_fe.h"
@@ -158,8 +158,8 @@ ECPGsetconn(int lineno, const char *connection_name)
158158
staticvoid
159159
ECPGnoticeReceiver(void*arg,constPGresult*result)
160160
{
161-
char*sqlstate=PQresultErrorField(result,'C');
162-
char*message=PQresultErrorField(result,'M');
161+
char*sqlstate=PQresultErrorField(result,PG_DIAG_SQLSTATE);
162+
char*message=PQresultErrorField(result,PG_DIAG_MESSAGE_PRIMARY);
163163
structsqlca_t*sqlca=ECPGget_sqlca();
164164

165165
intsqlcode;

‎src/interfaces/ecpg/ecpglib/error.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/error.c,v 1.7 2003/08/08 13:16:20 petere Exp $ */
1+
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/error.c,v 1.8 2003/08/24 18:36:38 petere Exp $ */
22

33
#definePOSTGRES_ECPG_INTERNAL
44
#include"postgres_fe.h"
@@ -164,10 +164,10 @@ ECPGraise_backend(int line, PGresult *result, PGconn *conn, int compat)
164164

165165
if (result)
166166
{
167-
sqlstate=PQresultErrorField(result,'C');
167+
sqlstate=PQresultErrorField(result,PG_DIAG_SQLSTATE);
168168
if (sqlstate==NULL)
169169
sqlstate=ECPG_SQLSTATE_ECPG_INTERNAL_ERROR;
170-
message=PQresultErrorField(result,'M');
170+
message=PQresultErrorField(result,PG_DIAG_MESSAGE_PRIMARY);
171171
}
172172
else
173173
{

‎src/interfaces/libpq/libpq-fe.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $Id: libpq-fe.h,v 1.98 2003/08/13 16:29:03 tgl Exp $
10+
* $Id: libpq-fe.h,v 1.99 2003/08/24 18:36:38 petere Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -104,6 +104,18 @@ typedef enum
104104
PQERRORS_VERBOSE/* all the facts, ma'am */
105105
}PGVerbosity;
106106

107+
/* for PQresultErrorField() */
108+
#definePG_DIAG_SEVERITY'S'
109+
#definePG_DIAG_SQLSTATE'C'
110+
#definePG_DIAG_MESSAGE_PRIMARY'M'
111+
#definePG_DIAG_MESSAGE_DETAIL'D'
112+
#definePG_DIAG_MESSAGE_HINT'H'
113+
#definePG_DIAG_STATEMENT_POSITION 'P'
114+
#definePG_DIAG_CONTEXT'W'
115+
#definePG_DIAG_SOURCE_FILE'F'
116+
#definePG_DIAG_SOURCE_LINE'L'
117+
#definePG_DIAG_SOURCE_FUNCTION'R'
118+
107119
/* PGconn encapsulates a connection to the backend.
108120
* The contents of this struct are not supposed to be known to applications.
109121
*/

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp