3#ifndef _ECPG_ECPGLIB_EXTERN_H
4#define _ECPG_ECPGLIB_EXTERN_H
6#include "ecpg_config.h"
24#define INFORMIX_MODE(X) ((X) == ECPG_COMPAT_INFORMIX || (X) == ECPG_COMPAT_INFORMIX_SE)
25#define ORACLE_MODE(X) ((X) == ECPG_COMPAT_ORACLE)
32#define ECPG_IS_ARRAY(X) ((X) == ECPG_ARRAY_ARRAY || (X) == ECPG_ARRAY_VECTOR)
166 enum ECPGttype,
char *,
char *,
long,
long,
long,
176 const char *connection_name,
194 char **tobeinserted_p,
bool quote);
199 const char *query, va_list
args,
213void ecpg_raise(
int line,
int code,
const char *sqlstate,
const char *
str);
219 const
int compat,
char **
name, const
char *query);
239#define ecpg_gettext(x) (x)
245#define ECPG_SQLSTATE_NO_DATA "02000"
246#define ECPG_SQLSTATE_USING_CLAUSE_DOES_NOT_MATCH_PARAMETERS "07001"
247#define ECPG_SQLSTATE_USING_CLAUSE_DOES_NOT_MATCH_TARGETS "07002"
248#define ECPG_SQLSTATE_RESTRICTED_DATA_TYPE_ATTRIBUTE_VIOLATION "07006"
249#define ECPG_SQLSTATE_INVALID_DESCRIPTOR_INDEX "07009"
250#define ECPG_SQLSTATE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION "08001"
251#define ECPG_SQLSTATE_CONNECTION_DOES_NOT_EXIST "08003"
252#define ECPG_SQLSTATE_TRANSACTION_RESOLUTION_UNKNOWN "08007"
253#define ECPG_SQLSTATE_CARDINALITY_VIOLATION "21000"
254#define ECPG_SQLSTATE_NULL_VALUE_NO_INDICATOR_PARAMETER "22002"
255#define ECPG_SQLSTATE_ACTIVE_SQL_TRANSACTION "25001"
256#define ECPG_SQLSTATE_NO_ACTIVE_SQL_TRANSACTION "25P01"
257#define ECPG_SQLSTATE_INVALID_SQL_STATEMENT_NAME "26000"
258#define ECPG_SQLSTATE_INVALID_SQL_DESCRIPTOR_NAME "33000"
259#define ECPG_SQLSTATE_INVALID_CURSOR_NAME "34000"
260#define ECPG_SQLSTATE_SYNTAX_ERROR "42601"
261#define ECPG_SQLSTATE_DATATYPE_MISMATCH "42804"
262#define ECPG_SQLSTATE_DUPLICATE_CURSOR "42P03"
265#define ECPG_SQLSTATE_ECPG_INTERNAL_ERROR "YE000"
266#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
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)
void ecpg_pthreads_init(void)
struct descriptor * ecpg_find_desc(int line, const char *name)
@ 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)
char * ecpg_alloc(long size, int lineno)
void ecpg_free_params(struct statement *stmt, bool print)
struct sqlda_struct * ecpg_build_native_sqlda(int line, PGresult *res, int row, enum COMPAT_MODE compat)
bool ecpg_add_mem(void *ptr, int lineno)
char * ecpg_auto_alloc(long size, int lineno)
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)
struct sqlda_compat * ecpg_build_compat_sqlda(int line, PGresult *res, int row, enum COMPAT_MODE compat)
char * ecpg_prepared(const char *name, struct connection *con)
void ecpg_set_compat_sqlda(int lineno, struct sqlda_compat **_sqlda, const PGresult *res, int row, enum COMPAT_MODE compat)
char * ecpg_realloc(void *ptr, long size, int lineno)
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)
const char * ecpg_type_name(enum ECPGttype typ)
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)
struct prepared_statement * ecpg_find_prepared_statement(const char *name, struct connection *con, struct prepared_statement **prev_)
struct connection * ecpg_get_connection(const char *connection_name)
void ecpg_init_sqlca(struct sqlca_t *sqlca)
bool ecpg_autostart_transaction(struct statement *stmt)
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)
void ecpg_raise(int line, int code, const char *sqlstate, const char *str)
bool ecpg_internal_regression_mode
char * ecpg_strdup(const char *string, int lineno)
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