1
#ifndef _ECPG_LIB_EXTERN_H
2
#define _ECPG_LIB_EXTERN_H
4
#include "postgres_fe.h"
10
ECPG_COMPAT_PGSQL = 0, ECPG_COMPAT_INFORMIX, ECPG_COMPAT_INFORMIX_SE
13
#define INFORMIX_MODE(X) ((X) == ECPG_COMPAT_INFORMIX || (X) == ECPG_COMPAT_INFORMIX_SE)
17
ECPG_ARRAY_NOT_SET, ECPG_ARRAY_ARRAY, ECPG_ARRAY_VECTOR, ECPG_ARRAY_NONE
20
/* Here are some methods used by the lib. */
22
/* Returns a pointer to a string containing a simple type name. */
23
void ECPGadd_mem(void *ptr, int lineno);
25
bool ECPGget_data(const PGresult *, int, int, int, enum ECPGttype type,
26
enum ECPGttype, char *, char *, long, long, long,
27
enum ARRAY_TYPE, enum COMPAT_MODE, bool);
28
struct connection *ECPGget_connection(const char *);
29
char *ECPGalloc(long, int);
30
char *ECPGrealloc(void *, long, int);
31
void ECPGfree(void *);
32
bool ECPGinit(const struct connection *, const char *, const int);
33
char *ECPGstrdup(const char *, int);
34
const char *ECPGtype_name(enum ECPGttype);
35
unsigned int ECPGDynamicType(Oid);
36
void ECPGfree_auto_mem(void);
37
void ECPGclear_auto_mem(void);
39
struct descriptor *ecpggetdescp(int, char *);
41
/* A generic varchar type. */
42
struct ECPGgeneric_varchar
49
* type information cache
52
struct ECPGtype_information_cache
54
struct ECPGtype_information_cache *next;
59
/* structure to store one statement */
64
struct connection *connection;
65
enum COMPAT_MODE compat;
67
struct variable *inlist;
68
struct variable *outlist;
71
/* structure to store connections */
78
struct ECPGtype_information_cache *cache_head;
79
struct connection *next;
82
/* structure to store descriptors */
87
struct descriptor *next;
89
struct descriptor_item *items;
92
extern struct descriptor *all_descriptors;
94
struct descriptor_item
103
struct descriptor_item *next;
114
enum ECPGttype ind_type;
117
long ind_varcharsize;
120
struct variable *next;
123
PGresult **ECPGdescriptor_lvalue(int line, const char *descriptor);
125
bool ECPGstore_result(const PGresult *results, int act_field,
126
const struct statement * stmt, struct variable * var);
127
bool ECPGstore_input(const int, const bool, const struct variable *, const char **, bool *);
128
#if defined(__GNUC__) && (defined (__powerpc__) || defined(__AMD64__))
129
// work around a gcc/ABI bug with va_lists on ppc+amd64
130
void ECPGget_variable(va_list, enum ECPGttype, struct variable *, bool);
132
void ECPGget_variable(va_list *, enum ECPGttype, struct variable *, bool);
135
/* SQLSTATE values generated or processed by ecpglib (intentionally
136
* not exported -- users should refer to the codes directly) */
138
#define ECPG_SQLSTATE_NO_DATA "02000"
139
#define ECPG_SQLSTATE_USING_CLAUSE_DOES_NOT_MATCH_PARAMETERS "07001"
140
#define ECPG_SQLSTATE_USING_CLAUSE_DOES_NOT_MATCH_TARGETS "07002"
141
#define ECPG_SQLSTATE_RESTRICTED_DATA_TYPE_ATTRIBUTE_VIOLATION "07006"
142
#define ECPG_SQLSTATE_INVALID_DESCRIPTOR_INDEX "07009"
143
#define ECPG_SQLSTATE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION "08001"
144
#define ECPG_SQLSTATE_CONNECTION_DOES_NOT_EXIST "08003"
145
#define ECPG_SQLSTATE_TRANSACTION_RESOLUTION_UNKNOWN "08007"
146
#define ECPG_SQLSTATE_CARDINALITY_VIOLATION "21000"
147
#define ECPG_SQLSTATE_NULL_VALUE_NO_INDICATOR_PARAMETER "22002"
148
#define ECPG_SQLSTATE_ACTIVE_SQL_TRANSACTION "25001"
149
#define ECPG_SQLSTATE_NO_ACTIVE_SQL_TRANSACTION "25P01"
150
#define ECPG_SQLSTATE_INVALID_SQL_STATEMENT_NAME "26000"
151
#define ECPG_SQLSTATE_INVALID_SQL_DESCRIPTOR_NAME "33000"
152
#define ECPG_SQLSTATE_INVALID_CURSOR_NAME "34000"
153
#define ECPG_SQLSTATE_SYNTAX_ERROR "42601"
154
#define ECPG_SQLSTATE_DATATYPE_MISMATCH "42804"
155
#define ECPG_SQLSTATE_DUPLICATE_CURSOR "42P03"
157
/* implementation-defined internal errors of ecpg */
158
#define ECPG_SQLSTATE_ECPG_INTERNAL_ERROR "YE000"
159
#define ECPG_SQLSTATE_ECPG_OUT_OF_MEMORY "YE001"
161
#endif /* _ECPG_LIB_EXTERN_H */