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
|
2001-03-22 05:01:46 +01:00
|
|
|
* in PostgreSQL *and* are visible to clients of frontend interface libraries.
|
2001-02-10 03:31:31 +01:00
|
|
|
* For example, the Oid type is part of the API of libpq and other libraries.
|
1996-12-10 08:03:43 +01:00
|
|
|
*
|
1997-09-07 07:04:48 +02:00
|
|
|
* Declarations which are specific to a particular interface should
|
2014-05-06 18:12:18 +02:00
|
|
|
* go in the header file for that interface (such as libpq-fe.h). This
|
1997-09-07 07:04:48 +02:00
|
|
|
* file is only for fundamental Postgres declarations.
|
1996-12-10 08:03:43 +01:00
|
|
|
*
|
1997-09-07 07:04:48 +02:00
|
|
|
* 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.
|
|
|
|
*
|
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;
|
|
|
|
|
2000-12-22 22:36:09 +01:00
|
|
|
|
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'
|
2004-08-29 07:07:03 +02:00
|
|
|
#define PG_DIAG_MESSAGE_PRIMARY 'M'
|
2003-08-27 02:33:34 +02:00
|
|
|
#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'
|
2004-08-29 07:07:03 +02:00
|
|
|
#define PG_DIAG_SOURCE_FUNCTION 'R'
|
2003-08-27 02:33:34 +02:00
|
|
|
|
Phase 2 of pgindent updates.
Change pg_bsd_indent to follow upstream rules for placement of comments
to the right of code, and remove pgindent hack that caused comments
following #endif to not obey the general rule.
Commit e3860ffa4dd0dad0dd9eea4be9cc1412373a8c89 wasn't actually using
the published version of pg_bsd_indent, but a hacked-up version that
tried to minimize the amount of movement of comments to the right of
code. The situation of interest is where such a comment has to be
moved to the right of its default placement at column 33 because there's
code there. BSD indent has always moved right in units of tab stops
in such cases --- but in the previous incarnation, indent was working
in 8-space tab stops, while now it knows we use 4-space tabs. So the
net result is that in about half the cases, such comments are placed
one tab stop left of before. This is better all around: it leaves
more room on the line for comment text, and it means that in such
cases the comment uniformly starts at the next 4-space tab stop after
the code, rather than sometimes one and sometimes two tabs after.
Also, ensure that comments following #endif are indented the same
as comments following other preprocessor commands such as #else.
That inconsistency turns out to have been self-inflicted damage
from a poorly-thought-through post-indent "fixup" in pgindent.
This patch is much less interesting than the first round of indent
changes, but also bulkier, so I thought it best to separate the effects.
Discussion: https://postgr.es/m/E1dAmxK-0006EE-1r@gemulon.postgresql.org
Discussion: https://postgr.es/m/30527.1495162840@sss.pgh.pa.us
2017-06-21 21:18:54 +02:00
|
|
|
#endif /* POSTGRES_EXT_H */
|