35 #include <sys/timeb.h> 39 #include <netinet/in.h> 40 #include <netinet/tcp.h> 41 #include <sys/socket.h> 55 #if defined(CAS_FOR_ORACLE) 56 #include "cas_oracle.h" 58 #elif defined(CAS_FOR_MYSQL) 59 #include "cas_mysql.h" 63 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 79 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 87 #define FUNC_NEEDS_RESTORING_CON_STATUS(func_code) \ 88 (((func_code) == CAS_FC_GET_DB_PARAMETER) \ 89 ||((func_code) == CAS_FC_SET_DB_PARAMETER) \ 90 ||((func_code) == CAS_FC_CLOSE_REQ_HANDLE) \ 91 ||((func_code) == CAS_FC_GET_DB_VERSION) \ 92 ||((func_code) == CAS_FC_GET_ATTR_TYPE_STR) \ 93 ||((func_code) == CAS_FC_CURSOR_CLOSE) \ 94 ||((func_code) == CAS_FC_END_SESSION) \ 95 ||((func_code) == CAS_FC_CAS_CHANGE_MODE)) 100 LONG WINAPI CreateMiniDump (
struct _EXCEPTION_POINTERS *pException);
103 #ifndef LIBCAS_FOR_JSP 109 static void cas_free (
bool from_sighandler);
116 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 146 #ifndef LIBCAS_FOR_JSP 171 #ifndef LIBCAS_FOR_JSP 179 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 188 #if defined(CAS_FOR_ORACLE) || defined(CAS_FOR_MYSQL) 284 #ifndef LIBCAS_FOR_JSP 297 "glo_new(deprecated)",
298 "glo_save(deprecated)",
299 "glo_load(deprecated)",
301 "get_class_num_objs",
310 "glo_cmd(deprecated)",
319 "fn_get_generated_keys",
325 "fn_get_last_insert_id",
326 "fn_prepare_and_execute",
329 "fn_set_cas_change_mode" 334 #ifndef LIBCAS_FOR_JSP 339 #ifndef LIBCAS_FOR_JSP 340 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 351 session =
htonl (session);
352 memcpy (out + size, &session,
sizeof (
SESSION_ID));
374 { (char) 0xFF, (
char) 0xFF, (char) 0xFF, (
char) 0xFF, (char) 0xFF, (
char) 0xFF, (char) 0xFF, (
char) 0xFF };
391 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 409 memcpy (p, &v,
sizeof (
int));
416 v =
htonl (getpid ());
434 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 447 WinMain (HINSTANCE hInstance,
448 HINSTANCE hPrevInstance,
459 #if !defined(WINDOWS) 462 signal (SIGUSR1, SIG_IGN);
463 signal (SIGPIPE, SIG_IGN);
464 signal (SIGXFSZ, SIG_IGN);
470 #if !defined(WINDOWS) 472 if (argc == 2 && strcmp (argv[1],
"--version") == 0)
478 #if defined(CAS_FOR_ORACLE) 480 #elif defined(CAS_FOR_MYSQL) 487 memset (&req_info, 0,
sizeof (req_info));
512 struct timeval cas_start_time;
516 bool is_first =
true;
532 #if !defined(WINDOWS) 539 if (is_first ==
false)
554 #if defined(CAS_FOR_ORACLE) || defined(CAS_FOR_MYSQL) 563 gettimeofday (&cas_start_time,
NULL);
566 #if defined(CAS_FOR_ORACLE) || defined(CAS_FOR_MYSQL) 604 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 625 goto conn_proxy_retry;
630 setsockopt (proxy_sock_fd, IPPROTO_TCP, TCP_NODELAY, (
char *) &one,
sizeof (one));
637 goto conn_proxy_retry;
649 setsockopt (proxy_sock_fd, IPPROTO_TCP, TCP_NODELAY, (
char *) &one,
sizeof (one));
653 goto conn_proxy_retry;
681 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 689 #if !defined(WINDOWS) 694 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 697 #if !defined(WINDOWS) 698 signal (SIGUSR1, SIG_IGN);
723 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 737 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 742 as_info->close_flag = 1;
751 #if defined(CAS_FOR_ORACLE) || defined(CAS_FOR_MYSQL) 776 __except (CreateMiniDump (GetExceptionInformation ()))
788 SOCKET br_sock_fd, client_sock_fd;
791 char *
db_name, *db_user, *db_passwd, *db_sessionid;
792 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 795 int one = 1, db_info_size;
807 CAS_INFO_RESERVED_DEFAULT
810 char client_ip_str[16];
811 bool is_new_connection;
815 #if defined(CAS_FOR_ORACLE) 817 #elif defined(CAS_FOR_MYSQL) 822 if (shm_appl->as_port > 0)
854 as_info->as_port = new_port;
866 #if !defined(WINDOWS) 872 "CONFIGURATION WARNING - the APPL_SERVER_MAX_SIZE(%dM) is greater than the APPL_SERVER_MAX_SIZE_HARD_LIMIT(%dM)",
917 client_sock_fd = br_sock_fd;
918 if (ioctlsocket (client_sock_fd, FIONBIO, (u_long *) (&one)) < 0)
922 memcpy (&client_ip_addr, as_info->
cas_clt_ip, 4);
939 client_sock_fd =
recv_fd (br_sock_fd, &client_ip_addr, do_not_use_driver_info);
940 if (client_sock_fd == -1)
964 #if defined(CAS_FOR_ORACLE) || defined(CAS_FOR_MYSQL) 980 ut_get_ipv4_string (client_ip_str,
sizeof (client_ip_str), (
unsigned char *) (&client_ip_addr));
982 setsockopt (client_sock_fd, IPPROTO_TCP, TCP_NODELAY, (
char *) &one,
sizeof (one));
991 #if !defined(WINDOWS) 1039 unsigned char *ip_addr;
1040 char *db_err_msg =
NULL, *url =
NULL;
1041 struct timeval cas_start_time;
1043 gettimeofday (&cas_start_time,
NULL);
1063 if (db_user[0] ==
'\0')
1065 strcpy (db_user,
"PUBLIC");
1087 db_sessionid =
NULL;
1094 len = *(url +
strlen (url) + 1);
1121 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 1126 is_new_connection =
false;
1130 is_new_connection =
true;
1147 ip_addr = (
unsigned char *) (&client_ip_addr);
1157 sprintf (err_msg,
"Authorization error.(Address is rejected)");
1184 char msg_buf[LINE_MAX];
1190 if (db_err_msg ==
NULL)
1192 snprintf (msg_buf, LINE_MAX,
"connect db %s user %s url %s, error:%d.", db_name, db_user, url,
1197 snprintf (msg_buf, LINE_MAX,
"connect db %s user %s url %s, error:%d, %s", db_name, db_user, url,
1228 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 1245 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 1278 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 1281 #ifndef LIBCAS_FOR_JSP 1288 #if !defined(WINDOWS) 1294 #ifndef LIBCAS_FOR_JSP 1297 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 1300 #if !defined(WINDOWS) 1301 signal (SIGUSR1, SIG_IGN);
1321 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 1341 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 1356 #if defined(WINDOWS) 1357 as_info->close_flag = 1;
1373 #if defined(CAS_FOR_ORACLE) || defined(CAS_FOR_MYSQL) 1382 #if defined(WINDOWS) 1393 #if defined(WINDOWS) 1406 #if defined(WINDOWS) 1408 __except (CreateMiniDump (GetExceptionInformation ()))
1424 memset (&req_info, 0,
sizeof (req_info));
1429 client_sock_fd = jsp_sock_fd;
1490 #if !defined(LIBCAS_FOR_JSP) 1507 #if !defined(LIBCAS_FOR_JSP) 1519 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 1520 #if !defined(LIBCAS_FOR_JSP) 1522 char *unusable_db_name;
1523 char *unusable_db_host;
1524 const char *check_db_host = db_host;
1525 const char *check_db_name =
db_name;
1530 if (db_name ==
NULL)
1536 if (db_host ==
NULL)
1548 if (strcmp (unusable_db_name, check_db_name) == 0 && strcmp (unusable_db_host, check_db_host) == 0)
1560 #ifndef LIBCAS_FOR_JSP 1564 signal (signo, SIG_IGN);
1574 signal (SIGTERM, SIG_IGN);
1575 signal (SIGINT, SIG_IGN);
1589 int max_process_size;
1591 if (from_sighandler)
1594 #ifndef LIBCAS_FOR_JSP 1611 #if defined(WINDOWS) 1612 if (shm_appl->use_pdh_flag)
1642 if (as_info->
psize > max_process_size)
1645 max_process_size /
ONE_K);
1659 #if defined(CAS_FOR_ORACLE) || defined(CAS_FOR_MYSQL) 1664 fd = open (
"mem_debug.log", O_CREAT | O_TRUNC | O_WRONLY, 0666);
1676 #if !defined(WINDOWS) 1678 #if defined(CAS_FOR_ORACLE) 1679 signal (signo, SIG_IGN);
1680 cas_oracle_query_cancel ();
1681 #elif defined(CAS_FOR_MYSQL) 1683 signal (signo, SIG_IGN);
1689 clock_gettime (CLOCK_REALTIME, &ts);
1709 #ifndef LIBCAS_FOR_JSP 1710 int con_status_to_restore, old_con_status;
1719 #ifndef LIBCAS_FOR_JSP 1723 #ifndef LIBCAS_FOR_JSP 1730 const char *cas_log_msg =
NULL;
1739 cas_log_msg =
"CONNECTION RESET";
1743 cas_log_msg =
"SESSION TIMEOUT AND EXPIRE IDLE TIMEOUT";
1750 cas_log_msg =
"SESSION TIMEOUT";
1754 cas_log_msg =
"CONNECTION WAIT TIMEOUT";
1760 cas_log_msg =
"COMMUNICATION ERROR net_read_header()";
1784 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 1795 #ifndef LIBCAS_FOR_JSP 1819 const char *cas_log_msg =
NULL;
1823 #ifndef LIBCAS_FOR_JSP 1826 cas_log_msg =
"RESET";
1832 cas_log_msg =
"CHANGE CLIENT";
1836 if (cas_log_msg ==
NULL)
1840 #ifndef LIBCAS_FOR_JSP 1843 cas_log_msg =
"CONNECTION RESET";
1847 cas_log_msg =
"SESSION TIMEOUT";
1850 cas_log_msg =
"SESSION TIMEOUT";
1855 cas_log_msg =
"COMMUNICATION ERROR net_read_header()";
1863 #ifndef LIBCAS_FOR_JSP 1864 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 1865 #if !defined(WINDOWS) 1872 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 1894 if (read_msg ==
NULL)
1918 if (func_code <= 0 || func_code >=
CAS_FC_MAX)
1927 #ifndef LIBCAS_FOR_JSP 1944 con_status_to_restore = -1;
1960 con_status_to_restore = old_con_status;
1979 #ifndef LIBCAS_FOR_JSP 1983 #if defined (PROTOCOL_EXTENDS_DEBUG) 1987 "[%d][PREV : %d, RECV : %d], " "[preffunc : %d, recvfunc : %d], [REQ: %d, REQ: %d], " 1991 client_msg_header.
info_ptr[CAS_INFO_RESERVED_2],
1992 client_msg_header.
info_ptr[CAS_INFO_RESERVED_3]);
1998 #ifndef LIBCAS_FOR_JSP 2003 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 2026 #ifndef LIBCAS_FOR_JSP 2035 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 2058 #ifndef LIBCAS_FOR_JSP 2062 if (con_status_to_restore != -1)
2078 #ifndef LIBCAS_FOR_JSP 2149 #ifndef LIBCAS_FOR_JSP 2159 if (net_buf->err_code)
2169 #ifndef LIBCAS_FOR_JSP 2178 #if defined (PROTOCOL_EXTENDS_DEBUG) 2205 err_code =
net_write_from_file (sock_fd, net_buf->post_file_size, net_buf->post_send_file);
2206 unlink (net_buf->post_send_file);
2214 #ifndef LIBCAS_FOR_JSP 2227 #ifndef LIBCAS_FOR_JSP 2242 #ifndef LIBCAS_FOR_JSP 2260 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 2274 int timeout = 0, remained_timeout = 0;
2275 bool is_proxy_conn_wait_timeout =
false;
2289 is_proxy_conn_wait_timeout =
true;
2291 #if defined(CAS_FOR_MYSQL) 2294 timeout = MIN (timeout, cas_mysql_get_mysql_wait_timeout ());
2298 timeout = cas_mysql_get_mysql_wait_timeout ();
2302 remained_timeout = timeout;
2349 if (timeout < 0 || remained_timeout > 0)
2354 #if defined (CAS_FOR_MYSQL) 2356 if (cas_mysql_execute_dummy () >= 0)
2358 remained_timeout = timeout;
2363 if (is_proxy_conn_wait_timeout)
2423 #if defined(CAS_FOR_MYSQL) 2424 int timeout = 0, remained_timeout = 0;
2436 #if defined(CAS_FOR_MYSQL) 2437 timeout = cas_mysql_get_mysql_wait_timeout ();
2438 remained_timeout = timeout;
2464 #if defined (CAS_FOR_MYSQL) 2495 #if defined (CAS_FOR_MYSQL) 2497 if (remained_timeout > 0)
2503 if (cas_mysql_execute_dummy () >= 0)
2505 remained_timeout = timeout;
2552 int timeout = 0, remained_timeout = 0;
2562 remained_timeout = timeout;
2589 if (timeout > 0 && remained_timeout <= 0)
2649 #if defined(CAS_FOR_MYSQL) 2670 #if !defined(LIBCAS_FOR_JSP) 2682 #ifndef LIBCAS_FOR_JSP 2692 #if defined(WINDOWS) 2693 if (shm_appl->use_pdh_flag ==
TRUE)
2712 int max_process_size;
2723 if (as_info->
psize > max_process_size)
2734 #if defined(WINDOWS) 2737 CreateMiniDump (
struct _EXCEPTION_POINTERS * pException)
2739 TCHAR DumpFile[MAX_PATH] = { 0, };
2740 TCHAR DumpPath[MAX_PATH] = { 0, };
2741 SYSTEMTIME SystemTime;
2744 GetLocalTime (&SystemTime);
2746 sprintf (DumpFile,
"%d-%d-%d %d_%d_%d.dmp", SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay, SystemTime.wHour,
2747 SystemTime.wMinute, SystemTime.wSecond);
2750 FileHandle = CreateFile (DumpPath, GENERIC_WRITE, FILE_SHARE_WRITE,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,
NULL);
2752 if (FileHandle != INVALID_HANDLE_VALUE)
2754 MINIDUMP_EXCEPTION_INFORMATION MiniDumpExceptionInfo;
2757 MiniDumpExceptionInfo.ThreadId = GetCurrentThreadId ();
2758 MiniDumpExceptionInfo.ExceptionPointers = pException;
2759 MiniDumpExceptionInfo.ClientPointers =
FALSE;
2762 MiniDumpWriteDump (GetCurrentProcess (), GetCurrentProcessId (), FileHandle, MiniDumpNormal,
2763 (pException) ? &MiniDumpExceptionInfo :
NULL, NULL, NULL);
2766 CloseHandle (FileHandle);
2770 return EXCEPTION_EXECUTE_HANDLER;
2778 char func_code = 0x01;
2819 int pxy_id, shd_id, shard_cas_id, as_id;
2828 SHARD_ERR (
"<CAS> APPL_SERVER_SHM_KEY_STR:[%d:%x]\n", as_shm_key, as_shm_key);
2831 if (shm_appl ==
NULL)
2843 SHARD_ERR (
"<CAS> AS_ID_ENV_STR:[%d]\n", as_id);
2844 as_info = &shm_appl->
as_info[as_id];
2856 SHARD_ERR (
"<CAS> PROXY_ID:[%d]\n", pxy_id);
2860 SHARD_ERR (
"<CAS> SHARD_ID:[%d]\n", shd_id);
2864 SHARD_ERR (
"<CAS> SHARD_CAS_ID:[%d]\n", shard_cas_id);
2897 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 2901 int cur_isolation_level;
2902 int cur_lock_timeout;
2917 if (cur_lock_timeout != lock_timeout)
2924 if (cur_isolation_level != isolation_level)
void sql_log2_end(bool reset_filename_flag)
FN_RETURN fn_get_generated_keys(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
FN_RETURN fn_close_req_handle(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
int net_write_from_file(SOCKET sock_fd, int file_size, char *filename)
bool cas_default_ansi_quotes
char database_name[SRV_CON_DBNAME_SIZE]
static int net_read_header_keep_con_on(SOCKET clt_sock_fd, MSG_HEADER *client_msg_header)
void db_set_interrupt(int set)
char database_name[SRV_CON_DBNAME_SIZE]
enum tran_auto_commit need_auto_commit
T_BROKER_VERSION client_version
int cas_default_isolation_level
int ut_set_keepalive(int sock)
void cas_error_log_open(char *br_name)
T_BROKER_VERSION client_version
void cas_ssl_close(int client_sock_fd)
static SOCKET srv_sock_fd
#define CAS_INFO_FLAG_MASK_FORCE_OUT_TRAN
#define NET_BUF_ALLOC_SIZE
void ux_database_shutdown()
FN_RETURN fn_execute_batch(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
#define APPL_SERVER_CAS_MYSQL_NAME
FN_RETURN fn_not_supported(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
int con_status_before_check_cas
static void cas_set_session_id(T_CAS_PROTOCOL protocol, char *session)
#define SRV_CON_CLIENT_INFO_SIZE
void ux_set_utype_for_datetimeltz(char u_type)
FN_RETURN fn_oid(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
int max_prepared_stmt_count
#define SHARD_ID_UNSUPPORTED
char stripped_column_name
char db_name[MAX_DBNAME_LENGTH]
#define DRIVER_SESSION_SIZE
void logddl_set_db_name(const char *db_name)
int ux_set_isolation_level(int new_isol_level, T_NET_BUF *net_buf)
int proxy_conn_wait_timeout
void set_hang_check_time(void)
SOCKET net_connect_proxy(void)
#define CAS_PROTO_VER_MASK
void unset_hang_check_time(void)
unsigned int htonl(unsigned int from)
#define CAS_CONNECTION_REPLY_SIZE
char * ut_get_ipv4_string(char *ip_str, int len, const unsigned char *ip_addr)
int restart_is_needed(void)
FN_RETURN fn_get_row_count(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
int parse_int(int *ret_p, const char *str_p, int base)
SESSION_ID db_get_session_id(void)
unsigned char cas_clt_ip[4]
int advance_activate_flag
void cas_slow_log_open(char *br_name)
int access_control_check_right(T_SHM_APPL_SERVER *shm_as_p, char *dbname, char *dbuser, unsigned char *address)
T_BROKER_VERSION clt_version
FN_RETURN fn_con_close(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
FN_RETURN fn_oid_put(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
char broker_name[BROKER_NAME_LEN]
FN_RETURN fn_cursor(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
char log_msg[SHM_LOG_MSG_SIZE]
int libcas_main(SOCKET fd)
FN_RETURN fn_prepare(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
#define SHARD_ERR(f, a...)
FN_RETURN fn_xa_prepare(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
void cas_slow_log_write_and_end(struct timeval *log_time, unsigned int seq_num, const char *fmt,...)
#define CAS_LOG_RESET_REOPEN
static char cas_db_user[SRV_CON_DBUSER_SIZE]
#define NET_BUF_HEADER_MSG_SIZE
FN_RETURN fn_lob_write(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
int unusable_databases_cnt[PAIR_LIST]
FN_RETURN fn_get_db_version(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
static void set_cas_info_size(void)
#define UTS_STATUS_RESTART
#define CAS_VER_TO_MAJOR(VER)
int net_write_header(SOCKET sock_fd, MSG_HEADER *header)
#define IS_SSL_CLIENT(driver_info)
char database_user[SRV_CON_DBUSER_SIZE]
#define CAS_CONNECTION_REPLY_SIZE_V3
static int cas_init_shm(void)
#define FUNC_NEEDS_RESTORING_CON_STATUS(func_code)
#define APPL_SERVER_SHM_KEY_STR
char * db_get_server_session_key(void)
void ux_set_default_setting()
char db_host[MAX_CONN_INFO_LENGTH]
FN_RETURN fn_xa_recover(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
void logddl_set_jsp_mode(bool mode)
#define CON_STATUS_LOCK(AS_INFO, LOCK_OWNER)
#define SRV_CON_DBPASSWD_SIZE
#define CAS_MAKE_VER(MAJOR, MINOR, PATCH)
int net_read_header(SOCKET sock_fd, MSG_HEADER *header)
T_DB_SERVER unusable_databases[PAIR_LIST][UNUSABLE_DATABASE_MAX]
void css_register_check_server_alive_fn(CSS_CHECK_SERVER_ALIVE_FN callback_fn)
static void clear_db_connection_info(void)
char broker_name[BROKER_NAME_LEN]
static int cas_init(void)
#define SRV_CON_DB_INFO_SIZE
FN_RETURN fn_cursor_close(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
int appl_server_hard_limit
void net_buf_clear(T_NET_BUF *net_buf)
void logddl_set_logging_enabled(bool enable)
char db_user[SRV_CON_DBUSER_SIZE]
FN_RETURN fn_get_last_insert_id(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
FN_RETURN fn_make_out_rs(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
#define SRV_CON_DBNAME_SIZE
int er_init(const char *msglog_filename, int exit_ask)
#define NET_DEFAULT_TIMEOUT
static int cas_main(void)
#define SRV_CON_VER_STR_MAX_SIZE
char cci_default_autocommit
void cas_log_error_handler_begin(void)
#define CAS_INFO_RESERVED_DEFAULT
char cur_statement_pooling
FN_RETURN fn_deprecated(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
void net_buf_init(T_NET_BUF *net_buf, T_BROKER_VERSION client_version)
#define APPL_SERVER_CAS_ORACLE_NAME
#define CAS_PROTO_CURRENT_VER
char database_host[CUB_MAXHOSTNAMELEN]
void init_msg_header(MSG_HEADER *header)
FN_RETURN fn_end_session(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
char db_password[SRV_CON_DBPASSWD_SIZE]
#define CON_STATUS_LOCK_CAS
unsigned short cas_clt_port
FN_RETURN fn_xa_end_tran(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
void hm_srv_handle_free(int h_id)
void ux_set_utype_for_datetimetz(char u_type)
int cas_access_log(struct timeval *start_time, int as_index, int client_ip_addr, char *dbname, char *dbuser, ACCESS_LOG_TYPE log_type)
#define DOES_CLIENT_MATCH_THE_PROTOCOL(CLIENT, MATCH)
unsigned int unusable_databases_seq
FN_RETURN fn_parameter_info(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
FN_RETURN fn_get_class_num_objs(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
FN_RETURN fn_savepoint(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
static void set_db_parameter(void)
#define UTS_STATUS_CON_WAIT
#define CAS_VER_TO_PATCH(VER)
void er_final(ER_FINAL_CODE do_global_final)
FN_RETURN fn_execute_array(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
char driver_info[SRV_CON_CLIENT_INFO_SIZE]
FN_RETURN fn_collection(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
char database_passwd[SRV_CON_DBPASSWD_SIZE]
static void cas_send_connect_reply_to_driver(T_CAS_PROTOCOL protocol, SOCKET client_sock_fd, char *cas_info)
static void query_cancel(int signo)
int net_write_int(SOCKET sock_fd, int value)
char * sql_log2_get_filename()
static int net_read_process(SOCKET proxy_sock_fd, MSG_HEADER *client_msg_header, T_REQ_INFO *req_info)
#define SRV_CON_DB_INFO_SIZE_PRIOR_8_2_0
T_SHM_APPL_SERVER * shm_appl
SOCKET net_connect_client(SOCKET srv_sock_fd)
void libcas_srv_handle_free(int h_id)
void uw_shm_detach(void *p)
#define IS_INVALID_SOCKET(socket)
char cci_default_autocommit
#define CAS_USE_DEFAULT_DB_PARAM
struct timeval query_start_time
FN_RETURN fn_end_tran(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
static int query_sequence_num
FN_RETURN fn_execute(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
char * envvar_bindir_file(char *path, size_t size, const char *filename)
T_SRV_HANDLE * hm_find_srv_handle(int h_id)
time_t transaction_start_time
#define CAS_ERROR_INDICATOR
FN_RETURN fn_fetch(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
bool is_server_aborted(void)
#define MAX_HA_DBINFO_LENGTH
static SOCKET proxy_sock_fd
#define SRV_CON_DB_INFO_SIZE_PRIOR_8_4_0
void ux_set_utype_for_timestampltz(char u_type)
#define strncpy_bufsize(buf, str)
void logddl_set_br_index(const int index)
void net_buf_destroy(T_NET_BUF *net_buf)
int main(int argc, char *argv[])
#define NET_BUF_CURR_SIZE(n)
void cas_log_debug(const char *file_name, const int line_no, const char *fmt,...)
enum t_cas_protocol T_CAS_PROTOCOL
INT64 num_transactions_processed
FN_RETURN fn_lob_read(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
bool is_xa_prepared(void)
bool cas_default_no_backslash_escapes
static const char * server_func_name[]
int net_read_int(SOCKET sock_fd, int *value)
void sql_log2_init(char *br_name, int index, int sql_log_value, bool log_reuse_flag)
static void cas_free(bool from_sighandler)
int ux_auto_commit(T_NET_BUF *net_buf, T_REQ_INFO *req_info)
char err_log_dir[CONF_LOG_FILE_LEN]
FN_RETURN fn_next_result(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
static void cas_make_session_for_driver(char *out)
static bool need_database_reconnect(void)
int ux_is_database_connected(void)
char database_host[CUB_MAXHOSTNAMELEN]
void as_db_err_log_set(char *br_name, int proxy_index, int shard_id, int shard_cas_id, int as_index, int shard_flag)
void db_set_server_session_key(const char *key)
#define APPL_SERVER_CAS_NAME
void cas_log_write_client_ip(const unsigned char *ip_addr)
#define BROKER_RENEWED_ERROR_CODE
void cas_log_error_handler_clear(void)
struct timeval tran_start_time
static void error(const char *msg)
FN_RETURN fn_set_db_parameter(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
void hm_srv_handle_free_all(bool free_holdable)
void cas_log_reset(char *br_name)
char driver_info[SRV_CON_CLIENT_INFO_SIZE]
#define SRV_CON_DBSESS_ID_SIZE
int errors_in_transaction
void logddl_set_br_name(const char *br_name)
static void cas_sig_handler(int signo)
void ux_set_lock_timeout(int lock_timeout)
#define BROKER_SUPPORT_HOLDABLE_RESULT
void as_pid_file_create(char *br_name, int as_index)
bool check_server_alive(const char *db_name, const char *db_host)
int net_write_stream(SOCKET sock_fd, const char *buf, int size)
void cas_slow_log_reset(char *br_name)
INT64 num_requests_received
time_t claimed_alive_time
void logddl_set_pid(const int pid)
#define CAS_VER_TO_MINOR(VER)
FN_RETURN fn_prepare_and_execute(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
void * libcas_get_db_result_set(int h_id)
static FN_RETURN process_request(SOCKET sock_fd, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
void cas_log_error_handler_end(void)
#define SRV_CON_DBUSER_SIZE
FN_RETURN fn_check_cas(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
int query_seq_num_current_value(void)
static int cas_register_to_proxy(SOCKET proxy_sock_fd)
int net_decode_str(char *msg, int msg_size, char *func_code, void ***ret_argv)
void logddl_set_app_name(T_APP_NAME app_name)
int ux_database_connect(char *db_name, char *db_user, char *db_passwd, char **db_err_msg)
void css_register_server_timeout_fn(CSS_SERVER_TIMEOUT_FN callback_fn)
#define CON_STATUS_UNLOCK(AS_INFO, LOCK_OWNER)
void ux_set_utype_for_timestamptz(char u_type)
bool prm_get_bool_value(PARAM_ID prm_id)
T_BROKER_VERSION cas_get_client_version(void)
T_APPL_SERVER_INFO * as_info
FN_RETURN fn_get_db_parameter(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
#define CAS_PROTO_TO_VER_STR(MSG_P, VER)
#define DOES_CLIENT_UNDERSTAND_THE_PROTOCOL(CLIENT, REQUIRE)
char driver_version[SRV_CON_VER_STR_MAX_SIZE]
void cas_log_write_and_end(unsigned int seq_num, bool unit_start, const char *fmt,...)
#define DBMS_ERROR_INDICATOR
void ut_get_as_port_name(char *port_name, char *broker_name, int as_id, int len)
T_APPL_SERVER_INFO as_info[APPL_SERVER_NUM_LIMIT]
void ux_get_tran_setting(int *lock_wait, int *isol_level)
#define HEALTH_CHECK_DUMMY_DB
int ux_end_tran(int tran_type, bool reset_con_status)
static int net_read_int_keep_con_auto(SOCKET clt_sock_fd, MSG_HEADER *client_msg_header, T_REQ_INFO *req_info)
SOCKET net_init_env(char *port_name)
void net_timeout_set(int timeout_sec)
void error_info_clear(void)
#define MAX_DIAG_DATA_VALUE
#define SERVER_SESSION_KEY_SIZE
#define CAS_CONNECTION_REPLY_SIZE_PRIOR_PROTOCOL_V3
static T_SERVER_FUNC server_fn_table[]
char err_string[ERR_MSG_LENGTH]
void ux_set_utype_for_json(char u_type)
bool logddl_get_jsp_mode()
void logddl_set_user_name(const char *user_name)
void db_set_session_id(const SESSION_ID session_id)
int net_read_stream(SOCKET sock_fd, char *buf, int size)
static char database_user[SRV_CON_DBUSER_SIZE]
void set_cubrid_file(T_CUBRID_FILE_ID fid, char *value)
void cas_set_db_connect_status(int status)
#define SHARD_NET_BUF_ALLOC_SIZE
unsigned int ntohl(unsigned int from)
int recv_fd(int fd, int *rid, char *driver_info)
char stripped_column_name
int cas_get_db_connect_status(void)
static void set_db_connection_info(void)
void * uw_shm_open(int shm_key, int which_shm, T_SHM_MODE shm_mode)
void cas_log_close(bool flag)
FN_RETURN fn_schema_info(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
int cas_default_lock_timeout
char slow_log_dir[CONF_LOG_FILE_LEN]
static int shard_cas_main(void)
#define CAS_INFO_FLAG_MASK_AUTOCOMMIT
void cas_log_write2(const char *fmt,...)
bool is_net_timed_out(void)
int query_seq_num_next_value(void)
const char * program_name
void cas_slow_log_close()
static T_REQ_INFO req_info
FN_RETURN fn_oid_get(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
static char cas_db_passwd[SRV_CON_DBPASSWD_SIZE]
char log_dir[CONF_LOG_FILE_LEN]
static char cas_db_name[MAX_HA_DBINFO_LENGTH]
FN_RETURN fn_get_query_info(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
static const int DEFAULT_CHECK_INTERVAL
T_SHARD_CONN_INFO shard_conn_info[SHARD_INFO_SIZE_LIMIT]
static int get_graceful_down_timeout(void)
void logddl_set_ip(const char *ip_addr)
FN_RETURN fn_cursor_update(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
void cas_log_open(char *br_name)
FN_RETURN fn_set_cas_change_mode(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
FN_RETURN fn_lob_new(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
INT64 num_connect_rejected
char prev_cas_info[CAS_INFO_SIZE]
FN_RETURN fn_get_attr_type_str(SOCKET sock_fd, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
FN_RETURN(* T_SERVER_FUNC)(SOCKET, int, void **, T_NET_BUF *, T_REQ_INFO *)
void net_write_error(SOCKET sock, int version, char *driver_info, char *cas_info, int cas_info_size, int indicator, int code, char *msg)
static void cas_final(void)
void logddl_set_start_time(struct timeval *time_val)
int hm_srv_handle_get_current_count(void)
void ux_set_utype_for_enum(char u_type)
void cas_error_log_close(bool flag)