67 int proxy_wait_timeout_sec;
68 int query_timeout_sec;
70 query_timeout_sec = ceil ((
double) query_timeout / 1000);
73 if (proxy_wait_timeout_sec == 0 || query_timeout_sec == 0)
75 ctx_p->
wait_timeout = proxy_wait_timeout_sec + query_timeout_sec;
77 else if (proxy_wait_timeout_sec < query_timeout_sec)
98 error_ind = (int)
ntohl (*(
int *) data);
117 error_code = (int)
ntohl (*(
int *) data);
133 if (cas_io_p ==
NULL)
136 "Failed to allocate CAS. " "(shard_id:%d, cas_id:%d, context id:%d, context uid:%d).", ctx_p->
shard_id,
213 #if defined(ENABLE_UNUSED_FUNCTION) 219 int srv_h_id, cas_srv_h_id;
227 if (cas_io_p ==
NULL)
230 "Failed to allocate CAS. " "(shard_id:%d, cas_id:%d, context id:%d, context uid:%d).", ctx_p->
shard_id,
255 if (cas_srv_h_id <= 0)
304 if (cli_io_p ==
NULL)
336 if (client_info_p !=
NULL)
380 char *prepare_resp =
NULL;
384 if (prepare_resp ==
NULL)
419 if (prepare_resp !=
NULL)
441 int shard_id, key_index, range_index;
444 if (first_hint_p ==
NULL)
462 if (shard_stat_p ==
NULL)
465 "Failed to update stats. " "Invalid shm shard stats. (hint_type:%s, proxy_id:%d, shard_id:%d).",
466 "HT_KEY", proxy_info_p->
proxy_id, shard_id);
478 if (key_stat_p ==
NULL)
481 "Failed to update stats. " 482 "Invalid shm shard key stats. (hint_type:%s, proxy_id:%d, key_index:%d).",
"HT_KEY",
503 shard_id = (int) integer;
509 "Failed to update stats. " "Invalid shard id. (hint_type:%s, shard_id:%d).",
"HT_ID",
515 if (shard_stat_p ==
NULL)
518 "Failed to update stats. " 519 "Invalid shm shard stats. (hint_type:%s, proxy_id:%d, shard_id:%d).",
"HT_ID",
560 if (shard_stat_p ==
NULL)
576 int compare_flag = 0;
577 int shard_id = -1, next_shard_id = -1;
628 shard_id = (int) integer;
632 next_shard_id = (int) integer;
639 "Unable to get shard id. shard id is not integer type. (hint_type:%s, type:%d).",
"HT_ID",
652 if (compare_flag > 0 && shard_id != next_shard_id)
655 shard_id, next_shard_id);
663 *range_p_out = range_p;
672 int hint_position, num_bind;
673 int type_idx, val_idx;
677 void *net_type, *net_value;
682 int shard_key_id = 0;
683 const char *key_column;
704 if (shard_key_id < 0)
723 type_idx = 2 * hint_position;
724 val_idx = 2 * hint_position + 1;
725 net_type = argv[type_idx];
726 net_value = argv[val_idx];
733 case CCI_U_TYPE_UINT:
744 shard_key_id = (*fn_get_shard_key) (key_column, (
T_SHARD_U_TYPE) type, &i_val,
sizeof (
int));
747 case CCI_U_TYPE_SHORT:
748 case CCI_U_TYPE_USHORT:
759 shard_key_id = (*fn_get_shard_key) (key_column, (
T_SHARD_U_TYPE) type, &s_val,
sizeof (
short));
763 case CCI_U_TYPE_BIGINT:
764 case CCI_U_TYPE_UBIGINT:
775 shard_key_id = (*fn_get_shard_key) (key_column, (
T_SHARD_U_TYPE) type, &l_val,
sizeof (INT64));
779 case CCI_U_TYPE_ENUM:
780 case CCI_U_TYPE_STRING:
785 if (s_val ==
NULL || s_len == 0)
804 if (shard_key_id < 0)
820 range_p->
shard_id, key_column, shard_key_id);
898 char *organized_sql_stmt =
NULL;
903 char auto_commit_mode;
918 bool has_shard_val_hint =
false;
919 bool use_temp_statement =
false;
960 for (i = 3; i <
argc; i++)
962 int deferred_close_handle;
970 auto_commit_mode =
FALSE;
973 PROXY_DEBUG_LOG (
"Process requested prepare sql statement. " "(sql_stmt:[%s]). context(%s).",
978 if (organized_sql_stmt ==
NULL)
989 PROXY_DEBUG_LOG (
"Rewrite sql statement. " "(organized_sql_stmt:[%s]). context(%s).",
1019 use_temp_statement =
true;
1027 "Failed to send prepared statment to client. " "(error:%d). context(%s).", error,
1055 goto relay_prepare_request;
1068 if (waiter_p ==
NULL)
1097 if (use_temp_statement)
1117 PROXY_DEBUG_LOG (
"Create new sql statement. " "(index:%d). statement(%s). context(%s).", stmt_p->
index,
1160 argv[0], argv[1], organized_sql_stmt);
1169 relay_prepare_request:
1179 PROXY_DEBUG_LOG (
"Unexpected statement status. (status=%d). statement(%s). context(%s).", stmt_p->
status,
1216 if (cas_io_p ==
NULL)
1272 if (organized_sql_stmt && organized_sql_stmt != sql_stmt)
1281 if (organized_sql_stmt && organized_sql_stmt != sql_stmt)
1307 int bind_value_index = 9;
1323 query_timeout *= 1000;
1341 char *prepare_request =
NULL;
1343 int shard_id, next_shard_id;
1346 int bind_value_size;
1356 char func_code = _func_code;
1373 argc_mod_2 = bind_value_index % 2;
1375 if ((argc < bind_value_index) || (argc % 2 != argc_mod_2))
1410 if (hint_type <= HT_INVAL || hint_type >
HT_EOF)
1424 shard_id =
proxy_get_shard_id (stmt_p, (
void **) (argv + bind_value_index), &range_p);
1450 for (i = bind_value_index + bind_value_size; i <
argc; i += bind_value_size)
1454 if (shard_id != next_shard_id)
1457 "Shard id is different. " "(first_shard_id:%d, next_shard_id:%d). context(%s).", shard_id,
1474 "Shard id couldn't be changed in a transaction. " 1475 "(prev_shard_id:%d, curr_shard_id:%d). context(%s).", ctx_p->
shard_id, shard_id,
1495 if (cas_io_p ==
NULL)
1532 if (cas_srv_h_id < 0)
1539 if (prepare_request ==
NULL)
1549 if (new_event_p ==
NULL)
1554 prepare_request =
NULL;
1600 new_event_p = event_p;
1612 if (event_p && event_p != new_event_p)
1638 if (event_p == new_event_p)
1644 event_p = new_event_p =
NULL;
1661 if (prepare_request)
1686 goto free_and_return;
1690 if (client_info_p ==
NULL)
1693 "Unable to find cilent info in shared memory. " "(context id:%d, context uid:%d)", ctx_p->
cid,
1697 goto free_and_return;
1701 if (param_name == CCI_PARAM_ISOLATION_LEVEL)
1703 int isolation_level = 0;
1709 "Invalid isolation level. (isolation:%d). " "(context id:%d, context uid:%d)", isolation_level,
1713 goto free_and_return;
1718 else if (param_name == CCI_PARAM_LOCK_TIMEOUT)
1720 int lock_timeout = -1;
1735 if (new_event_p ==
NULL)
1751 if (event_p !=
NULL)
1761 if (event_p !=
NULL)
1783 goto free_and_return;
1787 if (client_info_p ==
NULL)
1790 "Unable to find cilent info in shared memory. " "(context id:%d, context uid:%d)", ctx_p->
cid,
1794 goto free_and_return;
1801 if (param_name == CCI_PARAM_ISOLATION_LEVEL)
1807 else if (param_name == CCI_PARAM_LOCK_TIMEOUT)
1814 if (new_event_p ==
NULL)
1830 if (event_p !=
NULL)
1840 if (event_p !=
NULL)
1865 if (cas_io_p ==
NULL)
1882 if (cas_srv_h_id < 0)
1885 "Failed to close requested handle. " "cannot find cas server handle. context(%s).",
1946 int srv_h_id, cas_srv_h_id;
1969 if (cas_io_p ==
NULL)
1992 if (cas_srv_h_id <= 0)
2036 int srv_h_id, cas_srv_h_id;
2059 if (cas_io_p ==
NULL)
2080 if (cas_srv_h_id <= 0)
2198 if ((shard_id < 0 || shard_id >= proxy_info_p->
max_shard)
2257 char *request_p =
NULL;
2258 char *response_p =
NULL;
2270 if (new_event_p ==
NULL)
2417 char *db_version =
NULL;
2418 char auto_commit_mode;
2482 if (cas_io_p ==
NULL)
2499 if (cas_srv_h_id < 0)
2559 int bind_value_index = 2;
2620 int prepare_argc_count = 0;
2624 char *sql_stmt =
NULL;
2629 char auto_commit_mode =
FALSE;
2677 for (i = 4; i < prepare_argc_count + 1; i++)
2679 int deferred_close_handle;
2693 query_timeout *= 1000;
2701 PROXY_DEBUG_LOG (
"Process requested prepare and execute sql statement. " "(sql_stmt:[%s]). context(%s).",
2757 if (hint_type <= HT_INVAL || hint_type >
HT_EOF)
2794 "Shard id couldn't be changed in a transaction. " 2795 "(prev_shard_id:%d, curr_shard_id:%d). context(%s).", ctx_p->
shard_id, shard_id,
2856 if (cas_io_p ==
NULL)
2968 PROXY_DEBUG_LOG (
"Free context on client io write. " "context will be terminated. context(%s).",
2979 PROXY_DEBUG_LOG (
"Free context on end tran. " "context will be terminated. context(%s).",
3038 int error, error_ind, error_code;
3172 if (event_p ==
NULL)
3182 "Failed to response to the client. " "(error=%d). context(%s). evnet(%s).", error,
3195 srv_h_id = error_ind;
3200 "Failed to save server handle " "id to the statement " "(srv_h_id:%d). statement(%s). context(%s). ",
3247 srv_h_id_pos = (
char *) (response_p + srv_h_id_offset);
3321 if (is_in_tran ==
false)
3435 if (is_in_tran ==
false)
3469 int error, error_ind, error_code;
3537 srv_h_id = error_ind;
3542 "Failed to save server handle " "id to the statement " "(srv_h_id:%d). statement(%s). context(%s). ",
3551 srv_h_id_pos = (
char *) (response_p + srv_h_id_offset);
3586 int error, error_ind, error_code;
3606 if (is_in_tran ==
false)
3663 srv_h_id = error_ind;
3668 "Failed to save server handle " "id to the statement " "(srv_h_id:%d). statement(%s). context(%s). ",
3677 srv_h_id_pos = (
char *) (response_p + srv_h_id_offset);
3744 char *response_p =
NULL;
3745 char *driver_info =
NULL;
3747 struct timeval client_start_time;
3750 gettimeofday (&client_start_time,
NULL);
3787 if (new_event_p ==
NULL)
3921 int new_error_code = 0;
3946 if (r1_len != r2_len)
3951 return (memcmp (r1, r2, r1_len - ignore_size) != 0) ?
true :
false;
int proxy_io_set_established_by_ctx(T_PROXY_CONTEXT *ctx_p)
T_PROXY_EVENT * proxy_event_new_with_req(char *driver_info, unsigned int type, int from, T_PROXY_EVENT_FUNC req_func)
int fn_proxy_client_not_supported(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
enum sp_hint_type SP_HINT_TYPE
int(* T_PROXY_EVENT_FUNC)(char *driver_info, char **buffer)
int fn_proxy_client_con_close(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
T_CONTEXT_STMT * proxy_context_add_stmt(T_PROXY_CONTEXT *ctx_p, T_SHARD_STMT *stmt_p)
void proxy_set_force_out_tran(char *msg)
int fn_proxy_client_set_db_parameter(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
static int proxy_get_shard_id(T_SHARD_STMT *stmt_p, void **argv, T_SHARD_KEY_RANGE **range_p_out)
void proxy_event_free(T_PROXY_EVENT *event_p)
int proxy_io_make_shard_info(char *driver_info, char **buffer)
int fn_proxy_client_check_cas(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
void proxy_event_set_buffer(T_PROXY_EVENT *event_p, char *data, unsigned int size)
int fn_proxy_cas_check_cas(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p)
int proxy_send_request_to_cas(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int func_code)
char * proxy_str_cas_io(T_CAS_IO *cas_io_p)
INT64 num_no_hint_queries_requested
#define PROXY_DEBUG_LOG(fmt, args...)
#define CAS_PROTO_MAKE_VER(VER)
unsigned int htonl(unsigned int from)
T_CLIENT_IO * proxy_client_io_find_by_ctx(int client_id, int ctx_cid, unsigned int ctx_uid)
INT64 num_hint_id_queries_processed
int fn_proxy_client_get_db_parameter(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
int proxy_cas_io_write(T_CAS_IO *cas_io_p, T_PROXY_EVENT *event_p)
int fn_proxy_cas_execute_array(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p)
static int proxy_send_prepared_stmt_to_client(T_PROXY_CONTEXT *ctx_p, T_SHARD_STMT *stmt_p)
char database_user[SRV_CON_DBUSER_SIZE]
#define IS_VALID_CAS_FC(fc)
int get_msg_length(char *buffer)
int fn_proxy_cas_prepare(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p)
static void proxy_set_wait_timeout(T_PROXY_CONTEXT *ctx_p, int query_timeout)
T_PROXY_EVENT * proxy_event_dup(T_PROXY_EVENT *event_p)
int shard_stmt_add_srv_h_id_for_shard_cas(int stmt_h_id, int shard_id, int cas_id, int srv_h_id)
int shard_queue_enqueue(T_SHARD_QUEUE *q, void *v)
#define PROXY_EVENT_FROM_CAS
int fn_proxy_client_prepare_and_execute(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
T_PROXY_EVENT * proxy_event_new_with_rsp_ex(char *driver_info, unsigned int type, int from, T_PROXY_EVENT_FUNC_EX resp_func, void *argv)
char * proxy_get_driver_info_by_ctx(T_PROXY_CONTEXT *ctx_p)
int shard_queue_ordered_enqueue(T_SHARD_QUEUE *q, void *v, SHARD_COMP_FN comp_fn)
int fn_proxy_client_cursor(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
T_SHM_SHARD_CONN_STAT * shard_shm_get_shard_stat(T_PROXY_INFO *proxy_info_p, int idx)
int proxy_io_make_get_db_version(char *driver_info, char **buffer)
static int proxy_send_request_to_cas_with_new_event(T_PROXY_CONTEXT *ctx_p, unsigned int type, int from, T_PROXY_EVENT_FUNC req_func)
#define CAS_MAKE_VER(MAJOR, MINOR, PATCH)
void proxy_context_set_error(T_PROXY_CONTEXT *ctx_p, int error_ind, int error_code)
T_PROXY_INFO * proxy_info_p
void net_arg_get_int(int *value, void *arg)
T_SHARD_STMT * shard_stmt_new_schema_info(int ctx_cid, unsigned int ctx_uid)
int proxy_send_response_to_client(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p)
int fn_proxy_get_shard_info(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
char * shard_str_sqls(char *sql)
SP_PARSER_HINT * sp_get_first_hint(SP_PARSER_CTX *parser_p)
T_PROXY_EVENT * proxy_event_new_with_error(char *driver_info, unsigned int type, int from, int(*err_func)(char *driver_info, char **buffer, int error_ind, int error_code, const char *error_msg, char is_in_tran), int error_ind, int error_code, const char *error_msg, char is_in_tran)
void proxy_context_free_stmt(T_PROXY_CONTEXT *ctx_p)
T_SHM_SHARD_KEY_RANGE_STAT stat[SHARD_KEY_RANGE_MAX]
T_SHARD_STMT * prepared_stmt
void proxy_context_set_in_tran(T_PROXY_CONTEXT *ctx_p, int shard_id, int cas_id)
bool proxy_handler_is_cas_in_tran(int shard_id, int cas_id)
#define CAS_MAKE_PROTO_VER(DRIVER_INFO)
T_SHARD_STMT * shard_stmt_new_prepared_stmt(char *sql_stmt, int ctx_cid, unsigned int ctx_uid, T_BROKER_VERSION client_version)
int proxy_check_cas_error(char *read_msg)
int proxy_convert_error_code(int error_ind, int error_code, char *driver_info, T_BROKER_VERSION client_version, bool to_new)
char * proxy_str_event(T_PROXY_EVENT *event_p)
void proxy_unset_force_out_tran(char *msg)
T_SHM_SHARD_KEY * shm_key_p
INT64 num_hint_all_queries_processed
bool free_on_client_io_write
int fn_proxy_client_execute(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
int fn_proxy_cas_conn_error(T_PROXY_CONTEXT *ctx_p)
int fn_proxy_client_conn_error(T_PROXY_CONTEXT *ctx_p)
INT64 num_hint_err_queries_processed
int shard_stmt_get_hint_type(T_SHARD_STMT *stmt_p)
void proxy_waiter_free(T_WAIT_CONTEXT *waiter)
static T_SHARD_KEY_RANGE * proxy_get_range_by_param(SP_PARSER_HINT *hint_p, void **argv)
void net_arg_get_short(short *value, void *arg)
static int proxy_cas_execute_internal(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p)
int proxy_waiter_comp_fn(const void *arg1, const void *arg2)
#define CAS_USE_DEFAULT_DB_PARAM
void net_arg_get_str(char **value, int *size, void *arg)
int make_header_info(T_NET_BUF *net_buf, MSG_HEADER *client_msg_header)
T_SHARD_STMT * shard_stmt_new_exclusive(char *sql_stmt, int ctx_cid, unsigned int ctx_uid, T_BROKER_VERSION client_version)
int shard_stmt_set_hint_list(T_SHARD_STMT *stmt_p)
#define CAS_ERROR_INDICATOR
void shard_stmt_set_status_invalid(int stmt_h_id)
bool sp_is_hint_static(SP_PARSER_CTX *parser_p)
int proxy_io_make_ex_get_lock_timeout(char *driver_info, char **buffer, void *argv)
char * shard_str_stmt(T_SHARD_STMT *stmt_p)
T_CLIENT_INFO * shard_shm_get_client_info(T_PROXY_INFO *proxy_info_p, int idx)
int shard_stmt_save_prepare_request(T_SHARD_STMT *stmt_p, bool has_shard_val_hint, char **prepare_req, int *prepare_req_len, char *argv_sql_stmt, char *argv_remainder, char *orgzd_sql)
T_PROXY_CONTEXT proxy_Context
void net_arg_get_bigint(DB_BIGINT *value, void *arg)
static int proxy_client_execute_internal(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv, char _func_code, int query_timeout, int bind_value_index)
#define SHARD_TEMPORARY_UNAVAILABLE
void net_arg_get_size(int *size, void *arg)
INT64 num_hint_none_queries_processed
char * proxy_dup_msg(char *msg)
int fn_proxy_client_prepare(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
int proxy_find_shard_id_by_hint_value(SP_VALUE *value_p, const char *key_column)
INT64 num_hint_key_queries_requested
int proxy_io_make_error_msg(char *driver_info, char **buffer, int error_ind, int error_code, const char *error_msg, char is_in_tran)
#define PROXY_CONV_ERR_TO_NEW
T_CAS_IO * proxy_cas_alloc_by_ctx(int client_id, int shard_id, int cas_id, int ctx_cid, unsigned int ctx_uid, int timeout, int func_code)
int fn_proxy_cas_relay_only(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p)
int make_net_buf(T_NET_BUF *net_buf, int size)
int proxy_io_make_set_db_parameter_ok(char *driver_info, char **buffer)
T_SHARD_STMT * shard_stmt_find_by_sql(char *sql_stmt, const char *db_user, T_BROKER_VERSION client_version)
char * shard_stmt_rewrite_sql(bool *has_shard_val_hint, char *sql_stmt, char appl_server)
static void error(const char *msg)
void net_arg_put_int(void *arg, int *value)
static void proxy_update_shard_stats_without_hint(int shard_id)
INT64 num_request_stmt_in_pool
int fn_proxy_client_cursor_close(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
int fn_proxy_cas_fetch(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p)
static void proxy_update_shard_stats(T_SHARD_STMT *stmt_p, T_SHARD_KEY_RANGE *range_p)
INT64 num_range_queries_requested
T_SHARD_KEY shard_key[MAX_SHARD_KEY]
int proxy_client_io_write(T_CLIENT_IO *cli_io_p, T_PROXY_EVENT *event_p)
int fn_proxy_client_schema_info(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
bool waiting_dummy_prepare
void shard_stmt_check_waiter_and_wakeup(T_SHARD_STMT *stmt_p)
char * proxy_str_context(T_PROXY_CONTEXT *ctx_p)
int proxy_io_make_check_cas_ok(char *driver_info, char **buffer)
int proxy_io_make_ex_get_isolation_level(char *driver_info, char **buffer, void *argv)
INT64 num_hint_id_queries_requested
int fn_proxy_cas_execute(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p)
T_SHM_SHARD_KEY_STAT * shard_shm_get_key_stat(T_PROXY_INFO *proxy_info_p, int idx)
int fn_proxy_cas_prepare_and_execute(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p)
bool is_prepare_for_execute
T_PROXY_EVENT * waiting_event
#define PROXY_LOG(level, fmt, args...)
char key_column[SHARD_KEY_COLUMN_LEN]
int proxy_io_make_client_dbinfo_ok(char *driver_info, char **buffer)
void shard_stmt_free(T_SHARD_STMT *stmt_p)
#define DOES_CLIENT_UNDERSTAND_THE_PROTOCOL(CLIENT, REQUIRE)
T_PROXY_EVENT * proxy_event_new_with_rsp(char *driver_info, unsigned int type, int from, T_PROXY_EVENT_FUNC resp_func)
int fn_proxy_client_fetch(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
int proxy_io_make_end_tran_ok(char *driver_info, char **buffer)
int proxy_get_cas_error_code(char *read_msg, T_BROKER_VERSION client_version)
int fn_proxy_cas_end_tran(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p)
int fn_proxy_client_execute_array(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
#define IS_VALID_ISOLATION_LEVEL(isolation_level)
T_CONTEXT_STMT * proxy_context_find_stmt(T_PROXY_CONTEXT *ctx_p, int stmt_h_id)
unsigned int ntohl(unsigned int from)
int shard_stmt_find_srv_h_id_for_shard_cas(int stmt_h_id, int shard_id, int cas_id)
T_SHARD_STMT * shard_stmt_find_by_stmt_h_id(int stmt_h_id)
int proxy_send_response_to_client_with_new_event(T_PROXY_CONTEXT *ctx_p, unsigned int type, int from, T_PROXY_EVENT_FUNC resp_func)
void proxy_set_con_status_in_tran(char *msg)
INT64 num_hint_key_queries_processed
#define PROXY_INVALID_SHARD
int proxy_io_make_end_tran_abort(char *driver_info, char **buffer)
int fn_proxy_client_get_db_version(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
T_PROXY_EVENT * proxy_event_new(unsigned int type, int from_cas)
SP_PARSER_HINT * sp_get_next_hint(SP_PARSER_HINT *hint_p)
int fn_proxy_cas_schema_info(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p)
static bool proxy_is_invalid_statement(int error_ind, int error_code, char *driver_info, T_BROKER_VERSION client_version)
#define PROXY_EVENT_FROM_CLIENT
int proxy_io_make_close_req_handle_out_tran_ok(char *driver_info, char **buffer)
int fn_proxy_client_end_tran(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
int fn_proxy_client_close_req_handle(T_PROXY_CONTEXT *ctx_p, T_PROXY_EVENT *event_p, int argc, char **argv)
int proxy_io_make_cursor_close_out_tran_ok(char *driver_info, char **buffer)
void shard_stmt_del_srv_h_id_for_shard_cas(int stmt_h_id, int shard_id, int cas_id)
char * proxy_str_client_io(T_CLIENT_IO *cli_io_p)
#define net_arg_get_char(value, arg)
T_PROXY_HANDLER proxy_Handler
int proxy_io_make_con_close_ok(char *driver_info, char **buffer)
static bool proxy_has_different_column_info(const char *r1, size_t r1_len, const char *r2, size_t r2_len)
T_WAIT_CONTEXT * proxy_waiter_new(int ctx_cid, unsigned int ctx_uid, int timeout)
#define SHARD_STMT_INVALID_HANDLE_ID