1996-12-10 08:03:43 +01:00
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
*
|
1999-02-14 00:22:53 +01:00
|
|
|
* postgres_ext.h
|
1996-12-10 08:03:43 +01:00
|
|
|
*
|
2001-02-10 03:31:31 +01:00
|
|
|
* This file contains declarations of things that are visible everywhere
|
|
|
|
* in PostgreSQL *and* are visible to clients of frontend interface libraries.
|
|
|
|
* For example, the Oid type is part of the API of libpq and other libraries.
|
1996-12-10 08:03:43 +01:00
|
|
|
*
|
|
|
|
* Declarations which are specific to a particular interface should
|
|
|
|
* go in the header file for that interface (such as libpq-fe.h). This
|
|
|
|
* file is only for fundamental Postgres declarations.
|
|
|
|
*
|
|
|
|
* User-written C functions don't count as "external to Postgres."
|
|
|
|
* Those function much as local modifications to the backend itself, and
|
|
|
|
* use header files that are otherwise internal to Postgres to interface
|
|
|
|
* with the backend.
|
1997-09-07 07:04:48 +02:00
|
|
|
*
|
2010-09-20 22:08:53 +02:00
|
|
|
* src/include/postgres_ext.h
|
1996-12-10 08:03:43 +01:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef POSTGRES_EXT_H
|
|
|
|
#define POSTGRES_EXT_H
|
|
|
|
|
2012-10-08 03:52:07 +02:00
|
|
|
#include "pg_config_ext.h"
|
|
|
|
|
2000-12-22 22:36:09 +01:00
|
|
|
/*
|
|
|
|
* Object ID is a fundamental type in Postgres.
|
|
|
|
*/
|
1996-12-10 08:03:43 +01:00
|
|
|
typedef unsigned int Oid;
|
|
|
|
|
2003-03-18 18:21:07 +01:00
|
|
|
#ifdef __cplusplus
|
|
|
|
#define InvalidOid (Oid(0))
|
|
|
|
#else
|
2001-02-10 03:31:31 +01:00
|
|
|
#define InvalidOid ((Oid) 0)
|
2003-03-18 18:21:07 +01:00
|
|
|
#endif
|
2001-02-10 03:31:31 +01:00
|
|
|
|
2000-12-22 22:36:09 +01:00
|
|
|
#define OID_MAX UINT_MAX
|
|
|
|
/* you will need to include <limits.h> to use the above #define */
|
|
|
|
|
2017-03-01 17:55:28 +01:00
|
|
|
#define atooid(x) ((Oid) strtoul((x), NULL, 10))
|
|
|
|
/* the above needs <stdlib.h> */
|
|
|
|
|
|
|
|
|
2012-10-08 03:52:07 +02:00
|
|
|
/* Define a signed 64-bit integer type for use in client API declarations. */
|
|
|
|
typedef PG_INT64_TYPE pg_int64;
|
|
|
|
|
2003-08-27 02:33:34 +02:00
|
|
|
/*
|
|
|
|
* 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'
|
2016-08-26 22:20:17 +02:00
|
|
|
#define PG_DIAG_SEVERITY_NONLOCALIZED 'V'
|
2003-08-27 02:33:34 +02:00
|
|
|
#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'
|
2004-03-21 23:29:11 +01:00
|
|
|
#define PG_DIAG_INTERNAL_POSITION 'p'
|
|
|
|
#define PG_DIAG_INTERNAL_QUERY 'q'
|
2003-08-27 02:33:34 +02:00
|
|
|
#define PG_DIAG_CONTEXT 'W'
|
Provide database object names as separate fields in error messages.
This patch addresses the problem that applications currently have to
extract object names from possibly-localized textual error messages,
if they want to know for example which index caused a UNIQUE_VIOLATION
failure. It adds new error message fields to the wire protocol, which
can carry the name of a table, table column, data type, or constraint
associated with the error. (Since the protocol spec has always instructed
clients to ignore unrecognized field types, this should not create any
compatibility problem.)
Support for providing these new fields has been added to just a limited set
of error reports (mainly, those in the "integrity constraint violation"
SQLSTATE class), but we will doubtless add them to more calls in future.
Pavel Stehule, reviewed and extensively revised by Peter Geoghegan, with
additional hacking by Tom Lane.
2013-01-29 23:06:26 +01:00
|
|
|
#define PG_DIAG_SCHEMA_NAME 's'
|
|
|
|
#define PG_DIAG_TABLE_NAME 't'
|
|
|
|
#define PG_DIAG_COLUMN_NAME 'c'
|
|
|
|
#define PG_DIAG_DATATYPE_NAME 'd'
|
|
|
|
#define PG_DIAG_CONSTRAINT_NAME 'n'
|
2003-08-27 02:33:34 +02:00
|
|
|
#define PG_DIAG_SOURCE_FILE 'F'
|
|
|
|
#define PG_DIAG_SOURCE_LINE 'L'
|
|
|
|
#define PG_DIAG_SOURCE_FUNCTION 'R'
|
|
|
|
|
2012-10-08 03:52:07 +02:00
|
|
|
#endif /* POSTGRES_EXT_H */
|