41 #define API_PROGRAM_NAME "CUBRID C API" 43 #define ER_SET_AND_RETURN(X) \ 45 if (X != NO_ERROR) { \ 65 size_t * outlen,
bool * isnull);
85 CI_RESULTSET * rs,
int *r);
88 void *addr,
size_t len,
size_t * outlen,
bool * isnull);
90 void *val,
size_t size);
94 CI_RESULTSET_METADATA * r);
100 CI_FETCH_POSITION pos);
107 CI_PMETA_INFO_TYPE type,
void *arg,
size_t size);
110 CI_BATCH_RESULT * br);
112 CI_BATCH_RESULT * br);
144 memset (err_info,
'\0',
sizeof (err_info));
147 err_info->
line = line;
207 tmp = err_info->
next;
274 bool is_prepared_batch;
279 for (i = 0; i < pstmt->
batch_count && batch_data; i++)
281 if (is_prepared_batch)
288 for (i = 0, val = batch_data->
data.
val; i < param_count; i++, val++)
302 batch_data = tmp->
next;
312 for (i = 0, val = pstmt->
param_val; i < param_count; i++, val++)
363 CI_RESULTSET_METADATA hrsmeta;
386 for (i = 0; i < rs_count; i++)
470 for (i = 0; i < pbrs->
rs_count; i++)
607 int stmt_idx, retval;
713 *offset = tpl_pos + 1;
1016 if (query_type ==
NULL)
1022 for (i = 1; i <
index; i++)
1024 query_type = query_type->
next;
1029 case CI_RMETA_INFO_COL_LABEL:
1033 data = (
char *) arg;
1041 if (data_size > size)
1047 *(data + data_size) =
'\0';
1051 case CI_RMETA_INFO_COL_NAME:
1055 data = (
char *) arg;
1063 if (data_size > size)
1068 memcpy (data, query_type->
name, data_size);
1069 *(data + data_size) =
'\0';
1073 case CI_RMETA_INFO_COL_TYPE:
1076 CI_TYPE xtype = CI_TYPE_NULL;
1080 *data = (int) xtype;
1083 case CI_RMETA_INFO_PRECISION:
1098 case CI_RMETA_INFO_SCALE:
1112 case CI_RMETA_INFO_TABLE_NAME:
1115 const char *class_name;
1117 data = (
char *) arg;
1125 data_size =
strlen (class_name);
1126 if (data_size > size)
1130 memcpy (data, class_name, data_size);
1131 *(data + data_size) =
'\0';
1135 if (class_name ==
NULL)
1141 case CI_RMETA_INFO_IS_AUTO_INCREMENT:
1167 case CI_RMETA_INFO_IS_NULLABLE:
1193 case CI_RMETA_INFO_IS_WRITABLE:
1223 CI_RESULTSET hresult;
1226 int statement_id, affected_row;
1234 if (statement_id < 0)
1251 return statement_id;
1271 affected_row = retval;
1283 rs_ptr->
result = db_q_result;
1356 CI_RESULTSET * rs,
int *r)
1360 CI_RESULTSET current_rs;
1396 for (i = 0; i < session->
dimension; i++)
1409 for (i = 0; i < session->
dimension; i++)
1439 int retval,
i, host_var_count;
1466 for (i = 0; i < session->
dimension; i++)
1470 if (statement_id < 0)
1475 return statement_id;
1487 for (i = 0, val = pstmt->
param_val; i < host_var_count; i++, val++)
1502 if (host_var_count != 0)
1534 void *addr,
size_t len,
size_t * outlen,
bool * isnull)
1564 dbval += (index - 1);
1594 for (i = 1; i <
index; i++)
1646 if (pterror !=
NULL)
1676 memset (err_info,
'\0',
sizeof (err_info));
1680 const char *err_msg;
1726 int retval,
i, affected_row, j;
1749 for (i = 0; i < session->
dimension; i++)
1751 CI_RESULTSET hresult;
1759 affected_row = retval;
1770 rs_ptr->
result = db_q_result;
1784 while (pnext !=
NULL)
1892 prmeta = stmt_rs_info->
rsmeta;
1939 CI_RESULTSET_METADATA hrmeta;
1943 if (prsmeta ==
NULL)
1998 query_result = prs->
result;
2030 assert (bh_interface && prs);
2095 for (i = 0; i < col_count && (query_type !=
NULL); i++)
2099 if (strcasecmp (name, query_type->
attr_name) == 0)
2106 query_type = query_type->
next;
2111 if (query_type ==
NULL)
2156 const char *att_name;
2191 for (i = 0; i <
index; i++)
2193 if (query_type ==
NULL)
2198 query_type = query_type->
next;
2204 if (att_name ==
NULL)
2216 retval =
obj_set (obj, att_name, val);
2234 int precision, scale;
2255 for (i = 0; i <
index; i++)
2257 if (query_type ==
NULL)
2262 query_type = query_type->
next;
2310 CI_PMETA_INFO_TYPE type,
void *arg,
size_t size)
2326 case CI_PMETA_INFO_MODE:
2329 value = (
int *) arg;
2334 case CI_PMETA_INFO_COL_TYPE:
2339 for (i = 1; i <
index; i++)
2358 case CI_PMETA_INFO_PRECISION:
2359 case CI_PMETA_INFO_SCALE:
2363 for (i = 1; i <
index; i++)
2384 case CI_PMETA_INFO_NULLABLE:
2427 for (i = 0, src_val = pstmt->
param_val, dest_val = batch_data->
data.
val; i < num_val; i++, src_val++, dest_val++)
2445 tmp->
next = batch_data;
2503 batch_data = batch_data->
next;
2507 for (i = 0; i < pstmt->
batch_count && batch_data; i++)
2513 batch_data = tmp->
next;
2563 if (session ==
NULL)
2579 session->
statements = parser_parse_binary (session->
parser, query_string, length);
2582 if (pterror !=
NULL)
2598 batch_data = batch_data->
next;
2613 if (statement_id < 0)
2622 batch_data = batch_data->
next;
2641 batch_data = batch_data->
next;
2646 for (i = 0; i < pstmt->
batch_count && batch_data; i++)
2652 batch_data = tmp->
next;
2674 char port_string[8];
2683 sprintf (port_string,
"%d", port);
2688 client_credential.
db_name = (
char *) volume;
2707 esm_load_esm_classes ();
2709 #if !defined(WINDOWS) 2710 #if defined(SA_MODE) && defined(LINUX) 2736 bool retain_lock =
false;
2737 int query_count = 0;
2750 while (pstmt !=
NULL)
2756 for (i = 0; i < query_count; i++)
2791 assert (bh_interface && pstmt);
2795 bool continue_work =
false;
2802 if (result_set_only ==
false)
2836 continue_work =
true;
2843 resptr = nextresptr;
2846 while (resptr !=
NULL);
2848 if (continue_work ==
false)
2867 int retval, param_count;
2869 CI_PARAMETER_METADATA hpmeta;
2871 assert (pstmt && outmeta);
2893 if (param_count > 0)
2895 ppmeta->
is_out_param = (
bool *) malloc (
sizeof (
bool) * param_count);
2938 CI_BATCH_RESULT hbrs;
2986 CI_BATCH_RESULT hbr;
3048 *opool = pconn->
opool;
3134 const char *user_name,
const char *password)
3138 char dbname_host[1024];
3142 retval =
au_login (user_name, password);
3151 memset (dbname_host,
'\0', 1024);
3152 sprintf (dbname_host,
"%s@%s", databasename, host);
3183 #if !defined(WINDOWS) 3229 pstmt->
pconn = pconn;
3246 int wait_msecs, autocommit, isol_lv;
3255 case CI_CONNECTION_OPTION_LOCK_TIMEOUT:
3256 if (size !=
sizeof (
int))
3260 memcpy (&wait_msecs, arg,
sizeof (
int));
3263 case CI_CONNECTION_OPTION_TRAN_ISOLATION_LV:
3264 if (size !=
sizeof (
int))
3268 memcpy (&isol_lv, arg,
sizeof (
int));
3275 case CI_CONNECTION_OPTION_AUTOCOMMIT:
3276 if (size !=
sizeof (
int))
3280 memcpy (&autocommit, arg,
sizeof (
int));
3283 case CI_CONNECTION_OPTION_CLIENT_VERSION:
3284 case CI_CONNECTION_OPTION_SERVER_VERSION:
3313 case CI_CONNECTION_OPTION_LOCK_TIMEOUT:
3314 if (size !=
sizeof (
int))
3319 intval = wait_msecs;
3320 memcpy (arg, &intval,
sizeof (
int));
3322 case CI_CONNECTION_OPTION_TRAN_ISOLATION_LV:
3323 if (size !=
sizeof (
int))
3328 intval = (int) isol_lv;
3329 memcpy (arg, &intval,
sizeof (
int));
3332 case CI_CONNECTION_OPTION_AUTOCOMMIT:
3333 if (size !=
sizeof (
int))
3338 memcpy (arg, &intval,
sizeof (
int));
3340 case CI_CONNECTION_OPTION_CLIENT_VERSION:
3346 memset (arg + size - 1,
'\0', 1);
3348 case CI_CONNECTION_OPTION_SERVER_VERSION:
3354 memset (arg + size - 1,
'\0', 1);
3495 tmp->
next = batch_data;
3509 int retval,
i, param_count;
3526 for (i = 0; i < param_count; i++)
3539 for (i = 0; i < param_count; i++)
3560 bool is_prepared_batch;
3577 if (is_prepared_batch)
3583 batch_data = tmp->
next;
3805 case CI_STATEMENT_OPTION_HOLD_CURSORS_OVER_COMMIT:
3809 case CI_STATEMENT_OPTION_UPDATABLE_RESULT:
3813 case CI_STATEMENT_OPTION_GET_GENERATED_KEYS:
3817 case CI_STATEMENT_OPTION_EXEC_CONTINUE_ON_ERROR:
3821 case CI_STATEMENT_OPTION_ASYNC_QUERY:
3825 case CI_STATEMENT_OPTION_LAZY_EXEC:
3855 case CI_STATEMENT_OPTION_HOLD_CURSORS_OVER_COMMIT:
3859 case CI_STATEMENT_OPTION_UPDATABLE_RESULT:
3860 memcpy (&data, arg,
sizeof (
int));
3864 case CI_STATEMENT_OPTION_GET_GENERATED_KEYS:
3868 case CI_STATEMENT_OPTION_ASYNC_QUERY:
3869 memcpy (&data, arg,
sizeof (
int));
3872 case CI_STATEMENT_OPTION_EXEC_CONTINUE_ON_ERROR:
3873 memcpy (&data, arg,
sizeof (
int));
3876 case CI_STATEMENT_OPTION_LAZY_EXEC:
3877 memcpy (&data, arg,
sizeof (
int));
4071 size_t * outlen,
bool * isnull)
4200 int affected_row, retval;
4213 *exist_result =
false;
4222 *exist_result =
true;
4449 err_info = err_info->
next;
4452 if (err_info ==
NULL)
4459 if (err_info->
line >= 0)
4461 *line = err_info->
line;
4464 if (err_info->
column >= 0)
4469 strncpy (err_msg, err_info->
err_msg, size);
#define ER_INTERFACE_NOT_PREPARED
int bh_root_unlock(int rrid)
CUBRID_API_FUNCTION_TABLE Cubrid_api_function_table
#define ER_INTERFACE_RESULTSET_CLOSED
static int api_rs_delete_row(API_RESULTSET *res)
int db_execute_statement_local(DB_SESSION *session, int stmt, DB_QUERY_RESULT **result)
#define ER_INTERFACE_IS_NOT_BATCH_STATEMENT
CI_BATCH_RESULT_INFO * rs_info
int(* bind_get_first_child)(BH_INTERFACE *ifs, BH_BIND *bind, BH_BIND **pchild)
PT_NODE * pt_get_errors(PARSER_CONTEXT *parser)
static int stmt_batch_alloc_and_bind_new_result(BH_INTERFACE *bh_interface, CI_STMT_STRUCTURE *pstmt, CI_BATCH_RESULT_STRUCTURE **out_pbrs, CI_BATCH_RESULT *outhbr)
static int api_rs_get_resultset_metadata(API_RESULTSET *res, API_RESULTSET_META **rimpl)
static API_RESULTSET_IFS * get_query_rs_ifs(void)
static int init_rmeta_structure(CI_RESULTSET_META_STRUCTURE *prmeta)
static int ci_create_connection_impl(CI_CONNECTION *conn)
static int pmeta_get_info_internal(BH_INTERFACE *bh_interface, CI_PARAM_META_STRUCTURE *ppmeta, int index, CI_PMETA_INFO_TYPE type, void *arg, size_t size)
#define HAS_RESULT(stmt_type)
#define ER_INTERFACE_NOT_EXECUTED
TP_DOMAIN * expected_domain
void(* destroy)(VALUE_BIND_TABLE *tbl)
int sysprm_set_force(const char *pname, const char *pvalue)
int(* bind_graft)(BH_INTERFACE *ifs, BH_BIND *bind, BH_BIND *on_bind)
int db_query_seek_tuple(DB_QUERY_RESULT *result, int offset, int seek_mode)
void tran_get_tran_settings(int *lock_wait_in_msecs, TRAN_ISOLATION *tran_isolation, bool *async_ws)
static int ci_stmt_execute_immediate_impl(COMMON_API_STRUCTURE *pst, char *sql, size_t len, CI_RESULTSET *rs, int *r)
PT_NODE * pt_node_next(const PT_NODE *node)
static int api_rs_fetch(API_RESULTSET *res, int offset, CI_FETCH_POSITION pos)
bool * param_value_is_set
int bh_root_lock(int rrid, BH_INTERFACE **bhifs)
CI_RESULTSET_STRUCTURE * rs
#define ER_INTERFACE_NOT_SUPPORTED_OPERATION
static void api_rs_destroy(API_RESULTSET *res)
static int stmt_bind_resultset_meta_handle(BH_INTERFACE *bh_interface, CI_STMT_STRUCTURE *pstmt, int stmt_idx, CI_RESULTSET_META_STRUCTURE **outmeta)
static int init_stmt_structure(CI_STMT_STRUCTURE *pstmt)
static int ci_stmt_clear_batch_impl(COMMON_API_STRUCTURE *pst)
int(* get_value_by_name)(VALUE_BIND_TABLE *tbl, const char *name, CI_TYPE type, void *addr, size_t len, size_t *outlen, bool *isnull)
int do_check_partitioned_class(DB_OBJECT *classop, int check_map, char *keyattr)
static void rs_meta_destroyf(BH_BIND *ptr)
int db_query_end(DB_QUERY_RESULT *result)
static int ci_stmt_set_option_impl(COMMON_API_STRUCTURE *pst, CI_STATEMENT_OPTION option, void *arg, size_t size)
CI_RESULTSET_META_STRUCTURE * rsmeta
static int stmt_exec_one_statement(BH_INTERFACE *bh_interface, int stmt_idx, CI_STMT_STRUCTURE *pstmt, CI_RESULTSET *rs, int *r)
#define ER_INTERFACE_RESULTSET_NOT_UPDATABLE
#define ER_INTERFACE_IS_BATCH_STATEMENT
#define ER_IT_EMPTY_STATEMENT
PARSER_CONTEXT * parser_create_parser(void)
void(* prev_sigfpe_handler)(int)
static int ci_stmt_execute_impl(COMMON_API_STRUCTURE *pst, CI_RESULTSET *rs, int *r)
int db_get_start_line(DB_SESSION *session, int stmt)
static int stmt_set_parameter_internal(BH_INTERFACE *bh_interface, CI_STMT_STRUCTURE *pstmt, int index, CI_TYPE type, void *val, size_t size)
static int ci_stmt_get_query_type_impl(COMMON_API_STRUCTURE *pst, CUBRID_STMT_TYPE *type)
SM_ATTRIBUTE * classobj_find_attribute(SM_CLASS *class_, const char *name, int class_attribute)
int bh_root_acquire(int *rrid, BH_ROOT_TYPE rt)
static API_RESULTSET_META_IFS * get_query_rmeta_ifs(void)
int jsp_jvm_is_loaded(void)
STMT_RESULT_INFO * rs_info
int(* reset)(VALUE_BIND_TABLE *tbl)
static int ci_stmt_get_resultset_impl(COMMON_API_STRUCTURE *pst, CI_RESULTSET *res)
#define ER_INTERFACE_NOT_ENOUGH_DATA_SIZE
#define ER_INTERFACE_NO_MORE_ERROR
int(* bind_get_next_sibling)(BH_INTERFACE *ifs, BH_BIND *bind, BH_BIND **psibling)
bool need_immediate_commit
static int ci_stmt_get_first_error_impl(COMMON_API_STRUCTURE *pst, int *line, int *col, int *errcode, char *err_msg, size_t size)
CI_CONN_STATUS conn_status
static void conn_destroyf(BH_BIND *ptr)
static int stmt_add_batch_param(CI_STMT_STRUCTURE *pstmt, DB_VALUE *val, int num_val)
#define ER_INTERFACE_IS_NOT_PREPARED_STATEMENT
CI_RESULTSET_META_STRUCTURE * prsmeta
DB_VALUE * host_variables
API_OBJECT_RESULTSET_POOL * opool
#define ER_UCI_TOO_FEW_HOST_VARS
#define ER_INTERFACE_HAS_NO_RESULT_SET
static int conn_end_tran(BH_INTERFACE *bh_interface, CI_CONN_STRUCTURE *pconn, bool commit)
#define ER_INTERFACE_ROW_IS_DELETED
static int ci_stmt_add_batch_query_impl(COMMON_API_STRUCTURE *pst, const char *sql, size_t len)
bool current_row_isdeleted
DB_SESSION_ERROR * db_get_next_error(DB_SESSION_ERROR *errors, int *line, int *col)
static int get_col_count(DB_QUERY_TYPE *query_type)
static int rs_get_index_by_name(void *impl, const char *name, int *ri)
bool exec_continue_on_error
static void batch_res_destroyf(BH_BIND *ptr)
DB_TYPE pt_type_enum_to_db(const PT_TYPE_ENUM t)
static int api_rs_get_value_by_name(API_RESULTSET *res, const char *name, CI_TYPE type, void *addr, size_t len, size_t *outlen, bool *isnull)
char cli_version[VERSION_LENGTH]
int boot_restart_client(BOOT_CLIENT_CREDENTIAL *client_credential)
#define DB_CONNECTION_STATUS_CONNECTED
int tran_reset_wait_times(int wait_in_msecs)
#define DB_CONNECT_ORDER_SEQ
static int ci_stmt_get_parameter_impl(COMMON_API_STRUCTURE *pst, int index, CI_TYPE type, void *addr, size_t len, size_t *outlen, bool *isnull)
db_client_type client_type
#define api_er_set(a, b, c, d)
static int conn_restart_client(CI_CONN_STRUCTURE *pconn, const char *program, int print_version, const char *volume, short port)
#define ER_INTERFACE_CANNOT_BATCH_EXECUTE
static int ci_conn_commit_impl(COMMON_API_STRUCTURE *pst)
int cursor_get_current_oid(CURSOR_ID *cursor_id_p, DB_VALUE *value_p)
static int api_rs_clear_updates(API_RESULTSET *res)
#define ER_INTERFACE_GENERIC
static int ci_stmt_get_option_impl(COMMON_API_STRUCTURE *pst, CI_STATEMENT_OPTION option, void *arg, size_t size)
DB_QUERY_TYPE * query_type
int db_type_to_type(DB_TYPE dt, CI_TYPE *xt)
int au_fetch_class(MOP op, SM_CLASS **class_ptr, AU_FETCHMODE fetchmode, DB_AUTH type)
static int ci_stmt_affected_rows_impl(COMMON_API_STRUCTURE *pst, int *out)
CI_PARAM_META_STRUCTURE * ppmeta
int(* bind_to_handle)(BH_INTERFACE *ifs, BH_BIND *bind, BIND_HANDLE *bh)
static int rs_init_domain(void *impl, int index, DB_VALUE *val)
static int ci_batch_res_get_error_impl(COMMON_API_STRUCTURE *pst, int index, int *err_code, char *err_msg, size_t buf_size)
int db_execute_and_keep_statement(DB_SESSION *session, int stmt_ndx, DB_QUERY_RESULT **result)
static int api_rmeta_get_count(API_RESULTSET_META *impl, int *count)
static int stmt_exec_batch_query_internal(BH_INTERFACE *bh_interface, CI_STMT_STRUCTURE *pstmt, CI_BATCH_RESULT *br)
static int ci_stmt_get_start_line_impl(COMMON_API_STRUCTURE *pst, int *line)
int tran_commit(bool retain_lock)
DB_MARKER * db_get_input_markers(DB_SESSION *session, int stmt)
static int res_fetch_internal(BH_INTERFACE *bh_interface, CI_RESULTSET_STRUCTURE *prs, int offset, CI_FETCH_POSITION pos)
static API_RESULTSET_META_IFS RMETA_IFS_
int api_object_resultset_pool_create(BH_INTERFACE *ifs, BIND_HANDLE conn, API_OBJECT_RESULTSET_POOL **rpool)
CI_CONN_STRUCTURE * pconn
static int ci_collection_new_impl(CI_CONNECTION conn, CI_COLLECTION *coll)
static int rs_set_db_value(void *impl, int index, DB_VALUE *val)
static int ci_stmt_get_next_error_impl(COMMON_API_STRUCTURE *pst, int *line, int *col, int *errcode, char *err_msg, size_t size)
const char * sm_get_ch_name(MOP op)
static int api_rs_apply_row(API_RESULTSET *res)
static int ci_stmt_add_batch_impl(COMMON_API_STRUCTURE *pst)
static int stmt_make_error_info(CI_STMT_STRUCTURE *pstmt, int statement_id)
struct db_query_type * next
static int ci_pmeta_get_count_impl(COMMON_API_STRUCTURE *pst, int *count)
void db_close_session_local(DB_SESSION *session)
#define ER_INTERFACE_IS_PREPARED_STATEMENT
DB_OBJECT * db_get_class(MOP obj)
CI_BATCH_DATA * batch_data
static int ci_conn_get_option_impl(COMMON_API_STRUCTURE *pst, CI_CONNECTION_OPTION option, void *arg, size_t size)
STMT_ERROR_INFO * err_info
static void rs_destroyf(BH_BIND *ptr)
static int stmt_reset_session_and_parse(CI_STMT_STRUCTURE *pstmt, const char *sql, size_t len)
static int create_resultset_value_table(int num_col, BIND_HANDLE conn, CI_RESULTSET_STRUCTURE *prs, VALUE_BIND_TABLE **value_table)
static int ci_stmt_execute_batch_impl(COMMON_API_STRUCTURE *pst, CI_BATCH_RESULT *br)
char * db_get_user_name(void)
CI_STMT_STATUS stmt_status
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
int(* bind_get_parent)(BH_INTERFACE *ifs, BH_BIND *bind, BH_BIND **pbind)
int pr_clear_value(DB_VALUE *value)
static int stmt_exec_prepared_batch_internal(BH_INTERFACE *bh_interface, CI_STMT_STRUCTURE *pstmt, CI_BATCH_RESULT *br)
struct db_domain_info::general_info general_info
#define ER_INTERFACE_END_OF_CURSOR
int tran_reset_isolation(TRAN_ISOLATION isolation, bool async_ws)
static int ci_conn_close_impl(COMMON_API_STRUCTURE *pst)
static int stmt_bind_pmeta_handle(BH_INTERFACE *bh_interface, CI_STMT_STRUCTURE *pstmt, CI_PARAM_META_STRUCTURE **outmeta)
static void error(const char *msg)
int db_get_statement_type(DB_SESSION *session, int stmt)
#define DB_DEFAULT_PRECISION
static int api_rs_update_value(API_RESULTSET *res, int index, CI_TYPE type, void *addr, size_t len)
static int stmt_release_children(BH_INTERFACE *bh_interface, CI_STMT_STRUCTURE *pstmt, bool resultset_only)
static int ci_stmt_prepare_impl(COMMON_API_STRUCTURE *pst, const char *sql, size_t len)
VALUE_BIND_TABLE_IFS * ifs
static int init_conn_structure(CI_CONN_STRUCTURE *pconn)
static int stmt_get_resultset_metadata_internal(BH_INTERFACE *bh_interface, CI_STMT_STRUCTURE *pstmt, CI_RESULTSET_METADATA *r)
static void stmt_destroyf(BH_BIND *ptr)
int pr_clone_value(const DB_VALUE *src, DB_VALUE *dest)
int obj_set(MOP op, const char *name, DB_VALUE *value)
void au_link_static_methods(void)
int ci_err_set(int error_code)
static int api_rmeta_get_info(API_RESULTSET_META *impl, int index, CI_RMETA_INFO_TYPE type, void *arg, size_t size)
static int ci_conn_connect_impl(COMMON_API_STRUCTURE *pst, const char *host, unsigned short port, const char *databasename, const char *user_name, const char *password)
int boot_shutdown_client(bool is_er_final)
int api_collection_create(BIND_HANDLE conn, API_COLLECTION **rc)
static int ci_conn_create_statement_impl(COMMON_API_STRUCTURE *pst, CI_STATEMENT *stmt)
static int ci_stmt_set_parameter_impl(COMMON_API_STRUCTURE *pst, int index, CI_TYPE type, void *val, size_t size)
bool current_row_isupdated
static void pmeta_destroyf(BH_BIND *ptr)
CI_CONN_OPT_STRUCTURE opt
CI_STMT_OPT_STRUCTURE opt
int db_push_values(DB_SESSION *session, int count, DB_VALUE *in_values)
#define TM_TRAN_ASYNC_WS()
static int stmt_add_batch_string(CI_STMT_STRUCTURE *pstmt, const char *sql, size_t len)
#define DB_CURSOR_SUCCESS
static int ci_stmt_register_out_parameter_impl(COMMON_API_STRUCTURE *pst, int index)
int create_db_value_bind_table(int nvalue, void *impl, int auto_apply, BIND_HANDLE conn_handle, int(*get_index_by_name)(void *, const char *, int *ri), int(*get_db_value)(void *, int, DB_VALUE *), int(*set_db_value)(void *, int, DB_VALUE *), int(*init_domain)(void *, int, DB_VALUE *), VALUE_BIND_TABLE **rtable)
int coerce_db_value_to_value(const DB_VALUE *dbval, BIND_HANDLE conn, CI_TYPE type, void *addr, size_t len, size_t *outlen, bool *isnull)
static int ci_stmt_get_resultset_metadata_impl(COMMON_API_STRUCTURE *pst, CI_RESULTSET_METADATA *r)
int(* get_value)(VALUE_BIND_TABLE *tbl, int index, CI_TYPE type, void *addr, size_t len, size_t *outlen, bool *isnull)
int(* set_value)(VALUE_BIND_TABLE *tbl, int index, CI_TYPE type, void *addr, size_t len)
DB_QUERY_TYPE * db_get_query_type_list(DB_SESSION *session, int stmt_ndx)
static int ci_batch_res_get_result_impl(COMMON_API_STRUCTURE *pst, int index, int *ret, int *nr)
#define ER_QPROC_INVALID_COLNAME
static int res_delete_row_internal(BH_INTERFACE *bh_interface, CI_RESULTSET_STRUCTURE *prs)
char srv_version[VERSION_LENGTH]
int au_login(const char *name, const char *password, bool ignore_dba_privilege)
void(* destroy)(API_OBJECT_RESULTSET_POOL *pool)
int(* apply_updates)(VALUE_BIND_TABLE *tbl)
#define ER_INTERFACE_PARAM_IS_NOT_SET
union ci_batch_data::_data data
static int init_pmeta_structure(CI_PARAM_META_STRUCTURE *ppmeta)
static int init_batch_rs_structure(CI_BATCH_RESULT_STRUCTURE *pbrs)
static int init_resultset_structure(CI_RESULTSET_STRUCTURE *prs)
static int stmt_prepare_internal(BH_INTERFACE *bh_interface, CI_STMT_STRUCTURE *pstmt, const char *sql, size_t len)
static int get_connection_opool(COMMON_API_STRUCTURE *pst, API_OBJECT_RESULTSET_POOL **opool)
static int stmt_exec_internal(BH_INTERFACE *bh_interface, CI_STMT_STRUCTURE *pstmt, CI_RESULTSET *rs, int *r)
#define ER_SET_AND_RETURN(X)
char * strdup(const char *str)
int(* destroy_handle)(BH_INTERFACE *ifs, BIND_HANDLE bh)
int(* alloc_handle)(BH_INTERFACE *ifs, BH_BIND *bind, BIND_HANDLE *bh)
static int stmt_batch_result_free(BH_INTERFACE *bh_interface, CI_STMT_STRUCTURE *pstmt)
static API_RESULTSET_IFS RS_IFS_
static int ci_pmeta_get_info_impl(COMMON_API_STRUCTURE *pst, int index, CI_PMETA_INFO_TYPE type, void *arg, size_t size)
void sigfpe_handler(int sig)
static int api_rs_fetch_tell(API_RESULTSET *res, int *offset)
#define ER_INTERFACE_NO_AVAILABLE_INFORMATION
static int ci_conn_set_option_impl(COMMON_API_STRUCTURE *pst, CI_CONNECTION_OPTION option, void *arg, size_t size)
static int stmt_remove_error_info(CI_STMT_STRUCTURE *pstmt)
int db_query_get_tuple_value(DB_QUERY_RESULT *result, int index, DB_VALUE *value)
VALUE_BIND_TABLE * value_table
int coerce_value_to_db_value(CI_TYPE type, void *addr, size_t len, DB_VALUE *dbval, bool domain_initialized)
struct db_object * class_mop
BH_INTERFACE * bh_interface
static int api_rs_get_value(API_RESULTSET *res, int index, CI_TYPE type, void *addr, size_t len, size_t *outlen, bool *is_null)
BH_INTERFACE * bh_interface
DB_TRAN_ISOLATION isolation
#define CHECK_PARTITION_NONE
static int stmt_get_parameter_internal(BH_INTERFACE *bh_interface, CI_STMT_STRUCTURE *pstmt, int index, CI_TYPE type, void *addr, size_t len, size_t *outlen, bool *isnull)
int db_compile_statement_local(DB_SESSION *session)
static int ci_conn_get_error_impl(COMMON_API_STRUCTURE *pst, int *err, char *msg, size_t size)
#define ER_INTERFACE_INVALID_ARGUMENT
static int stmt_exec_immediate_internal(BH_INTERFACE *bh_interface, CI_STMT_STRUCTURE *pstmt, char *sql, size_t len, CI_RESULTSET *rs, int *r)
static int ci_batch_res_query_count_impl(COMMON_API_STRUCTURE *pst, int *count)
static int ci_conn_rollback_impl(COMMON_API_STRUCTURE *pst)
#define ER_INTERFACE_INVALID_HANDLE
static int ci_stmt_next_result_impl(COMMON_API_STRUCTURE *pst, bool *exist_result)
static int rs_get_db_value(void *impl, int index, DB_VALUE *val)
DB_SESSION_ERROR * db_get_errors(DB_SESSION *session)
#define ER_INTERFACE_CANNOT_CLEAR_BATCH
SIGNAL_HANDLER_FUNCTION os_set_signal_handler(const int sig_no, SIGNAL_HANDLER_FUNCTION sig_handler)
#define DB_CONNECTION_STATUS_NOT_CONNECTED
static int ci_stmt_get_parameter_metadata_impl(COMMON_API_STRUCTURE *pst, CI_PARAMETER_METADATA *r)
struct ci_batch_data * next
int db_value_domain_init(DB_VALUE *value, const DB_TYPE type, const int precision, const int scale)
#define ER_INTERFACE_NO_MORE_MEMORY
union db_query_result::@47 res