3 #ifndef _ECPG_ECPGLIB_EXTERN_H
4 #define _ECPG_ECPGLIB_EXTERN_H
6 #include "ecpg_config.h"
16 #ifdef LOCALE_T_IN_XLOCALE
27 #define INFORMIX_MODE(X) ((X) == ECPG_COMPAT_INFORMIX || (X) == ECPG_COMPAT_INFORMIX_SE)
28 #define ORACLE_MODE(X) ((X) == ECPG_COMPAT_ORACLE)
35 #define ECPG_IS_ARRAY(X) ((X) == ECPG_ARRAY_ARRAY || (X) == ECPG_ARRAY_VECTOR)
83 #ifdef HAVE__CONFIGTHREADLOCALE
169 enum ECPGttype,
char *,
char *,
long,
long,
long,
179 const char *connection_name,
197 char **tobeinserted_p,
bool quote);
202 const char *query, va_list
args,
216 void ecpg_raise(
int line,
int code,
const char *sqlstate,
const char *
str);
222 const
int compat,
char **
name, const
char *query);
242 #define ecpg_gettext(x) (x)
248 #define ECPG_SQLSTATE_NO_DATA "02000"
249 #define ECPG_SQLSTATE_USING_CLAUSE_DOES_NOT_MATCH_PARAMETERS "07001"
250 #define ECPG_SQLSTATE_USING_CLAUSE_DOES_NOT_MATCH_TARGETS "07002"
251 #define ECPG_SQLSTATE_RESTRICTED_DATA_TYPE_ATTRIBUTE_VIOLATION "07006"
252 #define ECPG_SQLSTATE_INVALID_DESCRIPTOR_INDEX "07009"
253 #define ECPG_SQLSTATE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION "08001"
254 #define ECPG_SQLSTATE_CONNECTION_DOES_NOT_EXIST "08003"
255 #define ECPG_SQLSTATE_TRANSACTION_RESOLUTION_UNKNOWN "08007"
256 #define ECPG_SQLSTATE_CARDINALITY_VIOLATION "21000"
257 #define ECPG_SQLSTATE_NULL_VALUE_NO_INDICATOR_PARAMETER "22002"
258 #define ECPG_SQLSTATE_ACTIVE_SQL_TRANSACTION "25001"
259 #define ECPG_SQLSTATE_NO_ACTIVE_SQL_TRANSACTION "25P01"
260 #define ECPG_SQLSTATE_INVALID_SQL_STATEMENT_NAME "26000"
261 #define ECPG_SQLSTATE_INVALID_SQL_DESCRIPTOR_NAME "33000"
262 #define ECPG_SQLSTATE_INVALID_CURSOR_NAME "34000"
263 #define ECPG_SQLSTATE_SYNTAX_ERROR "42601"
264 #define ECPG_SQLSTATE_DATATYPE_MISMATCH "42804"
265 #define ECPG_SQLSTATE_DUPLICATE_CURSOR "42P03"
268 #define ECPG_SQLSTATE_ECPG_INTERNAL_ERROR "YE000"
269 #define ECPG_SQLSTATE_ECPG_OUT_OF_MEMORY "YE001"
void print(const void *obj)
#define pg_attribute_format_arg(a)
#define pg_attribute_printf(f, a)
#define FLEXIBLE_ARRAY_MEMBER
static void PGresult * res
unsigned ecpg_hex_enc_len(unsigned srclen)
bool ecpg_build_params(struct statement *stmt)
bool ecpg_store_result(const PGresult *results, int act_field, const struct statement *stmt, struct variable *var)
bool ecpg_check_PQresult(PGresult *results, int lineno, PGconn *connection, enum COMPAT_MODE compat)
bool ecpg_deallocate_all_conn(int lineno, enum COMPAT_MODE c, struct connection *con)
unsigned ecpg_hex_dec_len(unsigned srclen)
struct sqlda_struct * ecpg_build_native_sqlda(int line, PGresult *res, int row, enum COMPAT_MODE compat)
void ecpg_pthreads_init(void)
char * ecpg_auto_alloc(long size, int lineno)
@ ECPG_COMPAT_INFORMIX_SE
bool ecpg_get_data(const PGresult *, int, int, int, enum ECPGttype type, enum ECPGttype, char *, char *, long, long, long, enum ARRAY_TYPE, enum COMPAT_MODE, bool)
bool ecpg_execute(struct statement *stmt)
void ecpg_free_params(struct statement *stmt, bool print)
bool ecpg_add_mem(void *ptr, int lineno)
const char * ecpg_type_name(enum ECPGttype typ)
struct prepared_statement * ecpg_find_prepared_statement(const char *name, struct connection *con, struct prepared_statement **prev_)
bool ecpg_register_prepared_stmt(struct statement *stmt)
bool ecpg_store_input(const int lineno, const bool force_indicator, const struct variable *var, char **tobeinserted_p, bool quote)
void ecpg_log(const char *format,...) pg_attribute_printf(1
unsigned ecpg_hex_encode(const char *src, unsigned len, char *dst)
void bool ecpg_auto_prepare(int lineno, const char *connection_name, const int compat, char **name, const char *query)
void ecpg_clear_auto_mem(void)
bool ecpg_init(const struct connection *con, const char *connection_name, const int lineno)
void ecpg_do_epilogue(struct statement *stmt)
char * ecpg_alloc(long size, int lineno)
struct connection * ecpg_get_connection(const char *connection_name)
void ecpg_set_compat_sqlda(int lineno, struct sqlda_compat **_sqlda, const PGresult *res, int row, enum COMPAT_MODE compat)
bool ecpg_do(const int lineno, const int compat, const int force_indicator, const char *connection_name, const bool questionmarks, const int st, const char *query, va_list args)
char * ecpg_strdup(const char *string, int lineno)
bool ecpg_do_prologue(int lineno, const int compat, const int force_indicator, const char *connection_name, const bool questionmarks, enum ECPG_statement_type statement_type, const char *query, va_list args, struct statement **stmt_out)
bool ecpg_process_output(struct statement *stmt, bool clear_result)
int sqlda_dynamic_type(Oid type, enum COMPAT_MODE compat)
void ecpg_init_sqlca(struct sqlca_t *sqlca)
bool ecpg_autostart_transaction(struct statement *stmt)
char * ecpg_prepared(const char *name, struct connection *con)
void ecpg_set_native_sqlda(int lineno, struct sqlda_struct **_sqlda, const PGresult *res, int row, enum COMPAT_MODE compat)
int ecpg_dynamic_type(Oid type)
char * ecpg_realloc(void *ptr, long size, int lineno)
void ecpg_raise(int line, int code, const char *sqlstate, const char *str)
struct sqlda_compat * ecpg_build_compat_sqlda(int line, PGresult *res, int row, enum COMPAT_MODE compat)
bool ecpg_internal_regression_mode
struct descriptor * ecpg_find_desc(int line, const char *name)
void ecpg_free(void *ptr)
void ecpg_raise_backend(int line, PGresult *result, PGconn *conn, int compat)
char arr[FLEXIBLE_ARRAY_MEMBER]
char arr[FLEXIBLE_ARRAY_MEMBER]
struct ECPGtype_information_cache * cache_head
struct prepared_statement * prep_stmts
struct descriptor_item * next
struct descriptor_item * items
struct prepared_statement * next
struct variable * outlist
struct connection * connection
enum ECPG_statement_type statement_type