81 #if defined (SUPPRESS_STRLEN_WARNING) 82 #define strlen(s1) ((int) strlen(s1)) 85 #define QUERY_BUFFER_MAX 4096 87 #define FK_INFO_SORT_BY_PKTABLE_NAME 1 88 #define FK_INFO_SORT_BY_FKTABLE_NAME 2 100 #if !defined(WINDOWS) 101 #define STRING_APPEND(buffer_p, avail_size_holder, ...) \ 103 if (avail_size_holder > 0) { \ 104 int n = snprintf (buffer_p, avail_size_holder, __VA_ARGS__); \ 106 if (n < avail_size_holder) { \ 107 buffer_p += n; avail_size_holder -= n; \ 109 buffer_p += (avail_size_holder - 1); \ 110 avail_size_holder = 0; \ 116 #define STRING_APPEND(buffer_p, avail_size_holder, ...) \ 118 if (avail_size_holder > 0) { \ 119 int n = _snprintf (buffer_p, avail_size_holder, __VA_ARGS__); \ 120 if (n < 0 || n >= avail_size_holder) { \ 121 buffer_p += (avail_size_holder - 1); \ 122 avail_size_holder = 0; \ 125 buffer_p += n; avail_size_holder -= n; \ 131 #define IS_NULL_CAS_TYPE(cas_type) ((cas_type) == CCI_U_TYPE_NULL) 137 #define CHK_OPT_LEVEL(level) ((level) & 0xff) 138 #define CHK_OPTIMIZATION_ENABLED(level) (CHK_OPT_LEVEL(level) != 0) 139 #define CHK_PLAN_DUMP_ENABLED(level) ((level) >= 0x100) 140 #define CHK_SIMPLE_DUMP(level) ((level) & 0x100) 141 #define CHK_DETAILED_DUMP(level) ((level) & 0x200) 142 #define CHK_OPTIMIZATION_LEVEL_VALID(level) \ 143 (CHK_OPTIMIZATION_ENABLED(level) \ 144 || CHK_PLAN_DUMP_ENABLED(level) \ 188 #if !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 196 char column_type_flag);
208 const char *col_name,
const char *
default_value,
char auto_increment,
209 char unique_key,
char primary_key,
char reverse_index,
char reverse_unique,
210 char foreign_key,
char shared,
const char *attr_name,
const char *
class_name,
212 static void set_column_info (
T_NET_BUF * net_buf,
char ut,
short scale,
int prec,
char charset,
const char *col_name,
213 const char *attr_name,
const char *
class_name,
char is_non_null,
232 unsigned char charset,
int *net_size);
234 unsigned char charset,
int *net_size);
241 unsigned char ext_type,
int *net_size);
243 char *tz_str,
unsigned char ext_type,
int *net_size);
245 short ms,
unsigned char ext_type,
int *net_size);
247 short ms,
char *tz_str,
unsigned char ext_type,
int *net_size);
285 char *fktable_name,
void **result);
298 unsigned int query_seq_num);
299 #define check_class_chn(s) 0 308 const char *pkcolumn_name,
const char *fktable_name,
309 const char *fkcolumn_name,
short key_seq,
311 const char *fk_name,
const char *pk_name,
int sort_by);
338 CCI_U_TYPE_TIMESTAMP,
350 CCI_U_TYPE_RESULTSET,
357 CCI_U_TYPE_TIMESTAMPTZ,
358 CCI_U_TYPE_TIMESTAMPLTZ,
359 CCI_U_TYPE_DATETIMETZ,
360 CCI_U_TYPE_DATETIMELTZ,
408 #ifndef LIBCAS_FOR_JSP 431 "ux_check_connection: ux_database_shutdown()" " ux_database_connect(%s, %s)", dbname,
447 #ifndef LIBCAS_FOR_JSP 463 int err_code, client_type;
465 const char *host_connected =
NULL;
469 if (db_name ==
NULL || db_name[0] ==
'\0')
553 p = strchr (db_name,
'@');
580 err_code =
au_login (db_user, db_passwd,
true);
610 *db_err_msg = (
char *) malloc (
strlen (p) + 1);
613 strcpy (*db_err_msg, p);
637 strcpy (
cas_db_sys_param,
"index_scan_in_oid_order;garbage_collection;optimization_level;");
657 char buffer[LINE_MAX], *
p;
659 strncpy (buffer, param, LINE_MAX);
660 buffer[LINE_MAX - 1] = 0;
667 p = strchr (buffer,
'=');
688 int cur_isolation_level;
689 int cur_lock_timeout;
714 #ifndef LIBCAS_FOR_JSP 730 unsigned int query_seq_num)
742 int is_first_out = 0;
744 int result_cache_lifetime;
747 if ((flag & CCI_PREPARE_UPDATABLE) && (flag & CCI_PREPARE_HOLDABLE))
772 if (flag & CCI_PREPARE_QUERY_INFO)
782 if (flag & CCI_PREPARE_UPDATABLE)
791 if (flag & CCI_PREPARE_CALL)
796 if (sql_stmt[0] ==
'?')
835 if (statement !=
NULL)
849 stmt_type = CUBRID_STMT_CALL_SP;
853 if (prepare_call_info ==
NULL)
860 goto prepare_result_set;
875 updatable_flag = flag & CCI_PREPARE_UPDATABLE;
878 flag |= CCI_PREPARE_INCLUDE_OID;
881 if (flag & CCI_PREPARE_INCLUDE_OID)
886 if (flag & CCI_PREPARE_XASL_CACHE_PINNED)
928 if (q_result ==
NULL)
951 if (flag & CCI_PREPARE_HOLDABLE)
963 if (auto_commit_mode ==
TRUE)
988 #ifndef LIBCAS_FOR_JSP 991 if (tran_type == CCI_TRAN_COMMIT)
1002 if (tran_type == CCI_TRAN_COMMIT)
1018 if (tran_type == CCI_TRAN_COMMIT)
1027 else if (tran_type == CCI_TRAN_ROLLBACK)
1044 #ifndef LIBCAS_FOR_JSP 1045 if (reset_con_status)
1058 #ifndef LIBCAS_FOR_JSP 1136 bool recompile =
false;
1137 #ifndef LIBCAS_FOR_JSP 1164 srv_handle->
session = session;
1189 if (flag & CCI_EXEC_RETURN_GENERATED_KEYS)
1200 if (flag & CCI_EXEC_QUERY_INFO)
1206 if (srv_handle->
prepare_flag & CCI_PREPARE_XASL_CACHE_PINNED)
1220 if (flag & CCI_EXEC_ONLY_QUERY_PLAN)
1231 if (!(flag & CCI_EXEC_QUERY_INFO))
1241 #if !defined (LIBCAS_FOR_JSP) && !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 1252 #ifndef LIBCAS_FOR_JSP 1263 *clt_cache_reusable =
TRUE;
1265 else if (result !=
NULL)
1271 if (flag & CCI_EXEC_QUERY_INFO)
1308 n = MIN (n, max_row);
1313 if (srv_handle->
prepare_flag & CCI_PREPARE_XASL_CACHE_PINNED)
1316 srv_handle->
prepare_flag &= ~CCI_PREPARE_XASL_CACHE_PINNED;
1324 srv_handle->
max_row = max_row;
1333 #if !defined(LIBCAS_FOR_JSP) 1348 for (i = 0; i < num_bind; i++)
1355 if (*clt_cache_reusable ==
TRUE)
1373 int result_cache_lifetime;
1374 char include_column_info;
1378 include_column_info = 0;
1382 include_column_info = 1;
1386 if (include_column_info == 1)
1413 if (srv_handle->
prepare_flag & CCI_PREPARE_XASL_CACHE_PINNED)
1416 srv_handle->
prepare_flag &= ~CCI_PREPARE_XASL_CACHE_PINNED;
1427 for (i = 0; i < num_bind; i++)
1445 int stmt_type = -1, stmt_id = -1;
1448 char is_first_stmt =
TRUE;
1454 char is_savepoint =
FALSE;
1462 if (is_prepared ==
TRUE)
1476 goto execute_all_error;
1478 srv_handle->
session = session;
1487 goto execute_all_error;
1494 goto execute_all_error;
1502 static unsigned long long savepoint_count = 0;
1504 snprintf (savepoint,
BROKER_PATH_MAX,
"__MSS$%20lld__", savepoint_count++);
1506 is_savepoint =
TRUE;
1511 if (flag & CCI_EXEC_RETURN_GENERATED_KEYS)
1520 if (is_prepared ==
FALSE)
1522 if (srv_handle->
prepare_flag & CCI_PREPARE_XASL_CACHE_PINNED)
1535 goto execute_all_error;
1542 goto execute_all_error;
1554 #if !defined (LIBCAS_FOR_JSP) && !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 1559 goto execute_all_error;
1567 #ifndef LIBCAS_FOR_JSP 1576 goto execute_all_error;
1580 goto execute_all_error;
1584 *clt_cache_reusable =
TRUE;
1586 else if (result !=
NULL)
1598 goto execute_all_error;
1608 n = MIN (n, max_row);
1611 if (is_first_stmt ==
TRUE)
1615 is_first_stmt =
FALSE;
1625 goto execute_all_error;
1628 q_result = &(srv_handle->
q_result[q_res_idx]);
1630 if (is_prepared ==
FALSE)
1639 q_result->
result = result;
1642 is_prepared =
FALSE;
1651 #if !defined(LIBCAS_FOR_JSP) 1658 if (srv_handle->
prepare_flag & CCI_PREPARE_XASL_CACHE_PINNED)
1661 srv_handle->
prepare_flag &= ~CCI_PREPARE_XASL_CACHE_PINNED;
1663 srv_handle->
max_row = max_row;
1675 for (i = 0; i < num_bind; i++)
1682 if (*clt_cache_reusable ==
TRUE)
1695 goto execute_all_error;
1700 int result_cache_lifetime;
1701 char include_column_info;
1705 include_column_info = 0;
1709 include_column_info = 1;
1713 if (include_column_info == 1)
1725 goto execute_all_error;
1740 if (srv_handle->
prepare_flag & CCI_PREPARE_XASL_CACHE_PINNED)
1743 srv_handle->
prepare_flag &= ~CCI_PREPARE_XASL_CACHE_PINNED;
1749 else if (is_savepoint)
1758 for (i = 0; i < num_bind; i++)
1785 #ifndef LIBCAS_FOR_JSP 1824 #ifndef LIBCAS_FOR_JSP 1853 for (j = 0; i < call_info->
num_args; i++, j++)
1866 srv_handle->
max_row = max_row;
1871 #if !defined(LIBCAS_FOR_JSP) 1878 for (i = 0; i < num_bind; i++)
1895 int result_cache_lifetime;
1896 char include_column_info;
1900 include_column_info = 0;
1904 include_column_info = 1;
1908 if (include_column_info == 1)
1936 for (i = 0; i < num_bind; i++)
1956 goto next_result_error;
1962 goto next_result_error;
1968 if (prev_result->
result && flag != CCI_KEEP_CURRENT_RESULT)
1988 goto next_result_error;
2013 int err_code, sql_size, res_count, stmt_id;
2014 int num_query_offset;
2015 bool use_plan_cache, use_query_cache;
2016 char *sql_stmt, *err_msg;
2030 for (query_index = 0; query_index <
argc; query_index++)
2032 use_plan_cache =
false;
2033 use_query_cache =
false;
2037 if (sql_stmt !=
NULL)
2071 #if !defined (LIBCAS_FOR_JSP) && !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 2082 #ifndef LIBCAS_FOR_JSP 2101 memset (&ins_oid, 0,
sizeof (
T_OBJECT));
2115 if (auto_commit_mode ==
TRUE)
2119 logddl_set_msg (
"execute_batch %d%s", query_index + 1, auto_commit_mode ==
TRUE ?
" auto_commit" :
"");
2130 if (auto_commit_mode ==
FALSE 2133 if (session !=
NULL)
2139 goto execute_batch_error;
2150 err_msg = (
char *)
"";
2168 if (auto_commit_mode ==
TRUE)
2172 logddl_set_msg (
"execute_batch %d%s", query_index + 1, auto_commit_mode ==
TRUE ?
" auto_rollback" :
"");
2189 execute_batch_error:
2193 logddl_set_msg (
"execute_batch %d%s", query_index + 1, auto_commit_mode ==
TRUE ?
" auto_rollback" :
"");
2204 int i, num_bind = 0;
2210 int num_query_msg_offset;
2224 goto execute_array_error;
2231 goto return_success;
2237 if (is_prepared ==
FALSE)
2248 if (num_markers < 1)
2252 goto return_success;
2262 goto return_success;
2264 num_bind = argc / 2;
2269 goto execute_array_error;
2274 while (num_bind >= num_markers)
2278 if (is_prepared ==
FALSE)
2294 if (is_prepared ==
FALSE)
2296 if (srv_handle->
prepare_flag & CCI_PREPARE_XASL_CACHE_PINNED)
2308 #if !defined (LIBCAS_FOR_JSP) && !defined(CAS_FOR_ORACLE) && !defined(CAS_FOR_MYSQL) 2325 #ifndef LIBCAS_FOR_JSP 2343 memset (&ins_oid, 0,
sizeof (
T_OBJECT));
2354 if (is_prepared ==
FALSE)
2363 num_bind -= num_markers;
2364 first_value += num_markers;
2380 if (is_prepared ==
FALSE && session !=
NULL)
2387 goto execute_array_error;
2398 err_msg = (
char *)
"";
2409 if (is_prepared ==
FALSE && session !=
NULL)
2415 num_bind -= num_markers;
2416 first_value += num_markers;
2433 for (i = 0; i < num_bind; i++)
2446 if (srv_handle->
prepare_flag & CCI_PREPARE_XASL_CACHE_PINNED)
2449 srv_handle->
prepare_flag &= ~CCI_PREPARE_XASL_CACHE_PINNED;
2454 execute_array_error:
2458 if (srv_handle->
prepare_flag & CCI_PREPARE_XASL_CACHE_PINNED)
2461 srv_handle->
prepare_flag &= ~CCI_PREPARE_XASL_CACHE_PINNED;
2466 for (i = 0; i < num_bind; i++)
2486 *lock_wait = (int) tmp_lock_wait;
2491 *isol_level = (int) tmp_isol_level;
2521 #if !defined(LIBCAS_FOR_JSP) 2540 int fetch_func_index;
2542 if (srv_handle ==
NULL)
2551 return (
fetch_call (srv_handle, net_buf, req_info));
2556 fetch_func_index = 0;
2570 if (fetch_count <= 0)
2576 (*(
fetch_func[fetch_func_index])) (srv_handle, cursor_pos, fetch_count, fetch_flag, result_set_index, net_buf,
2605 char **attr_name =
NULL;
2625 err_code = attr_num;
2632 if (class_name ==
NULL)
2650 if (
oid_data_set (net_buf, obj, attr_num, attr_name) < 0)
2679 char *err_str =
NULL;
2725 goto cursor_update_error;
2747 goto cursor_update_error;
2754 for (; argc >= 3; argc -= 3, argv += 3)
2759 if (attr_name ==
NULL)
2765 err_code =
make_bind_value (1, 2, argv + 1, &attr_val, net_buf, desired_type);
2768 goto cursor_update_error;
2771 err_code =
db_put (obj_p, attr_name, attr_val);
2775 goto cursor_update_error;
2786 cursor_update_error:
2809 if (srv_handle ==
NULL)
2826 #if !defined(LIBCAS_FOR_JSP) 2857 int num_objs, num_pages;
2860 if (class_obj ==
NULL)
2863 goto class_num_objs_error;
2871 goto class_num_objs_error;
2881 class_num_objs_error:
2914 for (i = 0; i < col_size; i++)
3032 err_code =
db_seq_put (col, index - 1, ele_val);
3073 for (; argc >= 3; argc -= 3, argv += 3)
3082 err_code =
make_bind_value (1, 2, argv + 1, &attr_val, net_buf, attr_type);
3089 err_code =
dbt_put (otmpl, attr_name, attr_val);
3126 int set_domain_count = 0;
3164 *db_type = (set_domain_count != 1) ?
DB_TYPE_NULL : set_type;
3167 if (set_domain_count != 1)
3179 int i, type_idx, val_idx;
3184 if (num_bind != (argc / 2))
3190 if (value_list ==
NULL)
3195 memset (value_list, 0,
sizeof (
DB_VALUE) * num_bind);
3197 for (i = 0; i < num_bind; i++)
3200 val_idx = 2 * i + 1;
3201 err_code =
netval_to_dbval (argv[type_idx], argv[val_idx], &(value_list[i]), net_buf, desired_type);
3204 for (i--; i >= 0; i--)
3213 *ret_val = value_list;
3225 char *domain_str =
NULL;
3228 if (class_obj ==
NULL)
3232 goto ux_get_attr_type_str_error;
3236 if (attr_name ==
NULL)
3240 goto ux_get_attr_type_str_error;
3248 goto ux_get_attr_type_str_error;
3254 if (domain_str ==
NULL)
3266 ux_get_attr_type_str_error:
3278 char read_buf[1024];
3282 if (srv_handle ==
NULL)
3303 fd = open (file_name, O_RDONLY);
3308 if (file_name ==
NULL || fd < 0)
3314 while ((read_len = read (fd, read_buf,
sizeof (read_buf))) > 0)
3330 int stmt_id, num_markers;
3334 unsigned char cas_type;
3345 goto parameter_info_error;
3362 if (session !=
NULL && stmt_id > 0)
3369 for (i = 0; i < num_markers; i++)
3372 param_mode = CCI_PARAM_MODE_UNKNOWN;
3385 param_mode = CCI_PARAM_MODE_IN;
3414 parameter_info_error:
3463 return CCI_U_TYPE_NULL;
3507 unsigned int query_seq_num)
3517 err_code = srv_h_id;
3518 goto schema_info_error;
3524 switch (schema_type)
3527 err_code =
sch_class_info (net_buf, arg1, flag, 0, srv_handle, client_version);
3529 case CCI_SCH_VCLASS:
3530 err_code =
sch_class_info (net_buf, arg1, flag, 1, srv_handle, client_version);
3532 case CCI_SCH_QUERY_SPEC:
3535 case CCI_SCH_ATTRIBUTE:
3536 err_code =
sch_attr_info (net_buf, arg1, arg2, flag, 0, srv_handle);
3538 case CCI_SCH_CLASS_ATTRIBUTE:
3539 err_code =
sch_attr_info (net_buf, arg1, arg2, flag, 1, srv_handle);
3541 case CCI_SCH_METHOD:
3544 case CCI_SCH_CLASS_METHOD:
3547 case CCI_SCH_METHOD_FILE:
3550 case CCI_SCH_SUPERCLASS:
3553 case CCI_SCH_SUBCLASS:
3556 case CCI_SCH_CONSTRAINT:
3559 case CCI_SCH_TRIGGER:
3562 case CCI_SCH_CLASS_PRIVILEGE:
3565 case CCI_SCH_ATTR_PRIVILEGE:
3566 err_code =
sch_attr_priv (net_buf, arg1, arg2, flag, srv_handle);
3568 case CCI_SCH_DIRECT_SUPER_CLASS:
3571 case CCI_SCH_PRIMARY_KEY:
3574 case CCI_SCH_IMPORTED_KEYS:
3577 case CCI_SCH_EXPORTED_KEYS:
3580 case CCI_SCH_CROSS_REFERENCE:
3585 goto schema_info_error;
3590 goto schema_info_error;
3593 if (schema_type == CCI_SCH_CLASS || schema_type == CCI_SCH_VCLASS || schema_type == CCI_SCH_ATTRIBUTE
3594 || schema_type == CCI_SCH_CLASS_ATTRIBUTE || schema_type == CCI_SCH_QUERY_SPEC
3595 || schema_type == CCI_SCH_DIRECT_SUPER_CLASS || schema_type == CCI_SCH_PRIMARY_KEY)
3634 for (i = 0; i < call_info->
num_args; i++)
3649 if (call_info ==
NULL)
3659 const char *
default_value,
char auto_increment,
char unique_key,
char primary_key,
3660 char reverse_index,
char reverse_unique,
char foreign_key,
char shared,
const char *attr_name,
3663 const char *attr_name_p, *class_name_p;
3664 int attr_name_len, class_name_len;
3668 attr_name_p = (attr_name !=
NULL) ? attr_name :
"";
3669 attr_name_len =
strlen (attr_name_p);
3671 class_name_p = (class_name !=
NULL) ? class_name :
"";
3672 class_name_len =
strlen (class_name_p);
3680 if (is_non_null >= 1)
3684 else if (is_non_null < 0)
3696 if (default_value ==
NULL)
3703 int len =
strlen (default_value) + 1;
3723 char *default_value_string =
NULL;
3724 const char *default_value_expr_type_string =
NULL, *default_expr_format =
NULL;
3725 const char *default_value_expr_op_string =
NULL;
3733 return default_value_string;
3737 if (default_value_expr_type_string !=
NULL)
3746 default_value_expr_op_string =
"TO_CHAR";
3750 len = ((default_value_expr_op_string ?
strlen (default_value_expr_op_string) : 0)
3751 + 6 + strlen (default_value_expr_type_string)
3752 + (default_expr_format ?
strlen (default_expr_format) : 0));
3754 default_value_string = (
char *) malloc (len + 1);
3755 if (default_value_string ==
NULL)
3761 if (default_value_expr_op_string !=
NULL)
3763 strcpy (default_value_string, default_value_expr_op_string);
3764 strcat (default_value_string,
"(");
3765 strcat (default_value_string, default_value_expr_type_string);
3766 if (default_expr_format)
3768 strcat (default_value_string,
", \'");
3769 strcat (default_value_string, default_expr_format);
3770 strcat (default_value_string,
"\'");
3773 strcat (default_value_string,
")");
3777 strcpy (default_value_string, default_value_expr_type_string);
3780 return default_value_string;
3810 default_value_string = (
char *) malloc (def_size + 3);
3811 if (default_value_string !=
NULL)
3814 default_value_string[0] =
'\'';
3815 memcpy (default_value_string + 1, def_str_p, def_size);
3816 default_value_string[def_size + 1] =
'\'';
3817 default_value_string[def_size + 2] =
'\0';
3833 default_value_string = (
char *) malloc (def_size + 1);
3834 if (default_value_string !=
NULL)
3837 memcpy (default_value_string, def_str_p, def_size);
3838 default_value_string[def_size] =
'\0';
3847 return default_value_string;
3856 char auto_increment = 0;
3857 char unique_key = 0;
3858 char primary_key = 0;
3859 char reverse_index = 0;
3860 char reverse_unique = 0;
3861 char foreign_key = 0;
3863 const char *default_value_string =
NULL;
3864 bool alloced_default_value_string =
false;
3882 unique_key, primary_key, reverse_index, reverse_unique, foreign_key, shared, attr_name,
3883 class_name, is_non_null, client_version);
3885 if (alloced_default_value_string)
3887 free ((
char *) default_value_string);
3898 char coercion_flag =
TRUE;
3902 if (type == CCI_U_TYPE_STRING || type == CCI_U_TYPE_CHAR || type == CCI_U_TYPE_ENUM)
3906 type = CCI_U_TYPE_NUMERIC;
3910 type = CCI_U_TYPE_NCHAR;
3914 type = CCI_U_TYPE_JSON;
3918 if (type == CCI_U_TYPE_DATETIME)
3922 type = CCI_U_TYPE_TIMESTAMP;
3926 type = CCI_U_TYPE_DATE;
3930 type = CCI_U_TYPE_TIME;
3933 else if (type == CCI_U_TYPE_DATETIMETZ)
3937 type = CCI_U_TYPE_TIMESTAMPTZ;
3944 type = CCI_U_TYPE_NULL;
3950 case CCI_U_TYPE_NULL:
3952 coercion_flag =
FALSE;
3954 case CCI_U_TYPE_CHAR:
3955 case CCI_U_TYPE_STRING:
3956 case CCI_U_TYPE_ENUM:
3958 char *value, *invalid_pos =
NULL;
3961 bool is_composed =
false;
3971 off_t
p = invalid_pos !=
NULL ? (invalid_pos - value) : 0;
3972 snprintf (msg,
sizeof (msg),
"%llu", (
long long unsigned int) p);
3979 char *composed =
NULL;
3981 composed = (
char *) malloc (composed_size + 1);
3982 if (composed ==
NULL)
3989 assert (composed_size <= val_size);
3990 composed[composed_size] =
'\0';
4012 coercion_flag =
FALSE;
4025 case CCI_U_TYPE_NCHAR:
4026 case CCI_U_TYPE_VARNCHAR:
4028 char *value, *invalid_pos =
NULL;
4031 bool is_composed =
false;
4041 off_t
p = invalid_pos !=
NULL ? (invalid_pos - value) : 0;
4042 snprintf (msg,
sizeof (msg),
"%llu", (
long long unsigned int) p);
4049 char *composed =
NULL;
4051 composed = (
char *) malloc (composed_size + 1);
4052 if (composed ==
NULL)
4059 assert (composed_size <= val_size);
4060 composed[composed_size] =
'\0';
4065 val_size = composed_size;
4080 case CCI_U_TYPE_BIT:
4081 case CCI_U_TYPE_VARBIT:
4086 err_code =
db_make_bit (&db_val, val_size * 8, value, val_size * 8);
4089 case CCI_U_TYPE_NUMERIC:
4093 int precision, scale;
4099 strcpy (tmp, value);
4101 tmp[val_size] =
'\0';
4103 precision =
strlen (tmp);
4104 p = strchr (tmp,
'.');
4125 coercion_flag =
FALSE;
4127 case CCI_U_TYPE_BIGINT:
4135 case CCI_U_TYPE_INT:
4143 case CCI_U_TYPE_SHORT:
4151 case CCI_U_TYPE_MONETARY:
4158 case CCI_U_TYPE_FLOAT:
4165 case CCI_U_TYPE_DOUBLE:
4172 case CCI_U_TYPE_DATE:
4174 short month, day, year;
4179 case CCI_U_TYPE_TIME:
4186 case CCI_U_TYPE_TIMESTAMP:
4188 short yr, mon, day, hh, mm, ss;
4212 case CCI_U_TYPE_TIMESTAMPTZ:
4213 case CCI_U_TYPE_TIMESTAMPLTZ:
4215 short yr, mon, day, hh, mm, ss;
4224 if (tz_size > CCI_TZ_SIZE)
4249 case CCI_U_TYPE_DATETIME:
4251 short yr, mon, day, hh, mm, ss, ms;
4263 case CCI_U_TYPE_DATETIMELTZ:
4264 case CCI_U_TYPE_DATETIMETZ:
4266 short yr, mon, day, hh, mm, ss, ms;
4274 if (tz_size > CCI_TZ_SIZE)
4294 case CCI_U_TYPE_SET:
4295 case CCI_U_TYPE_MULTISET:
4296 case CCI_U_TYPE_SEQUENCE:
4299 int remain_size = data_size;
4300 void *ele_type_arg = net_value;
4311 if (type == CCI_U_TYPE_SET)
4315 else if (type == CCI_U_TYPE_MULTISET)
4324 while (remain_size > 0)
4332 ele_size =
netval_to_dbval (ele_type_arg, cur_p, &ele_val, net_buf, desired_type);
4339 remain_size -= ele_size;
4341 if (type == CCI_U_TYPE_SEQUENCE)
4351 if (type == CCI_U_TYPE_SEQUENCE)
4360 type = CCI_U_TYPE_SET;
4362 coercion_flag =
FALSE;
4364 case CCI_U_TYPE_OBJECT:
4377 coercion_flag =
FALSE;
4380 case CCI_U_TYPE_BLOB:
4381 case CCI_U_TYPE_CLOB:
4387 coercion_flag =
FALSE;
4390 case CCI_U_TYPE_JSON:
4401 case CCI_U_TYPE_USHORT:
4402 case CCI_U_TYPE_UINT:
4403 case CCI_U_TYPE_UBIGINT:
4452 for (i = 0; i < ncols; i++)
4454 if (sensitive_flag ==
TRUE && col_update_info[i].updatable ==
TRUE)
4456 if (tuple_obj ==
NULL)
4462 error =
db_get (tuple_obj, col_update_info[i].attr_name, &val);
4477 data_size +=
dbval_to_net_buf (&val, net_buf, 1, max_col_size, null_type_column ? null_type_column[i] : 0);
4489 unsigned char ext_col_type;
4490 bool client_support_tz =
true;
4500 client_support_tz =
false;
4531 length = (length + 7) / 8;
4532 if (max_col_size > 0)
4534 length = MIN (length, max_col_size);
4547 char *decomposed =
NULL;
4548 bool need_decomp =
false;
4552 if (max_col_size > 0)
4554 bytes_size = MIN (bytes_size, max_col_size);
4566 decomposed = (
char *)
MALLOC (decomp_size *
sizeof (
char));
4567 if (decomposed !=
NULL)
4572 bytes_size = decomp_size;
4584 if (decomposed !=
NULL)
4598 char *decomposed =
NULL;
4599 bool need_decomp =
false;
4603 if (max_col_size > 0)
4605 bytes_size = MIN (bytes_size, max_col_size);
4616 decomposed = (
char *)
MALLOC (decomp_size *
sizeof (
char));
4617 if (decomposed !=
NULL)
4623 bytes_size = decomp_size;
4635 if (decomposed !=
NULL)
4646 char *decomposed =
NULL;
4647 bool need_decomp =
false;
4651 if (max_col_size > 0)
4653 bytes_size = MIN (bytes_size, max_col_size);
4664 decomposed = (
char *)
MALLOC (decomp_size *
sizeof (
char));
4665 if (decomposed !=
NULL)
4670 bytes_size = decomp_size;
4682 if (decomposed !=
NULL)
4738 add_res_data_date (net_buf, (
short) yr, (
short) mon, (
short) day, ext_col_type, &data_size);
4744 int hour, minute, second;
4747 add_res_data_time (net_buf, (
short) hour, (
short) minute, (
short) second, ext_col_type, &data_size);
4755 int yr, mon, day, hh, mm, ss;
4760 add_res_data_timestamp (net_buf, (
short) yr, (
short) mon, (
short) day, (
short) hh, (
short) mm, (
short) ss,
4761 ext_col_type, &data_size);
4772 int yr, mon, day, hh, mm, ss;
4774 char tz_str[CCI_TZ_SIZE + 1];
4792 tz_id = ts_tz->
tz_id;
4812 if (client_support_tz ==
true)
4815 tz_str, ext_col_type, &data_size);
4819 add_res_data_timestamp (net_buf, (
short) yr, (
short) mon, (
short) day, (
short) hh, (
short) mm, (
short) ss,
4820 ext_col_type, &data_size);
4827 int yr, mon, day, hh, mm, ss, ms;
4830 add_res_data_datetime (net_buf, (
short) yr, (
short) mon, (
short) day, (
short) hh, (
short) mm, (
short) ss,
4831 (
short) ms, ext_col_type, &data_size);
4841 int yr, mon, day, hh, mm, ss, ms;
4842 char tz_str[CCI_TZ_SIZE + 1];
4860 tz_id = dt_tz->
tz_id;
4886 if (client_support_tz ==
true)
4889 (
short) ms, tz_str, ext_col_type, &data_size);
4893 add_res_data_datetime (net_buf, (
short) yr, (
short) mon, (
short) day, (
short) hh, (
short) mm, (
short) ss,
4894 (
short) ms, ext_col_type, &data_size);
4918 strncpy (buf, str,
sizeof (buf) - 1);
4919 buf[
sizeof (buf) - 1] =
'\0';
4940 char cas_type = CCI_U_TYPE_NULL;
4949 if (element ==
NULL)
4956 if (num_element <= 0)
4962 if (element_type > 0)
4964 cas_type = element_type;
4969 for (i = 0; i < num_element; i++)
4974 if (i == 0 || cas_type == CCI_U_TYPE_NULL)
4991 if ((err_flag) && (element !=
NULL))
5009 int set_size_msg_offset;
5014 if (column_type_flag)
5032 for (i = 0; i < num_element; i++)
5034 set_data_size +=
dbval_to_net_buf (&(element[i]), net_buf, 1, max_col_size, 0);
5072 bytes_size =
strlen (str);
5163 char **attr_name =
NULL;
5170 attr_name = (
char **)
MALLOC (
sizeof (
char *) * alloc_num);
5171 if (attr_name ==
NULL)
5178 if (num_attr >= alloc_num)
5181 attr_name = (
char **)
REALLOC (attr_name,
sizeof (
char *) * alloc_num);
5182 if (attr_name ==
NULL)
5191 *ret_attr_name = attr_name;
5199 char **attr_name =
NULL;
5202 attr_num = argc - 1;
5203 attr_name = (
char **)
MALLOC (
sizeof (
char *) * attr_num);
5204 if (attr_name ==
NULL)
5208 for (i = 0; i < attr_num; i++)
5214 if (name_size <= 1 || tmp_p[name_size - 1] !=
'\0')
5219 attr_name[
i] = tmp_p;
5222 *ret_attr_name = attr_name;
5233 unsigned char cas_type;
5239 for (i = 0; i < attr_num; i++)
5241 p = strrchr (attr_name[i],
'.');
5256 err_code =
db_get (obj, attr_name[i], &path_val);
5277 cas_type = CCI_U_TYPE_NULL;
5317 for (i = 0; i < attr_num; i++)
5319 err_code =
db_get (obj, attr_name[i], &val);
5337 int num_tuple_msg_offset;
5340 char fetch_end_flag = 0;
5343 char sensitive_flag = fetch_flag & CCI_FETCH_SENSITIVE;
5347 if (result_set_idx <= 0)
5350 if (q_result ==
NULL)
5361 q_result = srv_handle->
q_result + (result_set_idx - 1);
5366 sensitive_flag =
TRUE;
5371 sensitive_flag =
FALSE;
5382 if (cursor_pos == 1)
5437 memset ((
char *) &tuple_obj, 0,
sizeof (
T_OBJECT));
5460 memset ((
char *) &tuple_obj, 0xff,
sizeof (
T_OBJECT));
5534 int tuple_num, tuple_num_msg_offset;
5538 char fetch_end_flag = 0;
5542 if (class_table ==
NULL)
5548 memset (&dummy_obj, 0,
sizeof (
T_OBJECT));
5550 if (num_result < cursor_pos)
5557 for (i = 0; (i < fetch_count) && (cursor_pos <= num_result); i++)
5575 if (cursor_pos > num_result)
5596 int num_tuple_msg_offset;
5599 char fetch_end_flag = 0;
5605 const char *attr_name;
5609 char *default_value_string =
NULL;
5610 bool alloced_default_value_string =
false;
5613 if (q_result ==
NULL)
5646 memset ((
char *) &tuple_obj, 0,
sizeof (
T_OBJECT));
5648 for (i = 0; i < fetch_count; i++)
5661 if (class_obj ==
NULL)
5673 if (srv_handle->
schema_type == CCI_SCH_CLASS_ATTRIBUTE)
5682 if (db_attr ==
NULL)
5687 memset (&attr_info, 0,
sizeof (attr_info));
5720 if (alloced_default_value_string)
5802 int tuple_num, tuple_num_msg_offset;
5804 char fetch_end_flag = 0;
5808 std::string arg_str;
5812 memset (&dummy_obj, 0,
sizeof (
T_OBJECT));
5817 for (i = 1; (i < cursor_pos) && (tmp_p); i++)
5821 if (i != cursor_pos)
5834 for (i = 0; (tmp_p) && (i < fetch_count); i++)
5837 unsigned char cas_type;
5863 for (j = 1; j <= num_args; j++)
5877 arg_str.push_back (cas_type);
5878 arg_str.push_back (
' ');
5913 int tuple_num, tuple_num_msg_offset;
5915 char fetch_end_flag = 0;
5918 memset (&dummy_obj, 0,
sizeof (
T_OBJECT));
5923 for (i = 1; (i < cursor_pos) && (tmp_p); i++)
5928 if (i != cursor_pos)
5941 for (i = 0; (tmp_p) && (i < fetch_count); i++)
5980 int tuple_num, tuple_num_msg_offset;
5984 char *name, *attr_name;
5985 int bt_total_pages, bt_num_keys, bt_leaf_pages, bt_height;
5987 char fetch_end_flag = 0;
5990 memset (&dummy_obj, 0,
sizeof (
T_OBJECT));
5998 for (i = 1; tmp_p; i++)
6016 bt_total_pages = bt_num_keys = bt_leaf_pages = bt_height = 0;
6019 for (j = 0; attr[j]; j++)
6079 int tuple_num, tuple_num_msg_offset;
6080 char fetch_end_flag = 0;
6083 memset (&dummy_obj, 0,
sizeof (
T_OBJECT));
6088 for (i = 1; (i < cursor_pos) && (tmp_p); i++)
6090 tmp_p = tmp_p->
next;
6092 if (i != cursor_pos)
6105 for (i = 0; (tmp_p) && (i < fetch_count); i++, tmp_p = tmp_p->
next)
6110 double trig_priority;
6125 if (tmp_str !=
NULL)
6162 if (tmp_str ==
NULL)
6164 tmp_str = (
char *)
"";
6272 int tuple_num, tuple_num_msg_offset;
6275 char fetch_end_flag = 0;
6279 if (priv_table ==
NULL)
6286 memset (&dummy_obj, 0,
sizeof (
T_OBJECT));
6288 if (num_result < cursor_pos)
6296 for (i = 0; (i < fetch_count) && (cursor_pos <= num_result); i++)
6301 index = cursor_pos - 1;
6311 switch (priv_table[index].
priv)
6341 if (priv_table[index].
grant)
6355 if (cursor_pos > num_result)
6376 int tuple_num_msg_offset;
6377 char fetch_end_flag = 0;
6599 unsigned char ext_type,
int *net_size)
6626 char *tz_str,
unsigned char ext_type,
int *net_size)
6630 tz_size =
strlen (tz_str);
6660 unsigned char ext_type,
int *net_size)
6688 char *tz_str,
unsigned char ext_type,
int *net_size)
6693 tz_size =
strlen (tz_str);
6817 strcpy (buf,
"UPDATE");
6821 strcpy (buf,
"STATEMENT_UPDATE");
6825 strcpy (buf,
"DELETE");
6829 strcpy (buf,
"STATEMENT_DELETE");
6833 strcpy (buf,
"INSERT");
6837 strcpy (buf,
"STATEMENT_INSERT");
6841 strcpy (buf,
"ALTER");
6845 strcpy (buf,
"DROP");
6849 strcpy (buf,
"COMMIT");
6853 strcpy (buf,
"ROLLBACK");
6857 strcpy (buf,
"ABORT");
6861 strcpy (buf,
"TIMEOUT");
6865 strcpy (buf,
"ALL");
6869 strcpy (buf,
"NULL");
6878 strcpy (buf,
"INACTIVE");
6882 strcpy (buf,
"ACTIVE");
6886 strcpy (buf,
"INVALID");
6899 strcpy (buf,
"BEFORE");
6903 strcpy (buf,
"AFTER");
6907 strcpy (buf,
"DEFERRED");
6919 int num_markers = 0;
6921 for (p = stmt; *
p; p++)
6927 else if (*p ==
'-' && *(p + 1) ==
'-')
6931 else if (*p ==
'/' && *(p + 1) ==
'*')
6935 else if (*p ==
'/' && *(p + 1) ==
'/')
6939 else if (*p ==
'\'')
6976 if (*p ==
'*' && *(p + 1) ==
'/')
6987 if (*p ==
'\'' && *(p + 1) ==
'\'')
6995 else if (*p ==
'\'')
7005 if (*p ==
'\"' && *(p + 1) ==
'\"')
7013 else if (*p ==
'\"')
7026 if (strncasecmp (stmt,
"insert", 6) == 0)
7030 else if (strncasecmp (stmt,
"update", 6) == 0)
7034 else if (strncasecmp (stmt,
"delete", 6) == 0)
7038 else if (strncasecmp (stmt,
"call", 4) == 0)
7042 else if (strncasecmp (stmt,
"evaluate", 8) == 0)
7064 int stmt_id = q_result->
stmt_id;
7065 char updatable_flag = prepare_flag & CCI_PREPARE_UPDATABLE;
7066 char *null_type_column =
NULL;
7078 updatable_flag =
TRUE;
7084 updatable_flag =
FALSE;
7093 if (column_info ==
NULL)
7105 unsigned char cas_type;
7108 char *temp_column =
NULL;
7111 temp_column = (
char *)
REALLOC (null_type_column, num_cols + 1);
7112 if (temp_column ==
NULL)
7114 if (null_type_column !=
NULL)
7121 null_type_column = temp_column;
7122 null_type_column[num_cols] = 0;
7131 if (strchr (col_name,
'*') !=
NULL)
7143 if (col_update_info ==
NULL)
7145 updatable_flag =
FALSE;
7154 ALLOC_COPY (col_update_info[num_cols].attr_name, attr_name);
7155 ALLOC_COPY (col_update_info[num_cols].class_name, class_name);
7156 if (col_update_info[num_cols].attr_name !=
NULL && col_update_info[num_cols].class_name !=
NULL)
7164 if (updatable_flag ==
FALSE || col_update_info[num_cols].updatable ==
FALSE)
7166 attr_name = (
char *)
"";
7191 null_type_column[num_cols] = 1;
7198 #ifndef LIBCAS_FOR_JSP 7210 set_column_info (net_buf, cas_type, scale, precision, charset, col_name, attr_name, class_name,
7238 prepare_column_info_set (net_buf, 0, 0, 0,
CAS_SCHEMA_DEFAULT_CHARSET,
"",
"", 0, 0, 0, 0, 0, 0, 0,
"",
"", 0,
7254 int i, tuple_count,
error;
7279 memset (&ins_oid, 0,
sizeof (
T_OBJECT));
7286 memset (&ins_oid, 0,
sizeof (
T_OBJECT));
7311 memset (&ins_oid, 0,
sizeof (
T_OBJECT));
7317 memset (&ins_oid, 0,
sizeof (
T_OBJECT));
7324 memset (&ins_oid, 0,
sizeof (
T_OBJECT));
7345 if (attribute ==
NULL)
7351 if (attr_domain ==
NULL)
7375 char precision_str[16], scale_str[16];
7377 char *domain_str =
NULL;
7380 int is_first =
TRUE;
7381 const char *collection_str;
7382 char *set_dom_name_p;
7384 precision_str[0] = scale_str[0] =
'\0';
7391 sprintf (precision_str,
"%d", prec);
7396 sprintf (scale_str,
"%d", scale);
7399 collection_str =
NULL;
7416 collection_str =
"set";
7419 if (collection_str ==
NULL)
7421 collection_str =
"multiset";
7425 if (collection_str ==
NULL)
7427 collection_str =
"sequence";
7430 size =
strlen (collection_str) + 3;
7432 domain_str = (
char *) malloc (size);
7433 if (domain_str ==
NULL)
7438 sprintf (domain_str,
"%s(", collection_str);
7442 if (set_dom_name_p ==
NULL)
7447 if (is_first ==
TRUE)
7449 size += (
strlen (set_dom_name_p) + 1);
7453 size += (
strlen (set_dom_name_p) + 3);
7456 domain_str = (
char *) realloc (domain_str, size);
7457 if (domain_str ==
NULL)
7463 if (is_first ==
TRUE)
7469 strcat (domain_str,
", ");
7471 strcat (domain_str, set_dom_name_p);
7474 strcat (domain_str,
")");
7478 sprintf (scale_str,
"%d", scale);
7488 if (domain_str ==
NULL)
7494 if (precision_str[0] !=
'\0')
7496 size +=
strlen (precision_str) + 2;
7499 if (scale_str[0] !=
'\0')
7501 size +=
strlen (scale_str) + 1;
7504 domain_str = (
char *) malloc (size);
7505 if (domain_str ==
NULL)
7510 domain_str_p = domain_str;
7513 if (precision_str[0] !=
'\0')
7515 STRING_APPEND (domain_str_p, avail_size,
"(%s", precision_str);
7516 if (scale_str[0] !=
'\0')
7532 int page,
slot, vol;
7534 char del1, del2, del3;
7541 read = sscanf (str,
"%c%d%c%d%c%d", &del1, &page, &del2, &slot, &del3, &vol);
7547 if (del1 !=
'@' || del2 !=
'|' || del3 !=
'|')
7552 if (page < 0 || slot < 0 || vol < 0)
7574 int avail_size =
sizeof (sql_stmt) - 1;
7576 const char *case_stmt;
7577 const char *where_vclass;
7583 case_stmt =
"CASE WHEN is_system_class = 'YES' THEN 0 \ 7584 WHEN class_type = 'CLASS' THEN 2 \ 7589 case_stmt =
"CASE WHEN is_system_class = 'YES' THEN 0 \ 7590 WHEN class_type = 'CLASS' THEN 2 \ 7593 where_vclass =
"class_type = 'VCLASS'";
7595 STRING_APPEND (sql_p, avail_size,
"SELECT class_name, CAST(%s AS short), comment FROM db_class ", case_stmt);
7596 if (pattern_flag & CCI_CLASS_NAME_PATTERN_MATCH)
7602 STRING_APPEND (sql_p, avail_size,
"WHERE class_name LIKE '%s' ESCAPE '%s' AND %s", class_name,
7607 STRING_APPEND (sql_p, avail_size,
"WHERE %s", where_vclass);
7614 STRING_APPEND (sql_p, avail_size,
"WHERE class_name LIKE '%s' ESCAPE '%s' ", class_name,
7621 if (class_name ==
NULL)
7623 class_name = (
char *)
"";
7628 STRING_APPEND (sql_p, avail_size,
"WHERE class_name = '%s' AND %s", class_name, where_vclass);
7632 STRING_APPEND (sql_p, avail_size,
"WHERE class_name = '%s'", class_name);
7653 int avail_size =
sizeof (sql_stmt) - 1;
7659 STRING_APPEND (sql_p, avail_size,
"SELECT class_name, attr_name FROM db_attribute WHERE ");
7661 if (class_attr_flag)
7667 STRING_APPEND (sql_p, avail_size,
" attr_type in {'INSTANCE', 'SHARED'} ");
7670 if (pattern_flag & CCI_CLASS_NAME_PATTERN_MATCH)
7674 STRING_APPEND (sql_p, avail_size,
" AND class_name LIKE '%s' ESCAPE '%s' ", class_name,
7680 if (class_name ==
NULL)
7682 class_name = (
char *)
"";
7684 STRING_APPEND (sql_p, avail_size,
" AND class_name = '%s' ", class_name);
7687 if (pattern_flag & CCI_ATTR_NAME_PATTERN_MATCH)
7691 STRING_APPEND (sql_p, avail_size,
" AND attr_name LIKE '%s' ESCAPE '%s' ", attr_name,
7697 if (attr_name ==
NULL)
7699 attr_name = (
char *)
"";
7701 STRING_APPEND (sql_p, avail_size,
" AND attr_name = '%s' ", attr_name);
7703 STRING_APPEND (sql_p, avail_size,
" ORDER BY class_name, def_order");
7720 char sql_stmt[1024];
7723 if (class_name ==
NULL)
7724 class_name = (
char *)
"";
7727 sprintf (sql_stmt,
"SELECT vclass_def FROM db_vclass WHERE vclass_name = '%s'", class_name);
7760 for (method = method_list; method; method =
db_method_next (method))
7768 *result = (
void *) method_list;
7790 *result = (
void *) method_files;
7800 int alloc_table_size = 0;
7814 for (obj_tmp = obj_list; obj_tmp; obj_tmp = obj_tmp->
next)
7818 if (num_obj + 1 > alloc_table_size)
7820 alloc_table_size += 10;
7822 if (class_table ==
NULL)
7847 srv_handle->
session = (
void *) class_table;
7875 for (i = 0; attr[
i]; i++)
7887 *result = (
void *) constraint;
7897 const char *name_trigger_target =
NULL;
7900 bool is_pattern_match;
7902 is_pattern_match = (flag & CCI_CLASS_NAME_PATTERN_MATCH) ?
true :
false;
7904 if (class_name ==
NULL && !is_pattern_match)
7914 if (class_name ==
NULL)
7916 all_trigger = tmp_trigger;
7921 for (tmp_t = tmp_trigger; tmp_t; tmp_t = tmp_t->next)
7923 tmp_obj = tmp_t->op;
7927 if (trigger ==
NULL)
7934 obj_trigger_target = trigger->
class_mop;
7938 if (name_trigger_target ==
NULL)
7945 if (is_pattern_match)
7947 if (
str_like ((
char *) name_trigger_target, class_name,
'\\') == 1)
7959 if (strcmp (class_name, name_trigger_target) == 0)
7976 if (error !=
NO_ERROR && all_trigger)
7988 *result = (
void *) all_trigger;
7996 int priv_table_alloc_num = 0;
7997 unsigned int class_priv;
7999 if ((pat_flag & CCI_CLASS_NAME_PATTERN_MATCH) == 0)
8008 if (class_obj !=
NULL)
8011 if (priv_table ==
NULL)
8030 for (obj_tmp = obj_list; obj_tmp; obj_tmp = obj_tmp->
next)
8035 if (class_name !=
NULL &&
str_like (p, class_name,
'\\') < 1)
8040 if (num_tuple + 8 > priv_table_alloc_num)
8043 priv_table_alloc_num += 128;
8044 if (priv_table ==
NULL)
8065 srv_handle->
session = (
void *) priv_table;
8076 int priv_table_alloc_num = 0;
8077 unsigned int class_priv;
8082 if (class_obj ==
NULL)
8084 goto attr_priv_finale;
8089 goto attr_priv_finale;
8096 if (pat_flag & CCI_ATTR_NAME_PATTERN_MATCH)
8098 if (attr_name_pat !=
NULL &&
str_like (attr_name, attr_name_pat,
'\\') < 1)
8105 if (attr_name_pat ==
NULL || strcmp (attr_name, attr_name_pat) != 0)
8111 if (num_tuple + 8 > priv_table_alloc_num)
8113 priv_table_alloc_num += 100;
8115 if (priv_table ==
NULL)
8122 num_tuple +=
set_priv_table (class_priv, attr_name, priv_table, num_tuple);
8135 srv_handle->
session = (
void *) priv_table;
8177 int set_type = CCI_U_TYPE_UNKNOWN;
8206 attr_table->
scale = scale;
8247 if (class_obj ==
NULL)
8275 int grant_opt, priv_type;
8279 grant_opt = class_priv >> 8;
8283 for (i = 0; i < 7; i++)
8285 if (class_priv & priv_type)
8290 if (grant_opt & priv_type)
8312 int stmt_id, num_result, stmt_type;
8339 #ifndef LIBCAS_FOR_JSP 8354 if (q_result ==
NULL)
8364 q_result->
result = (
void *) result;
8370 srv_handle->
session = (
void *) session;
8386 int avail_size =
sizeof (sql_stmt) - 1;
8390 STRING_APPEND (sql_p, avail_size,
"SELECT class_name, super_class_name \ 8391 FROM db_direct_super_class ");
8392 if (pattern_flag & CCI_CLASS_NAME_PATTERN_MATCH)
8396 STRING_APPEND (sql_p, avail_size,
"WHERE class_name LIKE '%s' ESCAPE '%s' ", class_name,
8402 if (class_name ==
NULL)
8404 class_name = (
char *)
"";
8406 STRING_APPEND (sql_p, avail_size,
"WHERE class_name = '%s'", class_name);
8425 int avail_size =
sizeof (sql_stmt) - 1;
8433 if (class_object ==
NULL)
8440 STRING_APPEND (sql_p, avail_size,
"SELECT a.class_name, b.key_attr_name, b.key_order+1, a.index_name");
8441 STRING_APPEND (sql_p, avail_size,
" FROM db_index a, db_index_key b WHERE ");
8442 STRING_APPEND (sql_p, avail_size,
" a.class_name = b.class_name ");
8443 STRING_APPEND (sql_p, avail_size,
" AND a.index_name = b.index_name ");
8444 STRING_APPEND (sql_p, avail_size,
" AND a.is_primary_key = 'YES' ");
8445 STRING_APPEND (sql_p, avail_size,
" AND a.class_name = '%s'", class_name);
8446 STRING_APPEND (sql_p, avail_size,
" ORDER BY b.key_attr_name");
8508 const char *fktable_name,
const char *fkcolumn_name,
short key_seq,
8510 const char *pk_name,
int sort_by)
8517 if (new_res ==
NULL)
8584 const char *pktable_name, *pk_name;
8588 *result = (
void *)
NULL;
8590 if (fktable_name ==
NULL)
8596 if (fktable_obj ==
NULL)
8616 if (pktable_obj ==
NULL)
8623 if (pktable_name ==
NULL)
8643 "Referenced class has no primary key.");
8650 if (pk_attr ==
NULL)
8658 if (fk_attr ==
NULL)
8665 for (i = 0; pk_attr[
i] !=
NULL && fk_attr[
i] !=
NULL; i++)
8683 if (pk_attr[i] !=
NULL || fk_attr[i] !=
NULL)
8687 "The number of keys of the foreign " "key is different from that of the " 8693 *result = (
void *) fk_res;
8718 const char *pk_name;
8722 *result = (
void *)
NULL;
8724 if (pktable_name ==
NULL)
8730 if (pktable_obj ==
NULL)
8739 if (fktable_name ==
NULL)
8745 if (fktable_obj ==
NULL)
8761 if (pk_attr ==
NULL)
8766 for (fk_info = pk->fk_info; fk_info !=
NULL; fk_info = fk_info->
next)
8778 if (fktable_obj ==
NULL)
8785 if (fktable_name ==
NULL)
8801 if (fk_attr ==
NULL)
8805 "Foreign key has no attribute.");
8811 if (fk_attr ==
NULL)
8815 "Primary key has foreign key information, " "but there is no one referring it.");
8819 for (i = 0; pk_attr[
i] !=
NULL && fk_attr[
i] !=
NULL; i++)
8837 if (pk_attr[i] !=
NULL || fk_attr[i] !=
NULL)
8841 "The number of keys of the foreign " "key is different from that of the " 8847 *result = (
void *) fk_res;
8868 return CCI_CONSTRAINT_TYPE_UNIQUE;
8873 return CCI_CONSTRAINT_TYPE_UNIQUE;
8876 return CCI_CONSTRAINT_TYPE_INDEX;
8885 char *param_mode =
NULL;
8889 if (call_info ==
NULL)
8897 if (ret_val ==
NULL)
8906 if (arg_val ==
NULL)
8910 memset (arg_val, 0,
sizeof (
DB_VALUE *) * (num_args + 1));
8912 param_mode = (
char *)
MALLOC (
sizeof (
char) * num_args);
8913 if (param_mode ==
NULL)
8918 for (i = 0; i < num_args; i++)
8921 if (arg_val[i] ==
NULL)
8926 param_mode[
i] = CCI_PARAM_MODE_UNKNOWN;
8942 if (arg_val !=
NULL)
8944 for (i = 0; i < num_args; i++)
8975 for (; i < call_info->
num_args; i++)
8989 DB_VALUE **out_vals, null_val, *val_ptr;
8994 if (call_info ==
NULL)
9004 memset (&tuple_obj, 0,
sizeof (
T_OBJECT));
9013 for (i = 0; i < call_info->
num_args; i++)
9015 val_ptr = &null_val;
9016 if (call_info->
param_mode[i] & CCI_PARAM_MODE_OUT)
9018 val_ptr = out_vals[
i];
9034 unsigned int query_seq_num)
9044 err_code = srv_h_id;
9050 if (q_result ==
NULL)
9092 int new_handle_id = 0;
9114 if (new_handle_id > 0)
9126 return new_handle_id;
9140 goto ux_get_generated_keys_error;
9152 ux_get_generated_keys_error:
9165 const char *attr_name =
"";
9166 char updatable_flag =
TRUE;
9168 int num_col_offset, num_cols = 0;
9169 int tuple_count_offset, fetched_offset;
9170 int tuple_count = 0;
9197 goto ux_get_generated_keys_error;
9204 tuple_buf = &temp_buf;
9211 goto ux_get_generated_keys_error;
9226 err_code =
db_get (obj, attr_name, &value);
9230 goto ux_get_generated_keys_error;
9233 if (tuple_count == 1)
9262 if (tuple_count == 1)
9277 goto ux_get_generated_keys_error;
9282 if (tuple_count > 0)
9296 ux_get_generated_keys_error:
9310 const char *attr_name =
"";
9311 char updatable_flag =
TRUE;
9313 int num_col_offset, num_cols = 0;
9314 int tuple_count = 0;
9330 goto ux_get_generated_keys_error;
9344 goto ux_get_generated_keys_error;
9355 if (tuple_count == 0)
9360 for (i = 0; i < tuple_count; i++)
9362 tuple_buf = &temp_buf;
9371 goto ux_get_generated_keys_error;
9387 err_code =
db_get (obj, attr_name, &value);
9391 goto ux_get_generated_keys_error;
9438 ux_get_generated_keys_error:
9449 char updatable_flag =
FALSE;
9452 int new_handle_id = 0;
9461 goto ux_make_out_rs_error;
9468 goto ux_make_out_rs_error;
9483 goto ux_make_out_rs_error;
9490 unsigned char cas_type;
9493 const char *col_name, *attr_name, *
class_name;
9501 goto ux_make_out_rs_error;
9513 if (strchr (col_name,
'*') !=
NULL)
9544 #ifndef LIBCAS_FOR_JSP 9556 set_column_info (net_buf, cas_type, scale, precision, charset, col_name, attr_name, class_name,
9561 ux_make_out_rs_error:
9569 #ifdef LIBCAS_FOR_JSP 9573 bool jdbc_cache_is_hint;
9589 return jdbc_cache_life_time;
9597 #ifndef LIBCAS_FOR_JSP 9599 int elapsed_sec = 0, elapsed_msec = 0;
9638 if (err_code < 0 || errors_in_transaction > 0)
9697 #if !(defined(CAS_FOR_ORACLE) || defined(CAS_FOR_MYSQL)) 9714 if (cas_EHCTX ==
NULL)
9719 if (cas_EHCTX->
from == 0)
9725 cas_EHCTX->
to =
eid;
9746 if (cas_EHCTX !=
NULL)
9758 if (cas_EHCTX !=
NULL)
9769 if (cas_EHCTX ==
NULL)
9774 cas_EHCTX->
from = 0;
9783 unsigned int from, to;
9785 if (buf ==
NULL || bufsz <= 0)
9790 if (cas_EHCTX ==
NULL || cas_EHCTX->
from == 0)
9796 from = cas_EHCTX->
from;
9801 cas_EHCTX->
from = 0;
9808 buf_p = (
char *) malloc (32);
9823 snprintf (buf_p, 32,
", EID = %u ~ %u", from, to);
9827 snprintf (buf_p, 32,
", EID = %u", from);
9869 int lob_handle_size;
9908 err_code =
db_elo_write (elo_debug, offset, data, size, &size_written);
9942 err_code =
db_elo_read (elo_debug, offset, data, size, &size_read);
9963 const char *val_str =
NULL;
10001 int needed_size = 0;
10002 const char *single_value =
NULL;
10015 for (i = 0; i < size; i++)
10023 if (single_value ==
NULL)
10029 needed_size +=
strlen (single_value);
10036 needed_size += 2 * size;
10037 needed_size += 2 + 1;
10039 *out = (
char *)
MALLOC (needed_size);
10045 strcpy (*out,
"{");
10047 for (i = 0; i < size; i++)
10057 if (single_value ==
NULL)
10066 strcat (*out, single_value);
10069 strcat (*out,
", ");
10076 strcat (*out,
"}");
10088 return (
char *)
"\\";
10092 return (
char *)
"\\\\";
10130 #if !defined(LIBCAS_FOR_JSP) 10145 #if !defined(LIBCAS_FOR_JSP) 10146 bool reset_after_endtran =
false;
10149 char buf[LINE_MAX], *
p, *last;
10150 int list_size = DIM (hostlist);
10154 hostlist_p = hostlist;
10157 last = p +
sizeof (buf);
10158 p += snprintf (p, MAX (last - p, 0),
"WARNING: failed to connect to %s", *hostlist_p++);
10159 while (*hostlist_p !=
NULL)
10161 p += snprintf (p, MAX (last - p, 0),
", %s", *hostlist_p++);
10163 snprintf (p, MAX (last - p, 0),
".");
10170 hostlist_p = hostlist;
10173 last = p +
sizeof (buf);
10174 p += snprintf (p, MAX (last - p, 0),
"WARNING: attempt to connect to %s", *hostlist_p++);
10175 while (*hostlist_p !=
NULL)
10177 p += snprintf (p, MAX (last - p, 0),
", %s", *hostlist_p++);
10179 snprintf (p, MAX (last - p, 0),
" timed out.");
10186 hostlist_p = hostlist;
10189 last = p +
sizeof (buf);
10190 p += snprintf (p, MAX (last - p, 0),
"WARNING: skipped unusable databases at %s", *hostlist_p++);
10191 while (*hostlist_p !=
NULL)
10193 p += snprintf (p, MAX (last - p, 0),
", %s", *hostlist_p++);
10195 snprintf (p, MAX (last - p, 0),
".");
10206 reset_after_endtran =
true;
10217 hostlist_p = hostlist;
10219 last = p +
sizeof (buf);
10220 p += snprintf (p, MAX (last - p, 0),
"WARNING: HA replication delay detected on %s", *hostlist_p++);
10222 while (*hostlist_p !=
NULL)
10224 p += snprintf (p, MAX (last - p, 0),
", %s", *hostlist_p++);
10226 snprintf (p, MAX (last - p, 0),
".");
10263 int stmt_id, stmt_count;
10269 for (stmt_id = 0; stmt_id < stmt_count; stmt_id++)
10306 static unsigned char 10310 unsigned char u_set_type_lsb, u_set_type_msb;
10314 unsigned char cas_ext_type;
10316 u_set_type_lsb = u_set_type & 0x1f;
10317 u_set_type_msb = (u_set_type & 0x20) << 2;
10319 u_set_type = (T_CCI_U_TYPE) (u_set_type_lsb | u_set_type_msb);
10322 return cas_ext_type;
10327 u_set_type_lsb = u_set_type & 0x1f;
10328 u_set_type_msb = (u_set_type & 0x20) << 2;
10330 u_set_type = (T_CCI_U_TYPE) (u_set_type_lsb | u_set_type_msb);
10341 unsigned char msb_byte, lsb_byte;
10343 msb_byte = cas_type & CCI_CODE_COLLECTION;
10346 lsb_byte = CCI_GET_COLLECTION_DOMAIN (cas_type);
10348 ret_type = ((short) msb_byte << 8) | ((short) lsb_byte);
10352 assert (cas_type < 0x80);
10353 ret_type = (short) cas_type;
DB_OBJECT * db_find_class(const char *name)
int db_trigger_comment(DB_OBJECT *trobj, char **comment)
DB_C_FLOAT db_get_float(const DB_VALUE *value)
void schema_classpriv_meta(T_NET_BUF *net_buf)
INT64 num_long_transactions
bool cas_default_ansi_quotes
#define CHK_OPTIMIZATION_LEVEL_VALID(level)
T_QUERY_RESULT * q_result
static int fetch_constraint(T_SRV_HANDLE *, int, int, char, int, T_NET_BUF *, T_REQ_INFO *)
DB_OBJECT * db_attribute_class(DB_ATTRIBUTE *attribute)
db_error_log_handler_t db_register_error_log_handler(db_error_log_handler_t f)
void logddl_set_msg(const char *fmt,...)
#define CAS_TYPE_COLLECTION(DB_TYPE, SET_TYPE)
char database_name[SRV_CON_DBNAME_SIZE]
void net_arg_get_datetime(short *yr, short *mon, short *day, short *hh, short *mm, short *ss, short *ms, void *arg)
enum tran_auto_commit need_auto_commit
int db_make_datetime(DB_VALUE *value, const DB_DATETIME *datetime)
#define ER_TP_CANT_COERCE
T_BROKER_VERSION client_version
int cas_default_isolation_level
int db_value_coerce(const DB_VALUE *src, DB_VALUE *dest, const DB_DOMAIN *desired_domain)
T_BROKER_VERSION client_version
static char * consume_tokens(char *stmt, STATEMENT_STATUS stmt_status)
int ux_prepare(char *sql_stmt, int flag, char auto_commit_mode, T_NET_BUF *net_buf, T_REQ_INFO *req_info, unsigned int query_seq_num)
#define DB_ROW_COUNT_NOT_SET
static int oid_data_set(T_NET_BUF *net_buf, DB_OBJECT *obj, int attr_num, char **attr_name)
DB_COLLECTION * db_get_set(const DB_VALUE *value)
int ux_get_class_num_objs(char *class_name, int flag, T_NET_BUF *net_buf)
bool unicode_string_need_compose(const char *str_in, const int size_in, int *size_out, const UNICODE_NORMALIZATION *norm)
void ux_database_shutdown()
#define DB_HS_MISMATCHED_RW_MODE
#define NET_BUF_ERR_SET(NET_BUF)
int db_attribute_is_indexed(DB_ATTRIBUTE *attribute)
void schema_query_spec_meta(T_NET_BUF *net_buf)
void net_arg_get_datetimetz(short *yr, short *mon, short *day, short *hh, short *mm, short *ss, short *ms, char **tz, int *tz_size, void *arg)
SM_FOREIGN_KEY_INFO * fk_info
int db_find_all_triggers(DB_OBJLIST **list)
int db_elo_write(DB_ELO *elo, off_t pos, const void *buf, size_t count, DB_BIGINT *written_bytes)
int net_buf_cp_str(T_NET_BUF *net_buf, const char *buf, int size)
const char * db_get_class_name(DB_OBJECT *class_)
void ux_set_utype_for_datetimeltz(char u_type)
static const char * get_column_default_as_string(DB_ATTRIBUTE *attr, bool *alloc)
DB_DOMAIN * db_col_domain(DB_COLLECTION *col)
int db_domain_scale(const DB_DOMAIN *domain)
int ux_lob_write(DB_VALUE *lob_dbval, INT64 offset, int size, char *data, T_NET_BUF *net_buf)
MOP ws_mop(const OID *oid, MOP class_mop)
const char * db_get_type_name(DB_TYPE type_id)
int db_query_seek_tuple(DB_QUERY_RESULT *result, int offset, int seek_mode)
DB_ATTRIBUTE * db_get_attributes(DB_OBJECT *obj)
char stripped_column_name
void tran_get_tran_settings(int *lock_wait_in_msecs, TRAN_ISOLATION *tran_isolation, bool *async_ws)
int ux_set_isolation_level(int new_isol_level, T_NET_BUF *net_buf)
DB_VALUE * db_get_hostvars(DB_SESSION *session)
DB_OBJECT * db_object(DB_IDENTIFIER *oid)
static int class_attr_info(const char *class_name, DB_ATTRIBUTE *attr, char *attr_pattern, char pat_flag, T_ATTR_TABLE *attr_table)
void histo_print(FILE *stream)
DB_ATTRIBUTE * db_get_class_attribute(DB_OBJECT *obj, const char *name)
DB_SET * db_seq_create(MOP classop, const char *name, int size)
DB_CONST_C_BIT db_get_bit(const DB_VALUE *value, int *length)
static void add_res_data_float(T_NET_BUF *net_buf, float value, unsigned char ext_type, int *net_size)
#define TP_IS_SET_TYPE(typenum)
void cas_log_error_handler(unsigned int eid)
DB_CONST_C_NCHAR db_get_nchar(const DB_VALUE *value, int *length)
const char * source_class
int ux_col_set_drop(DB_COLLECTION *col, DB_VALUE *ele_val, T_NET_BUF *net_buf)
int db_domain_precision(const DB_DOMAIN *domain)
int db_get_int(const DB_VALUE *value)
int db_make_bigint(DB_VALUE *value, const DB_BIGINT num)
static int sch_class_info(T_NET_BUF *net_buf, char *class_name, char pattern_flag, char flag, T_SRV_HANDLE *, T_BROKER_VERSION client_version)
int db_trigger_class(DB_OBJECT *trobj, DB_OBJECT **class_)
int db_is_vclass(DB_OBJECT *op)
static int fetch_foreign_keys(T_SRV_HANDLE *, int, int, char, int, T_NET_BUF *, T_REQ_INFO *)
static unsigned char set_extended_cas_type(T_CCI_U_TYPE u_set_type, DB_TYPE db_type)
#define db_get_collection
SESSION_ID db_get_session_id(void)
DB_CONSTRAINT * db_constraint_next(DB_CONSTRAINT *constraint)
DB_C_DOUBLE db_get_double(const DB_VALUE *value)
int ux_get_attr_type_str(char *class_name, char *attr_name, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
static CAS_ERROR_LOG_HANDLE_CONTEXT * cas_EHCTX
int db_make_varchar(DB_VALUE *value, const int max_char_length, DB_CONST_C_CHAR str, const int char_str_byte_size, const int codeset, const int collation_id)
int db_seq_put(DB_SET *set, int index, DB_VALUE *value)
int db_datetime_decode(const DB_DATETIME *datetime, int *month, int *day, int *year, int *hour, int *minute, int *second, int *millisecond)
int db_method_arg_count(DB_METHOD *method)
#define NET_SIZE_DATETIME
void cas_log_write_nonl(unsigned int seq_num, bool unit_start, const char *fmt,...)
#define SQL_LOG2_EXEC_END(SQL_LOG2_VALUE, STMT_ID, RES)
static int execute_info_set(T_SRV_HANDLE *srv_handle, T_NET_BUF *net_buf, T_BROKER_VERSION client_version, char exec_flag)
int db_timestamp_encode_ses(const DB_DATE *date, const DB_TIME *timeval, DB_TIMESTAMP *utime, TZ_ID *dest_tz_id)
DB_CONSTRAINT * db_constraint_find_primary_key(DB_CONSTRAINT *constraint)
static int netval_to_dbval(void *type, void *value, DB_VALUE *db_val, T_NET_BUF *net_buf, char desired_type)
int db_value_clone(DB_VALUE *src, DB_VALUE *dest)
static int sch_queryspec(T_NET_BUF *net_buf, char *class_name, T_SRV_HANDLE *)
#define ER_QPROC_INVALID_XASLNODE
int db_trigger_event(DB_OBJECT *trobj, DB_TRIGGER_EVENT *event)
int db_is_instance(MOP obj)
int db_col_get(DB_COLLECTION *col, int element_index, DB_VALUE *value)
static void sch_constraint(T_NET_BUF *net_buf, char *class_name, void **result)
int(* T_FETCH_FUNC)(T_SRV_HANDLE *, int, int, char, int, T_NET_BUF *, T_REQ_INFO *)
int db_trigger_action_time(DB_OBJECT *trobj, DB_TRIGGER_TIME *tr_time)
int db_get_enum_codeset(const DB_VALUE *value)
DB_DOMAIN * db_domain_next(const DB_DOMAIN *domain)
int db_set_system_parameters(const char *data)
int ux_get_db_version(T_NET_BUF *net_buf, T_REQ_INFO *req_info)
int db_query_end(DB_QUERY_RESULT *result)
int db_get_enum_string_size(const DB_VALUE *value)
int db_attribute_order(DB_ATTRIBUTE *attribute)
void set_optimization_level(int level)
char * db_get_json_raw_body(const DB_VALUE *value)
void tz_get_session_tz_region(TZ_REGION *tz_region)
#define assert_release(e)
int db_trigger_condition_time(DB_OBJECT *trobj, DB_TRIGGER_TIME *tr_time)
int db_create_fbo(DB_VALUE *value, DB_TYPE type)
int db_make_object(DB_VALUE *value, DB_C_OBJECT *obj)
void net_arg_get_lob_handle(T_LOB_HANDLE *lob, void *arg)
static int sch_direct_super_class(T_NET_BUF *net_buf, char *class_name, int pattern_flag, T_SRV_HANDLE *srv_handle)
DB_CONSTRAINT * db_get_constraints(DB_OBJECT *obj)
static int get_attr_name(DB_OBJECT *obj, char ***ret_attr_name)
static int class_type(DB_OBJECT *class_obj)
DB_ATTRIBUTE ** db_constraint_attributes(DB_CONSTRAINT *constraint)
static void set_column_info(T_NET_BUF *net_buf, char ut, short scale, int prec, char charset, const char *col_name, const char *attr_name, const char *class_name, char is_non_null, T_BROKER_VERSION client_version)
DB_OBJECT * db_get_foreign_key_ref_class(DB_CONSTRAINT *constraint)
char database_user[SRV_CON_DBUSER_SIZE]
SM_DEFAULT_VALUE default_value
static int ux_get_generated_keys_client_insert(T_SRV_HANDLE *srv_handle, T_NET_BUF *net_buf)
void ux_set_session_id(const SESSION_ID session_id)
#define CAS_TYPE_FIRST_BYTE_PROTOCOL_MASK
int ux_execute_array(T_SRV_HANDLE *srv_handle, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
int ux_get_generated_keys(T_SRV_HANDLE *srv_handle, T_NET_BUF *net_buf)
int ux_get_row_count(T_NET_BUF *net_buf)
void db_query_format_free(DB_QUERY_TYPE *query_type)
void unicode_compose_string(const char *str_in, const int size_in, char *str_out, int *size_out, bool *is_composed, const UNICODE_NORMALIZATION *norm)
void ux_set_default_setting()
int db_make_date(DB_VALUE *value, const int month, const int day, const int year)
DB_DATETIMETZ * db_get_datetimetz(const DB_VALUE *value)
DB_CONST_C_CHAR db_get_char(const DB_VALUE *value, int *length)
INT64 num_queries_processed
DB_OBJLIST * db_get_superclasses(DB_OBJECT *obj)
int db_make_sequence(DB_VALUE *value, DB_C_SET *set)
void * jsp_get_db_result_set(int h_id)
static void add_res_data_double(T_NET_BUF *net_buf, double value, unsigned char ext_type, int *net_size)
DB_OBJECT * dbt_finish_object(DB_OTMPL *def)
const char * db_default_expression_string(DB_DEFAULT_EXPR_TYPE default_expr_type)
int db_json_val_from_str(const char *raw_str, const int str_size, DB_VALUE *json_val)
char * cas_log_error_handler_asprint(char *buf, size_t bufsz, bool clear)
#define SRV_CON_DBPASSWD_SIZE
#define CAS_MAKE_VER(MAJOR, MINOR, PATCH)
#define BTID_IS_EQUAL(b1, b2)
#define DB_HS_CONN_FAILURE
static void prepare_call_info_dbval_clear(T_PREPARE_CALL_INFO *call_info)
void db_string_free(char *string)
static bool has_stmt_result_set(char stmt_type)
double db_value_get_monetary_amount_as_double(const DB_VALUE *value)
DB_SET * db_set_create_multi(MOP classop, const char *name)
void dbt_abort_object(DB_OTMPL *def)
static void prepare_column_info_set(T_NET_BUF *net_buf, char ut, short scale, int prec, char charset, const char *col_name, const char *default_value, char auto_increment, char unique_key, char primary_key, char reverse_index, char reverse_unique, char foreign_key, char shared, const char *attr_name, const char *class_name, char nullable, T_BROKER_VERSION client_version)
int db_query_get_tuple_oid(DB_QUERY_RESULT *result, DB_VALUE *db_value)
void db_rewind_statement(DB_SESSION *session)
static bool need_reconnect_on_rctime(void)
int ux_oid_put(int argc, void **argv, T_NET_BUF *net_buf)
void jsp_set_prepare_call()
#define SHARD_NET_BUF_SIZE
void ux_get_default_setting()
void prm_set_integer_value(PARAM_ID prm_id, int value)
struct sm_foreign_key_info * next
void net_buf_clear(T_NET_BUF *net_buf)
int net_buf_cp_float(T_NET_BUF *net_buf, float value)
const char * db_attribute_name(DB_ATTRIBUTE *attribute)
SM_DOMAIN * db_query_format_domain(DB_QUERY_TYPE *query_type)
static T_FK_INFO_RESULT * add_fk_info_result(T_FK_INFO_RESULT *fk_res, const char *pktable_name, const char *pkcolumn_name, const char *fktable_name, const char *fkcolumn_name, short key_seq, SM_FOREIGN_KEY_ACTION update_action, SM_FOREIGN_KEY_ACTION delete_action, const char *fk_name, const char *pk_name, int sort_by)
void logddl_set_sql_text(char *sql_text, int len)
int db_attribute_is_shared(DB_ATTRIBUTE *attribute)
char jdbc_cache_only_hint
DB_CLASS_MODIFICATION_STATUS db_has_modified_class(DB_SESSION *session, int stmt_id)
int db_make_elo(DB_VALUE *value, DB_TYPE type, const DB_ELO *elo)
bool db_disable_trigger(void)
int db_attribute_is_non_null(DB_ATTRIBUTE *attribute)
void net_arg_get_int(int *value, void *arg)
void cas_log_write_query_string_nonl(char *query, int size)
void release_all_fk_info_results(T_FK_INFO_RESULT *fk_res)
const char * rel_build_number(void)
SM_FOREIGN_KEY_ACTION update_action
int db_attribute_is_reverse_unique(DB_ATTRIBUTE *attribute)
DB_ELO * db_get_elo(const DB_VALUE *value)
#define ER_FK_REF_CLASS_HAS_NOT_PK
#define IS_NULL_CAS_TYPE(cas_type)
int ux_col_set_add(DB_COLLECTION *col, DB_VALUE *ele_val, T_NET_BUF *net_buf)
int db_set_client_cache_time(DB_SESSION *session, int stmt_ndx, CACHE_TIME *cache_time)
void db_set_preferred_hosts(const char *hosts)
void hm_qresult_clear(T_QUERY_RESULT *q_result)
void logddl_set_execute_type(char exe_type)
int db_get_connect_status(void)
void cas_log_error_handler_begin(void)
char * db_get_host_connected(void)
int ux_get_last_insert_id(T_NET_BUF *net_buf)
DB_QUERY_TYPE * db_query_format_next(DB_QUERY_TYPE *query_type)
int db_get_host_list_with_given_status(char **hostlist, int list_size, int status)
DB_TIMESTAMPTZ * db_get_timestamptz(const DB_VALUE *value)
int db_date_encode(DB_DATE *date, int month, int day, int year)
static int oid_attr_info_set(T_NET_BUF *net_buf, DB_OBJECT *obj, int num_attr, char **attr_name)
int db_make_short(DB_VALUE *value, const DB_C_SHORT num)
DB_DEFAULT_EXPR_TYPE default_expr_type
const char * db_attribute_comment(DB_ATTRIBUTE *attribute)
void cas_set_db_connect_status(int status)
static int set_priv_table(unsigned int class_priv, char *name, T_PRIV_TABLE *priv_table, int index)
static int get_attr_name_from_argv(int argc, void **argv, char ***ret_attr_name)
void ux_get_system_parameter(const char *param, bool *value)
static void add_res_data_timestamp(T_NET_BUF *net_buf, short yr, short mon, short day, short hh, short mm, short ss, unsigned char ext_type, int *net_size)
int db_get_system_parameters(char *data, int len)
T_PREPARE_CALL_INFO * prepare_call_info
char cur_statement_pooling
#define SQL_LOG2_EXEC_BEGIN(SQL_LOG2_VALUE, STMT_ID)
int net_buf_cp_cas_type_and_charset(T_NET_BUF *net_buf, unsigned char cas_type, unsigned char charset)
char * db_query_format_name(DB_QUERY_TYPE *query_type)
void net_buf_init(T_NET_BUF *net_buf, T_BROKER_VERSION client_version)
void jsp_srv_handle_free(int h_id)
int net_buf_cp_int(T_NET_BUF *net_buf, int value, int *begin_offset)
DB_RESULTSET db_get_resultset(const DB_VALUE *value)
int long_transaction_time
INTL_CODESET lang_charset(void)
DB_DEFAULT_EXPR default_expr
#define CAS_PROTO_CURRENT_VER
void net_arg_get_timestamp(short *yr, short *mon, short *day, short *hh, short *mm, short *ss, void *arg)
DB_MARKER * db_marker_next(DB_MARKER *marker)
int tran_reset_wait_times(int wait_in_msecs)
int tz_create_datetimetz(const DB_DATETIME *dt, const char *tz_str, const int tz_size, const TZ_REGION *default_tz_region, DB_DATETIMETZ *dt_tz, const char **end_tz_str)
unsigned int DB_TIMESTAMP
static int sch_imported_keys(T_NET_BUF *net_buf, char *class_name, void **result)
static int cur_tuple(T_QUERY_RESULT *q_result, int max_col_size, char sensitive_flag, DB_OBJECT *obj, T_NET_BUF *net_buf)
static int prepare_column_list_info_set(DB_SESSION *session, char prepare_flag, T_QUERY_RESULT *q_result, T_NET_BUF *net_buf, T_BROKER_VERSION client_version)
DB_ATTRIBUTE * db_get_attribute(DB_OBJECT *obj, const char *name)
static void add_res_data_datetimetz(T_NET_BUF *net_buf, short yr, short mon, short day, short hh, short mm, short ss, short ms, char *tz_str, unsigned char ext_type, int *net_size)
int db_restart_ex(const char *program, const char *db_name, const char *db_user, const char *db_password, const char *preferred_hosts, int client_type)
const char * DB_CONST_C_NCHAR
void hm_srv_handle_free(int h_id)
void ux_set_utype_for_datetimetz(char u_type)
static int sch_primary_key(T_NET_BUF *net_buf, char *class_name, T_SRV_HANDLE *srv_handle)
void unicode_decompose_string(const char *str_in, const int size_in, char *str_out, int *size_out, const UNICODE_NORMALIZATION *norm)
int db_set_get(DB_SET *set, int index, DB_VALUE *value)
static int saved_Optimization_level
int ux_lob_read(DB_VALUE *lob_dbval, INT64 offset, int size, T_NET_BUF *net_buf)
static int get_num_markers(char *stmt)
#define NULL_DEFAULT_EXPRESSION_OPERATOR
int db_query_get_cache_time(DB_QUERY_RESULT *result, CACHE_TIME *cache_time)
static T_FETCH_FUNC fetch_func[]
DB_METHFILE * db_get_method_files(DB_OBJECT *obj)
char get_set_domain(DB_DOMAIN *set_domain, int *precision, short *scale, char *db_type, char *charset)
void hm_qresult_end(T_SRV_HANDLE *srv_handle, char free_flag)
int db_make_monetary(DB_VALUE *value, const DB_CURRENCY type, const double amount)
int ux_col_seq_drop(DB_COLLECTION *col, int index, T_NET_BUF *net_buf)
int tz_create_session_tzid_for_datetime(const DB_DATETIME *src_dt, bool src_is_utc, TZ_ID *tz_id)
char database_passwd[SRV_CON_DBPASSWD_SIZE]
#define LANG_COERCIBLE_CODESET
char * cas_log_query_plan_file(int id)
const char * DB_CONST_C_BIT
void net_buf_overwrite_int(T_NET_BUF *net_buf, int offset, int value)
void cas_log_write2_nonl(const char *fmt,...)
DB_DOMAIN * db_marker_domain(DB_MARKER *marker)
int db_make_set(DB_VALUE *value, DB_C_SET *set)
int prm_get_integer_value(PARAM_ID prm_id)
int ux_col_seq_insert(DB_COLLECTION *col, int index, DB_VALUE *ele_val, T_NET_BUF *net_buf)
char * db_private_strdup(THREAD_ENTRY *thrd, const char *s)
int ux_execute_all(T_SRV_HANDLE *srv_handle, char flag, int max_col_size, int max_row, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info, CACHE_TIME *clt_cache_time, int *clt_cache_reusable)
static void add_res_data_bytes(T_NET_BUF *net_buf, const char *str, int size, unsigned char ext_type, int *net_size)
static int sch_class_priv(T_NET_BUF *net_buf, char *class_name, char pat_flag, T_SRV_HANDLE *srv_handle)
void ux_free_result(void *res)
T_COL_UPDATE_INFO * col_update_info
static int fetch_privilege(T_SRV_HANDLE *, int, int, char, int, T_NET_BUF *, T_REQ_INFO *)
struct t_fk_info_result * next
DB_IDENTIFIER * db_identifier(DB_OBJECT *obj)
#define STRING_APPEND(buffer_p, avail_size_holder,...)
int db_query_first_tuple(DB_QUERY_RESULT *result)
static int fetch_attribute(T_SRV_HANDLE *, int, int, char, int, T_NET_BUF *, T_REQ_INFO *)
int db_attribute_is_primary_key(DB_ATTRIBUTE *attribute)
int net_buf_cp_short(T_NET_BUF *net_buf, short value)
DB_TYPE db_value_type(const DB_VALUE *value)
static int ux_get_generated_keys_server_insert(T_SRV_HANDLE *srv_handle, T_NET_BUF *net_buf)
void net_arg_get_short(short *value, void *arg)
DB_DOMAIN * db_method_arg_domain(DB_METHOD *method, int arg)
static char get_attr_type(DB_OBJECT *obj_p, char *attr_name)
struct t_fk_info_result * prev
int db_time_encode(DB_TIME *timeval, int hour, int minute, int second)
int db_execute_and_keep_statement(DB_SESSION *session, int stmt_ndx, DB_QUERY_RESULT **result)
void lang_set_parser_use_client_charset(bool use)
void db_objlist_free(DB_OBJLIST *list)
int db_get_class_num_objs_and_pages(DB_OBJECT *classmop, int approximation, int *nobjs, int *npages)
#define NET_BUF_FREE_SIZE(n)
DB_MARKER * db_get_input_markers(DB_SESSION *session, int stmt)
int intl_identifier_casecmp(const char *str1, const char *str2)
int tz_id_to_str(const TZ_ID *tz_id, char *tz_str, const int tz_str_size)
bool tran_was_latest_query_committed(void)
#define DB_VALUE_DOMAIN_TYPE(value)
void schema_constraint_meta(T_NET_BUF *net_buf)
void net_arg_get_time(short *hh, short *mm, short *ss, void *arg)
static bool check_auto_commit_after_getting_result(T_SRV_HANDLE *srv_handle)
#define SQL_LOG2_EXEC_APPEND(SQL_LOG2_VALUE, STMT_ID, RES, PLAN_FILE)
bool is_from_current_transaction
unsigned int query_seq_num
#define NET_BUF_TYPE_SIZE(net_buf)
int db_put(DB_OBJECT *obj, const char *name, DB_VALUE *value)
void net_arg_get_str(char **value, int *size, void *arg)
static T_PREPARE_CALL_INFO * make_prepare_call_info(int num_args, int is_first_out)
void db_session_set_holdable(DB_SESSION *session, bool holdable)
const char * db_error_string(int level)
bool db_get_jdbccachehint(DB_SESSION *session, int stmt_ndx, int *life_time)
DB_OBJECT * db_domain_class(const DB_DOMAIN *domain)
static enum scanner_mode mode
struct timeval query_start_time
void unset_xa_prepare_flag(void)
static int fetch_method(T_SRV_HANDLE *, int, int, char, int, T_NET_BUF *, T_REQ_INFO *)
static int sch_query_execute(T_SRV_HANDLE *srv_handle, char *sql_stmt, T_NET_BUF *net_buf)
DB_ATTRIBUTE * db_attribute_next(DB_ATTRIBUTE *attribute)
void schema_primarykey_meta(T_NET_BUF *net_buf)
void db_session_set_return_generated_keys(DB_SESSION *session, bool return_generated_keys)
const char * sm_get_ch_name(MOP op)
DB_OBJECT * db_get_object(const DB_VALUE *value)
#define DB_HS_CONN_TIMEOUT
int db_abort_to_savepoint(const char *savepoint_name)
T_SRV_HANDLE * hm_find_srv_handle(int h_id)
time_t transaction_start_time
int db_make_timestamptz(DB_VALUE *value, const DB_C_TIMESTAMPTZ *ts_tz_val)
void cas_log_end(int mode, int run_time_sec, int run_time_msec)
#define CAS_ERROR_INDICATOR
int db_string_put_cs_and_collation(DB_VALUE *value, const int codeset, const int collation_id)
bool db_is_client_cache_reusable(DB_QUERY_RESULT *result)
#define MAX_HA_DBINFO_LENGTH
int db_abort_transaction(void)
#define FK_INFO_SORT_BY_FKTABLE_NAME
int db_trigger_priority(DB_OBJECT *trobj, double *priority)
#define TP_DOMAIN_TYPE(dom)
static void sch_trigger(T_NET_BUF *net_buf, char *class_name, char flag, void **result)
#define ERROR_INFO_SET_FORCE(ERR_CODE, ERR_INDICATOR)
int db_execute_statement(DB_SESSION *session, int stmt_ndx, DB_QUERY_RESULT **result)
static int fetch_class(T_SRV_HANDLE *, int, int, char, int, T_NET_BUF *, T_REQ_INFO *)
UNICODE_NORMALIZATION * lang_get_generic_unicode_norm(void)
void ux_set_utype_for_timestampltz(char u_type)
static void add_res_data_date(T_NET_BUF *net_buf, short yr, short mon, short day, unsigned char ext_type, int *net_size)
static void casobj_to_dbobj(T_OBJECT *cas_obj, DB_OBJECT **obj)
void schema_trigger_meta(T_NET_BUF *net_buf)
int db_domain_codeset(const DB_DOMAIN *domain)
void db_session_set_xasl_cache_pinned(DB_SESSION *session, bool is_pinned, bool recompile)
void schema_superclasss_meta(T_NET_BUF *net_buf)
#define strncpy_bufsize(buf, str)
#define DB_HS_NON_PREFFERED_HOSTS
DB_OBJECT * db_get_class(MOP obj)
void net_buf_destroy(T_NET_BUF *net_buf)
DB_SESSION * db_open_buffer(const char *buffer)
void db_clear_host_connected(void)
void db_include_oid(DB_SESSION *session, int include_oid)
int db_compile_statement(DB_SESSION *session)
static void add_res_data_int(T_NET_BUF *net_buf, int value, unsigned char ext_type, int *net_size)
#define LOGDDL_RUN_EXECUTE_BATCH_FUNC
int db_attribute_is_foreign_key(DB_ATTRIBUTE *attribute)
void db_close_session(DB_SESSION *session)
static void add_res_data_datetime(T_NET_BUF *net_buf, short yr, short mon, short day, short hh, short mm, short ss, short ms, unsigned char ext_type, int *net_size)
void cas_log_debug(const char *file_name, const int line_no, const char *fmt,...)
static void add_res_data_string_safe(T_NET_BUF *net_buf, const char *str, unsigned char ext_type, unsigned char charset, int *net_size)
void net_arg_get_bigint(DB_BIGINT *value, void *arg)
DB_OBJLIST * db_get_all_classes(void)
static short constraint_dbtype_to_castype(int db_const_type)
int db_set_add(DB_SET *set, DB_VALUE *value)
static void trigger_time_str(DB_TRIGGER_TIME trig_time, char *buf)
static int sch_superclass(T_NET_BUF *net_buf, char *class_name, char flag, T_SRV_HANDLE *srv_handle)
int ux_execute_batch(int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info, char auto_commit_mode)
int ux_next_result(T_SRV_HANDLE *srv_handle, char flag, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
int db_savepoint_transaction(const char *savepoint_name)
char ux_db_type_to_cas_type(int db_type)
bool db_need_reconnect(void)
int db_timestamp_decode_w_tz_id(const DB_TIMESTAMP *utime, const TZ_ID *tz_id, DB_DATE *date, DB_TIME *timeval)
DB_SET * db_set_create_basic(MOP classop, const char *name)
void net_arg_get_size(int *size, void *arg)
static int set_host_variables(DB_SESSION *session, int num_bind, DB_VALUE *in_values)
int db_set_free(DB_SET *set)
static const char * convert_db_value_to_string(DB_VALUE *value, DB_VALUE *value_string)
int db_attribute_is_auto_increment(DB_ATTRIBUTE *attribute)
bool cas_default_no_backslash_escapes
enum db_class_modification_status DB_CLASS_MODIFICATION_STATUS
void hm_col_update_info_clear(T_COL_UPDATE_INFO *col_update_info)
static int sch_attr_priv(T_NET_BUF *net_buf, char *class_name, char *attr_name, char pat_flag, T_SRV_HANDLE *srv_handle)
#define db_private_free(thrd, ptr)
int db_get_class_privilege(DB_OBJECT *mop, unsigned int *auth)
int get_tuple_count(T_SRV_HANDLE *srv_handle)
#define CAS_SCHEMA_DEFAULT_CHARSET
int ml_ext_add(DB_OBJLIST **list, MOP mop, int *added_ptr)
static char * get_backslash_escape_string(void)
void schema_attrpriv_meta(T_NET_BUF *net_buf)
SM_FOREIGN_KEY_ACTION delete_action
int db_is_system_class(MOP op)
static T_SHM_APPL_SERVER * shm_appl
int ux_check_connection(void)
need_clear_type need_clear
int ux_auto_commit(T_NET_BUF *net_buf, T_REQ_INFO *req_info)
static int fetch_result(T_SRV_HANDLE *, int, int, char, int, T_NET_BUF *, T_REQ_INFO *)
int db_set_size(DB_SET *set)
static void add_res_data_bigint(T_NET_BUF *net_buf, DB_BIGINT value, unsigned char ext_type, int *net_size)
int db_col_size(DB_COLLECTION *col)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
int db_timestamp_decode_ses(const DB_TIMESTAMP *utime, DB_DATE *date, DB_TIME *timeval)
DB_BIGINT db_get_bigint(const DB_VALUE *value)
int db_set_isolation(DB_TRAN_ISOLATION isolation)
void schema_method_meta(T_NET_BUF *net_buf)
DB_DOMAIN * db_type_to_db_domain(const DB_TYPE type)
int db_make_time(DB_VALUE *value, const int hour, const int minute, const int second)
static char database_passwd[SRV_CON_DBPASSWD_SIZE]
static void add_res_data_time(T_NET_BUF *net_buf, short hh, short mm, short ss, unsigned char ext_type, int *net_size)
void ux_cursor_close(T_SRV_HANDLE *srv_handle)
DB_DOMAIN * db_attribute_domain(DB_ATTRIBUTE *attribute)
SM_FOREIGN_KEY_ACTION update_action
int ut_check_timeout(struct timeval *start_time, struct timeval *end_time, int timeout_msec, int *res_sec, int *res_msec)
void ux_call_info_cp_param_mode(T_SRV_HANDLE *srv_handle, char *param_mode, int num_param)
static int fetch_trigger(T_SRV_HANDLE *, int, int, char, int, T_NET_BUF *, T_REQ_INFO *)
int ux_is_database_connected(void)
int db_make_datetimetz(DB_VALUE *value, const DB_DATETIMETZ *datetimetz)
char database_host[CUB_MAXHOSTNAMELEN]
int ux_cursor(int srv_h_id, int offset, int origin, T_NET_BUF *net_buf)
int db_query_column_count(DB_QUERY_RESULT *result)
DB_METHOD * db_method_next(DB_METHOD *method)
int net_buf_cp_double(T_NET_BUF *net_buf, double value)
static void add_res_data_timestamptz(T_NET_BUF *net_buf, short yr, short mon, short day, short hh, short mm, short ss, char *tz_str, unsigned char ext_type, int *net_size)
void cas_log_error_handler_clear(void)
struct timeval tran_start_time
static void add_res_data_string(T_NET_BUF *net_buf, const char *str, int size, unsigned char ext_type, unsigned char charset, int *net_size)
static short encode_ext_type_to_short(T_BROKER_VERSION client_version, unsigned char cas_type)
DB_CONST_C_CHAR db_get_enum_string(const DB_VALUE *value)
static char cas_db_sys_param[128]
void ux_col_size(DB_COLLECTION *col, T_NET_BUF *net_buf)
static void error(const char *msg)
int db_get_statement_type(DB_SESSION *session, int stmt)
int ux_make_out_rs(int srv_h_id, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
bool tran_was_latest_query_aborted(void)
int db_make_float(DB_VALUE *value, const DB_C_FLOAT num)
void set_query_timeout(T_SRV_HANDLE *srv_handle, int query_timeout)
void hm_srv_handle_free_all(bool free_holdable)
void ux_col_get(DB_COLLECTION *col, char col_type, char ele_type, DB_DOMAIN *ele_domain, T_NET_BUF *net_buf)
void schema_table_meta(T_NET_BUF *net_buf)
int ux_check_object(DB_OBJECT *obj, T_NET_BUF *net_buf)
int errors_in_transaction
void ux_set_lock_timeout(int lock_timeout)
#define ER_FK_NOT_MATCH_KEY_COUNT
int db_query_next_tuple(DB_QUERY_RESULT *result)
int tz_utc_datetimetz_to_local(const DB_DATETIME *dt_utc, const TZ_ID *tz_id, DB_DATETIME *dt_local)
bool db_value_is_null(const DB_VALUE *value)
static void add_fk_info_before(T_FK_INFO_RESULT *pivot, T_FK_INFO_RESULT *pnew)
#define NET_BUF_HEADER_SIZE
#define ER_QPROC_TIME_UNDERFLOW
static char database_name[MAX_HA_DBINFO_LENGTH]
const char * db_query_format_class_name(DB_QUERY_TYPE *query_type)
int max_num_delayed_hosts_lookup
static int sch_attr_info(T_NET_BUF *net_buf, char *class_name, char *attr_name, char pattern_flag, char flag, T_SRV_HANDLE *)
#define CAS_GET_QUERY_INFO_PLAN
static void dbobj_to_casobj(DB_OBJECT *obj, T_OBJECT *cas_obj)
static void dblob_to_caslob(DB_VALUE *lob, T_LOB_HANDLE *cas_lob)
int dbt_put(DB_OTMPL *def, const char *name, DB_VALUE *value)
const char * default_expr_format
SESSION_ID ux_get_session_id(void)
bool db_get_cacheinfo(DB_SESSION *session, int stmt_ndx, bool *use_plan_cache, bool *use_query_cache)
void db_set_max_num_delayed_hosts_lookup(int max_num_delayed_hosts_lookup)
char * db_query_format_original_name(DB_QUERY_TYPE *query_type)
SM_FOREIGN_KEY_ACTION delete_action
#define DB_HS_UNUSABLE_DATABASES
static int fetch_call(T_SRV_HANDLE *srv_handle, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
int db_trigger_name(DB_OBJECT *trobj, char **name)
#define CHECK_NET_BUF_SIZE(n, size)
int hm_new_srv_handle(T_SRV_HANDLE **new_handle, unsigned int seq_num)
bool db_does_connected_host_have_status(int status)
char preferred_hosts[SHM_APPL_SERVER_NAME_MAX]
#define SQL_LOG2_COMPILE_BEGIN(SQL_LOG2_VALUE, SQL_STMT)
void cas_log_query_info_init(int id, char is_only_query_plan)
void schema_fk_info_meta(T_NET_BUF *net_buf)
void cas_log_error_handler_end(void)
#define NET_SIZE_TIMESTAMP
#define SRV_CON_DBUSER_SIZE
int db_query_format_is_non_null(DB_QUERY_TYPE *query_type)
int db_datetime_encode(DB_DATETIME *datetime, int month, int day, int year, int hour, int minute, int second, int millisecond)
DB_DATE * db_get_date(const DB_VALUE *value)
int oid_compare(const void *a, const void *b)
static void caslob_to_dblob(T_LOB_HANDLE *cas_lob, DB_VALUE *lob)
DB_CONSTRAINT_TYPE db_constraint_type(const DB_CONSTRAINT *constraint)
void cas_log_write(unsigned int seq_num, bool unit_start, const char *fmt,...)
int db_push_values(DB_SESSION *session, int count, DB_VALUE *in_values)
int ux_get_query_info(int srv_h_id, char info_type, T_NET_BUF *net_buf)
int db_check_single_query(DB_SESSION *session)
int cas_get_db_connect_status(void)
DB_COL_TYPE db_query_format_col_type(DB_QUERY_TYPE *query_type)
int db_get_row_count_cache(void)
#define ER_HEAP_UNKNOWN_OBJECT
int ux_database_connect(char *db_name, char *db_user, char *db_passwd, char **db_err_msg)
int db_value_put(DB_VALUE *value, const DB_TYPE_C c_type, void *input, const int input_length)
#define DB_CURSOR_SUCCESS
int intl_char_count(const unsigned char *src, int length_in_bytes, INTL_CODESET src_codeset, int *char_count)
int make_bind_value(int num_bind, int argc, void **argv, DB_VALUE **ret_val, T_NET_BUF *net_buf, char desired_type)
int db_get(DB_OBJECT *object, const char *attpath, DB_VALUE *value)
void ml_ext_free(DB_OBJLIST *list)
static void add_res_data_object(T_NET_BUF *net_buf, T_OBJECT *obj, unsigned char ext_type, int *net_size)
int db_trigger_attribute(DB_OBJECT *trobj, char **attr)
int ux_execute(T_SRV_HANDLE *srv_handle, char flag, int max_col_size, int max_row, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info, CACHE_TIME *clt_cache_time, int *clt_cache_reusable)
static void sch_method_info(T_NET_BUF *net_buf, char *class_name, char flag, void **result)
void ux_set_utype_for_timestamptz(char u_type)
bool prm_get_bool_value(PARAM_ID prm_id)
DB_METHFILE * db_methfile_next(DB_METHFILE *methfile)
T_BROKER_VERSION cas_get_client_version(void)
DB_METHOD * db_get_class_methods(DB_OBJECT *obj)
DB_TIMESTAMP * db_get_timestamp(const DB_VALUE *value)
int db_get_string_size(const DB_VALUE *value)
static bool do_commit_after_execute(const t_srv_handle &server_handle)
DB_C_SHORT db_get_short(const DB_VALUE *value)
T_APPL_SERVER_INFO * as_info
#define ERROR_INFO_SET(ERR_CODE, ERR_INDICATOR)
static void trigger_event_str(DB_TRIGGER_EVENT trig_event, char *buf)
int tz_create_timestamptz(const DB_DATE *date, const DB_TIME *time, const char *tz_str, const int tz_size, const TZ_REGION *default_tz_region, DB_TIMESTAMPTZ *ts_tz, const char **end_tz_str)
static void serialize_collection_as_string(DB_VALUE *col, char **out)
DB_VALUE * db_attribute_default(DB_ATTRIBUTE *attribute)
#define DOES_CLIENT_UNDERSTAND_THE_PROTOCOL(CLIENT, REQUIRE)
bool unicode_string_need_decompose(const char *str_in, const int size_in, int *decomp_size, const UNICODE_NORMALIZATION *norm)
DB_QUERY_TYPE * db_get_query_type_list(DB_SESSION *session, int stmt_ndx)
int db_query_set_copy_tplvalue(DB_QUERY_RESULT *result, int copy)
bool db_enable_trigger(void)
void elo_init_structure(DB_ELO *elo)
void cas_log_write_and_end(unsigned int seq_num, bool unit_start, const char *fmt,...)
#define ALLOC_COPY(PTR, STR)
#define DBMS_ERROR_INDICATOR
static void sch_methfile_info(T_NET_BUF *net_buf, char *class_name, void **result)
void ux_get_tran_setting(int *lock_wait, int *isol_level)
void net_arg_get_timestamptz(short *yr, short *mon, short *day, short *hh, short *mm, short *ss, char **tz, int *tz_size, void *arg)
TR_TRIGGER * tr_map_trigger(DB_OBJECT *object, int fetch)
int ux_get_parameter_info(int srv_h_id, T_NET_BUF *net_buf)
int db_trigger_condition(DB_OBJECT *trobj, char **condition)
#define NET_BUF_CURR_PTR(n)
int au_login(const char *name, const char *password, bool ignore_dba_privilege)
char * db_query_format_attr_name(DB_QUERY_TYPE *query_type)
#define FK_INFO_SORT_BY_PKTABLE_NAME
int db_make_null(DB_VALUE *value)
static void add_res_data_short(T_NET_BUF *net_buf, short value, unsigned char ext_type, int *net_size)
int ux_end_tran(int tran_type, bool reset_con_status)
void hm_srv_handle_qresult_end_all(bool end_holdable)
DB_OTMPL * dbt_edit_object(MOP object)
void ut_tolower(char *str)
int db_trigger_action(DB_OBJECT *trobj, char **action)
#define ER_SM_INVALID_CONSTRAINT
static DB_OBJECT * ux_str_to_obj(char *str)
#define IS_VALID_ISOLATION_LEVEL(isolation_level)
#define MAX_DIAG_DATA_VALUE
int db_find_or_create_session(const char *db_user, const char *program_name)
int db_make_double(DB_VALUE *value, const DB_C_DOUBLE num)
INTL_CODESET lang_get_client_charset(void)
int ux_fetch(T_SRV_HANDLE *srv_handle, int cursor_pos, int fetch_count, char fetch_flag, int result_set_index, T_NET_BUF *net_buf, T_REQ_INFO *req_info)
static int create_srv_handle_with_query_result(T_QUERY_RESULT *src_q_result, DB_QUERY_TYPE *column_info, unsigned int query_seq_num)
char * strdup(const char *str)
void db_date_decode(const DB_DATE *date, int *monthp, int *dayp, int *yearp)
int db_elo_read(const DB_ELO *elo, off_t pos, void *buf, size_t count, DB_BIGINT *read_bytes)
DB_DATETIME * db_get_datetime(const DB_VALUE *value)
void ux_set_utype_for_json(char u_type)
static int sch_exported_keys_or_cross_reference(T_NET_BUF *net_buf, bool find_cross_ref, char *pktable_name, char *fktable_name, void **result)
DB_CURRENCY db_get_currency_default()
void db_set_session_id(const SESSION_ID session_id)
static void add_fk_info_after(T_FK_INFO_RESULT *pivot, T_FK_INFO_RESULT *pnew)
static char database_user[SRV_CON_DBUSER_SIZE]
#define ER_IS_SERVER_DOWN_ERROR(err)
int db_value_clear(DB_VALUE *value)
int db_make_timestamp(DB_VALUE *value, const DB_C_TIMESTAMP timeval)
int db_make_int(DB_VALUE *value, const int num)
int db_query_get_tuple_value(DB_QUERY_RESULT *result, int index, DB_VALUE *value)
static int fetch_methfile(T_SRV_HANDLE *, int, int, char, int, T_NET_BUF *, T_REQ_INFO *)
int net_buf_cp_lob_handle(T_NET_BUF *net_buf, T_LOB_HANDLE *lob)
void ux_set_cas_change_mode(int mode, T_NET_BUF *net_buf)
void net_arg_get_dbobject(DB_OBJECT **obj, void *arg)
void net_arg_get_double(double *value, void *arg)
static void add_res_data_lob_handle(T_NET_BUF *net_buf, T_LOB_HANDLE *lob, unsigned char ext_type, int *net_size)
int net_buf_cp_bigint(T_NET_BUF *net_buf, DB_BIGINT value, int *begin_offset)
const char * db_constraint_name(DB_CONSTRAINT *constraint)
int cas_default_lock_timeout
void ux_prepare_call_info_free(T_PREPARE_CALL_INFO *call_info)
static void trigger_status_str(DB_TRIGGER_STATUS trig_status, char *buf)
void net_arg_get_date(short *year, short *mon, short *day, void *arg)
const char * db_methfile_name(DB_METHFILE *methfile)
int db_set_drop(DB_SET *set, DB_VALUE *value)
int db_set_statement_auto_commit(DB_SESSION *session, bool auto_commit)
DB_TIME * db_get_time(const DB_VALUE *value)
INTL_UTF8_VALIDITY intl_check_string(const char *buf, int size, char **pos, const INTL_CODESET codeset)
int db_seq_insert(DB_SET *set, int index, DB_VALUE *value)
void cas_log_write2(const char *fmt,...)
int net_buf_cp_object(T_NET_BUF *net_buf, T_OBJECT *oid)
void net_arg_get_float(float *value, void *arg)
int ux_oid_get(int argc, void **argv, T_NET_BUF *net_buf)
int db_get_row_count(int *row_count)
void logddl_set_err_code(int err_code)
const char * program_name
static int dbval_to_net_buf(DB_VALUE *val, T_NET_BUF *net_buf, char fetch_flag, int max_col_size, char column_type_flag)
#define ERROR_INFO_SET_WITH_MSG(ERR_CODE, ERR_INDICATOR, ERR_MSG)
int db_trigger_status(DB_OBJECT *trobj, DB_TRIGGER_STATUS *status)
void db_time_decode(DB_TIME *timeval, int *hourp, int *minutep, int *secondp)
static T_REQ_INFO req_info
void db_set_connect_order(int connect_order)
void jsp_unset_prepare_call()
int tz_create_session_tzid_for_timestamp(const DB_UTIME *src_ts, TZ_ID *tz_id)
void schema_methodfile_meta(T_NET_BUF *net_buf)
char * ut_trim(char *str)
const char * db_method_name(DB_METHOD *method)
const char * DB_CONST_C_CHAR
int db_attribute_is_unique(DB_ATTRIBUTE *attribute)
int ux_execute_call(T_SRV_HANDLE *srv_handle, char flag, int max_col_size, int max_row, int argc, void **argv, T_NET_BUF *net_buf, T_REQ_INFO *req_info, CACHE_TIME *clt_cache_time, int *clt_cache_reusable)
int db_query_produce_updatable_result(DB_SESSION *session, int stmt_ndx)
int db_list_length(DB_LIST *list)
static char * get_domain_str(DB_DOMAIN *domain)
int net_buf_cp_byte(T_NET_BUF *net_buf, char ch)
void logddl_set_stmt_type(int stmt_type)
static void update_query_execution_count(T_APPL_SERVER_INFO *as_info_p, char stmt_type)
int db_make_bit(DB_VALUE *value, const int bit_length, DB_CONST_C_BIT bit_str, const int bit_str_bit_size)
int db_seq_drop(DB_SET *set, int index)
int db_ping_server(int client_val, int *server_val)
void schema_attr_meta(T_NET_BUF *net_buf)
int db_get_string_codeset(const DB_VALUE *value)
int db_get_last_insert_id(DB_VALUE *value)
DB_METHOD * db_get_methods(DB_OBJECT *obj)
int str_like(char *src, char *pattern, char esc_char)
int ux_col_seq_put(DB_COLLECTION *col, int index, DB_VALUE *ele_val, T_NET_BUF *net_buf)
static void report_abnormal_host_status(int err_code)
int ux_cursor_update(T_SRV_HANDLE *srv_handle, int cursor_pos, int argc, void **argv, T_NET_BUF *net_buf)
static int ux_use_sp_out(int srv_h_id)
static int get_client_result_cache_lifetime(DB_SESSION *session, int stmt_id)
void db_synchronize_cache(void)
int ux_schema_info(int schema_type, char *arg1, char *arg2, char flag, T_NET_BUF *net_buf, T_REQ_INFO *req_info, unsigned int query_seq_num)
int db_attribute_is_reverse_indexed(DB_ATTRIBUTE *attribute)
DB_CONST_C_CHAR db_get_string(const DB_VALUE *value)
int db_statement_count(DB_SESSION *session)
void db_set_connect_status(int status)
#define ER_IS_ABORTED_DUE_TO_DEADLOCK(err)
#define net_arg_get_char(value, arg)
static char get_stmt_type(char *stmt)
int lang_get_client_collation(void)
int db_make_nchar(DB_VALUE *value, const int nchar_length, DB_CONST_C_NCHAR str, const int nchar_str_byte_size, const int codeset, const int collation_id)
DB_DOMAIN * db_domain_set(const DB_DOMAIN *domain)
int db_query_tuple_count(DB_QUERY_RESULT *result)
int db_commit_transaction(void)
void schema_directsuper_meta(T_NET_BUF *net_buf)
int ux_lob_new(int lob_type, T_NET_BUF *net_buf)
int db_value_domain_init(DB_VALUE *value, const DB_TYPE type, const int precision, const int scale)
#define REALLOC(PTR, SIZE)
union db_query_result::@47 res
void clear(cub_regex_object *®ex, char *&pattern)
void reset_optimization_level_as_saved(void)
void net_buf_column_info_set(T_NET_BUF *net_buf, char ut, short scale, int prec, char charset, const char *name)
void ux_set_utype_for_enum(char u_type)
DB_OBJLIST * db_get_subclasses(DB_OBJECT *obj)
void hm_session_free(T_SRV_HANDLE *srv_handle)