92 #if defined (SUPPRESS_STRLEN_WARNING) 93 #define strlen(s1) ((int) strlen(s1)) 96 #define DB_SERIAL_MAX "99999999999999999999999999999999999999" 97 #define DB_SERIAL_MIN "-99999999999999999999999999999999999999" 99 #define UNIQUE_SAVEPOINT_ALTER_TRIGGER "aLTERtRIGGER" 106 #define PT_NODE_SR_NAME(node) \ 107 ((node)->info.serial.serial_name->info.name.original) 108 #define PT_NODE_SR_START_VAL(node) \ 109 ((node)->info.serial.start_val) 110 #define PT_NODE_SR_INCREMENT_VAL(node) \ 111 ((node)->info.serial.increment_val) 112 #define PT_NODE_SR_MAX_VAL(node) \ 113 ((node)->info.serial.max_val) 114 #define PT_NODE_SR_MIN_VAL(node) \ 115 ((node)->info.serial.min_val) 116 #define PT_NODE_SR_CYCLIC(node) \ 117 ((node)->info.serial.cyclic ) 118 #define PT_NODE_SR_NO_MAX(node) \ 119 ((node)->info.serial.no_max ) 120 #define PT_NODE_SR_NO_MIN(node) \ 121 ((node)->info.serial.no_min ) 122 #define PT_NODE_SR_NO_CYCLIC(node) \ 123 ((node)->info.serial.no_cyclic ) 124 #define PT_NODE_SR_CACHED_NUM_VAL(node) \ 125 ((node)->info.serial.cached_num_val) 126 #define PT_NODE_SR_NO_CACHE(node) \ 127 ((node)->info.serial.no_cache) 135 #define MAX_SERIAL_INVARIANT 8 179 const char **savepoint_name,
int *row_count_ptr);
226 for (i = 0; i < num_invariants; i++)
236 switch (invariants[i].
cmp_op)
313 const char *class_name =
NULL;
327 for (entity = entity_list; entity !=
NULL; entity = entity->
next)
331 if (class_mop ==
NULL)
414 int month, day, year, hour, minute, second, millisecond;
416 char *lang_str =
NULL;
419 bool has_user_format;
443 &hour, &minute, &second, &millisecond);
455 const char *t_source, *t_dest;
461 db_time = datetime->
time / 1000;
463 strlen (t_dest), &cur_time);
505 TZ_REGION system_tz_region, session_tz_region;
537 tmp_date = sys_datetime->
date;
538 tmp_time = sys_datetime->
time / 1000;
574 result_domain =
NULL;
587 result_domain = att->
domain;
643 DB_VALUE * min_val,
DB_VALUE * max_val,
const int cyclic,
const int cached_num,
644 const int started,
const char *comment,
const char *class_name,
const char *att_name)
658 if (serial_class ==
NULL)
666 if (obj_tmpl ==
NULL)
789 else if (serial_object !=
NULL)
791 *serial_object = ret_obj;
795 if (obj_tmpl !=
NULL && ret_obj ==
NULL)
819 char *serial_name =
NULL;
823 bool au_disable_flag =
false;
825 if (!serial_obj || !class_name || !att_name)
832 serial_object = serial_obj;
834 att_name = att_downcase_name;
838 serial_name = (
char *) malloc (name_len);
839 if (serial_name ==
NULL)
848 au_disable_flag =
true;
863 goto update_auto_increment_error;
867 if (obj_tmpl ==
NULL)
871 goto update_auto_increment_error;
879 goto update_auto_increment_error;
889 goto update_auto_increment_error;
898 goto update_auto_increment_error;
904 au_disable_flag =
false;
906 if (serial_object ==
NULL)
910 goto update_auto_increment_error;
916 update_auto_increment_error:
922 if (au_disable_flag ==
true)
928 if (obj_tmpl !=
NULL)
945 DB_OBJECT *
const serial_object = serial_obj;
951 if (serial_object ==
NULL)
966 if (obj_tmpl ==
NULL)
987 if (edit_serial_object ==
NULL)
994 assert (edit_serial_object == serial_object);
1011 if (obj_tmpl !=
NULL)
1032 DB_OBJECT *
const serial_object = serial_obj;
1055 if (serial_object ==
NULL)
1110 if (obj_tmpl ==
NULL)
1137 if (edit_serial_object ==
NULL)
1144 assert (edit_serial_object == serial_object);
1158 if (obj_tmpl !=
NULL)
1190 size_t serial_name_size;
1195 if (serial_class_mop ==
NULL || serial_name ==
NULL)
1201 p = (
char *) malloc (serial_name_size + 1);
1230 *serial_obj_id = *db_id;
1295 DB_VALUE start_val, inc_val, max_val, min_val, cached_num_val;
1300 int min_val_msgid = 0;
1301 int max_val_msgid = 0;
1302 int start_val_msgid = 0;
1303 int inc_val_msgid = 0;
1307 int inc_val_flag = 0, cyclic;
1312 bool au_disable_flag =
false;
1315 const char *comment =
NULL;
1334 if (serial_class ==
NULL)
1347 p = (
char *) malloc (name_size + 1);
1357 if (serial_mop !=
NULL)
1378 if (inc_val_node !=
NULL)
1403 if (inc_val_flag == 0)
1426 if (start_val_node !=
NULL)
1460 if (min_val_node !=
NULL)
1480 if (inc_val_flag > 0)
1482 if (start_val_node !=
NULL)
1508 if (max_val_node !=
NULL)
1528 if (inc_val_flag > 0)
1535 if (start_val_node !=
NULL)
1555 if (start_val_node ==
NULL)
1558 if (inc_val_flag > 0)
1654 if (cached_num_node !=
NULL)
1656 DB_VALUE cached_num_int_val, abs_cached_range_val;
1678 error =
db_abs_dbval (&abs_cached_range_val, &tmp_val);
1712 if (comment ==
NULL)
1721 au_disable_flag =
true;
1727 au_disable_flag =
false;
1742 if (au_disable_flag ==
true)
1768 MOP serial_class =
NULL, serial_mop;
1772 PT_NODE *auto_increment_node, *start_val_node, *inc_val_node;
1774 char *att_name =
NULL, *serial_name =
NULL;
1775 DB_VALUE start_val, inc_val, max_val, min_val;
1798 if (auto_increment_node ==
NULL)
1807 if (serial_class ==
NULL)
1818 att_name = att_downcase_name;
1822 serial_name = (
char *) malloc (name_len);
1823 if (serial_name ==
NULL)
1833 if (serial_mop !=
NULL)
1852 if (inc_val_node !=
NULL)
1896 if (start_val_node !=
NULL)
1972 do_create_serial_internal (serial_object, serial_name, &start_val, &inc_val, &min_val, &max_val, 0, 0, 0,
NULL,
1973 class_name, att_name);
2025 MOP serial_class, serial_mop;
2031 char *att_name =
NULL, *serial_name =
NULL;
2032 DB_VALUE e38, current_val, max_val, value;
2033 int i, compare_result, save;
2037 bool au_disable_flag =
false;
2052 if (serial_class ==
NULL)
2063 att_name = att_downcase_name;
2067 serial_name = (
char *) malloc (name_len);
2068 if (serial_name ==
NULL)
2079 if (serial_mop ==
NULL)
2148 if (compare_result !=
DB_LT && compare_result !=
DB_EQ)
2157 au_disable_flag =
true;
2160 if (obj_tmpl ==
NULL)
2174 if (serial_mop ==
NULL)
2182 *serial_object = serial_mop;
2193 if (au_disable_flag ==
true)
2203 if (serial_name !=
NULL)
2208 if (obj_tmpl !=
NULL)
2241 DB_VALUE old_inc_val, old_max_val, old_min_val, old_cached_num;
2242 DB_VALUE current_val, start_val, cached_num_val;
2243 DB_VALUE new_inc_val, new_max_val, new_min_val;
2250 const char *comment =
NULL;
2252 int new_inc_val_flag = 0, new_cyclic;
2253 bool cur_val_change, inc_val_change, max_val_change, min_val_change, cyclic_change, cached_num_change;
2257 bool au_disable_flag =
false;
2285 if (serial_class ==
NULL)
2299 if (serial_object ==
NULL)
2386 if (inc_val_node !=
NULL)
2388 inc_val_change =
true;
2411 if (new_inc_val_flag == 0)
2420 inc_val_change =
false;
2435 if (start_val_node !=
NULL)
2437 cur_val_change =
true;
2454 cur_val_change =
false;
2461 if (max_val_node !=
NULL)
2463 max_val_change =
true;
2482 max_val_change =
true;
2483 if (new_inc_val_flag > 0)
2501 max_val_change =
false;
2510 if (min_val_node !=
NULL)
2512 min_val_change =
true;
2531 min_val_change =
true;
2533 if (new_inc_val_flag > 0)
2551 min_val_change =
false;
2561 cyclic_change =
true;
2565 cyclic_change =
false;
2590 (min_val_change) ? MSGCAT_SEMANTIC_SERIAL_MIN_VAL_INVALID : 0,
2596 (max_val_change) ? MSGCAT_SEMANTIC_SERIAL_MAX_VAL_INVALID : 0,
2597 (cur_val_change) ? MSGCAT_SEMANTIC_SERIAL_START_VAL_INVALID : 0,
2616 (max_val_change) ? MSGCAT_SEMANTIC_SERIAL_MAX_VAL_INVALID :
2621 if (cached_num_node !=
NULL)
2623 DB_VALUE cached_num_int_val, abs_cached_range_val;
2626 cached_num_change =
true;
2646 error =
db_abs_dbval (&abs_cached_range_val, &tmp_val);
2662 cached_num_change =
true;
2667 cached_num_change =
false;
2684 au_disable_flag =
true;
2687 if (obj_tmpl ==
NULL)
2755 if (cached_num_change)
2795 if (serial_object ==
NULL)
2811 if (au_disable_flag ==
true)
2816 if (obj_tmpl !=
NULL)
2841 bool au_disable_flag =
false;
2849 if (serial_class ==
NULL)
2859 if (serial_object ==
NULL)
2899 au_disable_flag =
true;
2901 error =
db_drop (serial_object);
2913 if (au_disable_flag ==
true)
2929 #define ER_PT_UNKNOWN_STATEMENT ER_GENERIC_ERROR 2930 #define UNIQUE_SAVEPOINT_EXTERNAL_STATEMENT "eXTERNALsTATEMENT" 2946 bool need_stmt_replication =
false;
2947 int suppress_repl_error =
NO_ERROR;
2988 need_stmt_replication =
true;
3000 if (suppress_repl_error !=
NO_ERROR)
3116 error =
do_scope (parser, statement);
3142 error =
do_grant (parser, statement);
3306 if (need_stmt_replication)
3320 if (error >= 0 && repl_error ==
NO_ERROR && suppress_repl_error ==
NO_ERROR)
3433 bool need_stmt_based_repl =
false;
3434 int suppress_repl_error;
3474 need_stmt_based_repl =
true;
3485 if (suppress_repl_error !=
NO_ERROR)
3646 err =
do_grant (parser, statement);
3673 err =
do_scope (parser, statement);
3748 err =
do_kill (parser, statement);
3759 if (need_stmt_based_repl)
3810 #if defined(ENABLE_UNUSED_FUNCTION) 3826 for (statement = statement_list; statement !=
NULL; statement = statement->
next)
3862 if (internal_stmt_list ==
NULL)
3865 return do_func (parser, statement);
3874 error = do_internal_statements (parser, internal_stmt_list, 0);
3880 num_rows = error = do_func (parser, statement);
3881 #if defined(CUBRID_DEBUG) 3887 error = do_internal_statements (parser, internal_stmt_list, 1);
3900 #if defined(ENABLE_UNUSED_FUNCTION) 3928 for (stmt_str = internal_stmt_list; stmt_str !=
NULL; stmt_str = stmt_str->
next)
3930 if ((phase == 0 && stmt_str->
etc ==
NULL) || (phase == 1 && stmt_str->
etc !=
NULL))
3961 CST_ATTR_MIN, CST_ATTR_MAX,
3962 CST_ATTR_NINDEXES, CST_BT_NLEAFS, CST_BT_HEIGHT,
3981 {CST_ATTR_MIN,
"min", 0, -1},
3982 {CST_ATTR_MAX,
"max", 0, -1},
3983 {CST_ATTR_NINDEXES,
"#indexes", 0, -1},
3984 {CST_BT_NLEAFS,
"#leaf_pages", 0, 0},
3985 {CST_BT_NPAGES,
"#index_pages", 0, 0},
3986 {CST_BT_HEIGHT,
"index_height", 0, 0},
4046 if (class_mop !=
NULL)
4087 char *s, *t, *att =
NULL;
4101 att = (
char *) malloc (size + 1);
4133 if (s && s != t && *(++s))
4156 char *att_name =
NULL;
4164 for (i = 0; i < (signed) DIM (cst_item_tbl); i++)
4168 cst_item = cst_item_tbl[
i];
4169 if (cst_item.
att_id >= 0)
4172 if (att_name ==
NULL)
4184 if (cst_item.
bt_idx >= 0)
4192 cst_item.
bt_idx = bt_idx;
4207 if (class_statsp ==
NULL)
4214 if (cst_item.
att_id >= 0)
4216 for (i = 0; i < class_statsp->
n_attrs; i++)
4227 for (i = 0; i < cst_item.
bt_idx; i++)
4234 switch (cst_item.
item)
4252 case CST_ATTR_NINDEXES:
4263 if (!attr_statsp || !bt_statsp)
4273 if (!attr_statsp || !bt_statsp)
4283 if (!attr_statsp || !bt_statsp)
4294 if (!attr_statsp || !bt_statsp)
4344 if (ret_val ==
NULL)
4363 statement->
etc = (
void *) ret_val;
4456 const char *save_name;
4482 if (save_name ==
NULL)
4508 const char *save_name;
4534 if (save_name ==
NULL)
4559 int lock_timeout_in_msecs = 0;
4563 const char *into_label;
4572 if (ins_val ==
NULL)
4583 tran_num = (int) tran_isolation;
4592 if (lock_timeout_in_msecs > 0)
4594 db_make_float (ins_val, (
float) lock_timeout_in_msecs / 1000);
4606 statement->
etc = (
void *) ins_val;
4616 if (ins_val ==
NULL)
4627 tran_num = (int) tran_isolation;
4636 if (lock_timeout_in_msecs > 0)
4638 db_make_float (ins_val, (
float) (lock_timeout_in_msecs / 1000.0));
4686 error =
map_iso_levels (parser, statement, &tran_isolation, mode);
4704 error =
set_iso_level (parser, &tran_isolation, &async_ws, statement, &val);
4757 const char *into_name;
4809 statement->
etc = (
void *) val;
4835 const char *plan, *cost;
5028 *async_ws = (
db_get_int (level) & 0xF0) ?
true :
false;
5055 if (*async_ws ==
true)
5057 int dummy_lktimeout;
5094 if ((timeout == -1) || (timeout >= 0))
5122 return (
char *)
NULL;
5141 #define ER_TR_INVALID_VALUE_TYPE ER_GENERIC_ERROR 5143 #define MAX_DOMAIN_NAME_SIZE 150 5159 #define IS_REJECT_ACTION_STATEMENT(statement) \ 5160 ((statement)->node_type == PT_TRIGGER_ACTION \ 5161 && (statement)->info.trigger_action.action_type == PT_REJECT) 5163 #define IS_INVALIDATE_ACTION_STATEMENT(statement) \ 5164 ((statement)->node_type == PT_TRIGGER_ACTION \ 5165 && (statement)->info.trigger_action.action_type == PT_INVALIDATE_XACTION) 5167 #define IS_PRINT_ACTION_STATEMENT(statement) \ 5168 ((statement)->node_type == PT_TRIGGER_ACTION \ 5169 && (statement)->info.trigger_action.action_type == PT_PRINT) 5171 #define PT_NODE_TR_NAME(node) \ 5172 ((node)->info.create_trigger.trigger_name->info.name.original) 5173 #define PT_NODE_TR_STATUS(node) \ 5174 (convert_misc_to_tr_status((node)->info.create_trigger.trigger_status)) 5175 #define PT_NODE_TR_PRI(node) \ 5176 ((node)->info.create_trigger.trigger_priority) 5177 #define PT_NODE_TR_EVENT_TYPE(node) \ 5178 (convert_event_to_tr_event((node)->info.create_trigger.trigger_event->info.event_spec.event_type)) 5180 #define PT_NODE_TR_TARGET(node) \ 5181 ((node)->info.create_trigger.trigger_event->info.event_spec.event_target) 5182 #define PT_TR_TARGET_CLASS(target) \ 5183 ((target)->info.event_target.class_name->info.name.original) 5184 #define PT_TR_TARGET_ATTR(target) \ 5185 ((target)->info.event_target.attribute) 5186 #define PT_TR_ATTR_NAME(attr) \ 5187 ((attr)->info.name.original) 5189 #define PT_NODE_COND(node) \ 5190 ((node)->info.create_trigger.trigger_condition) 5191 #define PT_NODE_COND_TIME(node) \ 5192 (convert_misc_to_tr_time((node)->info.create_trigger.condition_time)) 5194 #define PT_NODE_ACTION(node) \ 5195 ((node)->info.create_trigger.trigger_action) 5196 #define PT_NODE_ACTION_TIME(node) \ 5197 (convert_misc_to_tr_time((node)->info.create_trigger.action_time)) 5199 #define PT_NODE_TR_REF(node) \ 5200 ((node)->info.create_trigger.trigger_reference) 5201 #define PT_TR_REF_REFERENCE(ref) \ 5202 (&(ref)->info.event_object) 5231 for (obj = new_objlist, next =
NULL; obj !=
NULL; obj = next)
5397 PT_NODE *names, *n, *events, *e;
5400 const char *str, *attribute;
5406 if (specnode !=
NULL)
5422 if (trigger ==
NULL)
5475 *triglist = triggers;
5531 const char *savepoint_name =
NULL;
5543 while (node !=
NULL)
5548 class_ = (flat ? flat->info.name.db_object :
NULL);
5567 class_ = (flat) ? flat->info.name.db_object :
NULL;
5575 char **columns =
NULL;
5582 columns = (
char **) (malloc (count *
sizeof (
char *)));
5583 if (columns ==
NULL)
5620 class_ = flat ? flat->info.name.db_object :
NULL;
5658 if (savepoint_name ==
NULL)
5737 int error =
NO_ERROR, num_classes = 0, idx, partition_type = 0;
5739 char **classes_names =
NULL;
5741 int *need_subclasses =
NULL, au_save = 0;
5744 bool has_rows =
false;
5748 while (node !=
NULL)
5756 if (classes_names ==
NULL)
5772 if (need_subclasses ==
NULL)
5787 for (idx = 0; idx < num_classes && node !=
NULL; idx++, node = node->
next)
5789 if (node->info.delete_.spec ==
NULL || node->info.delete_.spec->info.spec.entity_name ==
NULL 5790 || node->info.delete_.spec->info.spec.entity_name->info.name.original ==
NULL)
5795 classes_names[idx] = (
char *) node->info.delete_.spec->info.spec.entity_name->info.name.original;
5797 if (node->info.delete_.spec->info.spec.only_all ==
PT_ALL)
5799 need_subclasses[idx] =
true;
5803 need_subclasses[idx] =
false;
5821 flat = node->info.delete_.spec->info.spec.flat_entity_list;
5845 for (idx = 0; partitions[idx] !=
NULL && !has_rows; idx++)
5882 if (partitions !=
NULL)
5888 while (flat !=
NULL && !has_rows);
5904 if (classes_names !=
NULL)
5914 if (need_subclasses !=
NULL)
5943 int affected_count,
error = 0;
5968 error = do_func (parser, statement);
5982 affected_count =
error;
5987 while (node !=
NULL)
5997 affected_count +=
error;
6003 return affected_count;
6024 return do_func (parser, statement);
6052 for (count = 0; assign; assign = assign->
next)
6065 size =
sizeof (
char *) * count;
6067 columns = (
char **) (malloc (size));
6068 if (columns ==
NULL)
6074 for (i = 0; i <
count; assign = assign->
next)
6119 err = do_func (parser, statement);
6158 if (statement !=
NULL)
6201 PT_NODE *cond, *action, *target, *attr, *pri, *comment_node;
6202 const char *name, *comment;
6207 const char *attribute;
6210 const char *cond_source, *action_source;
6220 if (comment_node !=
NULL)
6252 #if defined (ENABLE_UNUSED_FUNCTION) 6287 tr_create_trigger (name, status, priority, event, class_, attribute, cond_time, cond_source, action_time,
6288 action_type, action_source, comment);
6290 if (trigger ==
NULL)
6310 statement->
etc = (
void *) value;
6359 if (triggers !=
NULL)
6406 const char *trigger_owner_name =
NULL, *trigger_comment =
NULL;
6407 DB_VALUE returnval, trigger_name_val, user_val;
6408 bool has_trigger_comment =
false;
6411 bool has_savepoint =
false;
6426 if (comment_node !=
NULL)
6428 has_trigger_comment =
true;
6430 trigger_comment = (
char *) comment_node->info.value.data_value.str->bytes;
6437 if (trigger_owner !=
NULL)
6442 else if (p_node !=
NULL)
6454 assert (has_trigger_comment);
6461 for (t = triggers; t !=
NULL && error ==
NO_ERROR; t = t->next)
6477 has_savepoint =
true;
6480 for (t = triggers; t !=
NULL && error ==
NO_ERROR; t = t->next)
6502 if (trigger_owner !=
NULL)
6508 db_make_string (&trigger_name_val, trigger_name->info.name.original);
6522 trigger_name = trigger_name->next;
6525 if (has_trigger_comment)
6562 if (triggers !=
NULL)
6648 const char *old_name, *new_name;
6657 if (trigger ==
NULL)
6752 const char *into_label;
6759 if (ins_val ==
NULL)
6779 statement->
etc = (
void *) ins_val;
6809 #define DB_VALUE_STACK_MAX 40 6824 const int turn_off_unique_check,
const int turn_off_serializable_conflict_check,
6829 DB_VALUE ** values,
int *values_cnt,
bool has_delete);
6832 bool savepoint_started);
6842 int *
const server_allowed,
const PT_NODE * statement);
6894 pt_to_upd_del_query (parser, column_names, column_values, from, with, class_specs, where, using_index,
6990 const int turn_off_serializable_conflict_check,
UPDATE_TYPE update_type,
bool should_delete)
6994 int idx = 0, upd_tpl_cnt = 0;
6999 bool flush_del =
false;
7000 MOP object_class_mop;
7002 for (idx = 0; idx < classes_cnt && error ==
NO_ERROR; idx++)
7004 cls_info = &upd_classes_info[idx];
7024 if (real_object ==
NULL)
7042 if (object_class_mop !=
NULL)
7059 if (otemplate ==
NULL)
7065 if (turn_off_unique_check)
7070 if (turn_off_serializable_conflict_check)
7153 if (should_delete && error ==
NO_ERROR)
7168 if (flush_del && error ==
NO_ERROR)
7238 int assigns_count = 0, upd_cls_cnt = 0, multi_assign_cnt = 0;
7256 init_update_data (parser, statement, &assigns, &assigns_count, &cls_info, &upd_cls_cnt, &dbvals, &vals_cnt,
7270 multi_assign_cnt = 1;
7282 lhs->info.name.spec_id);
7283 i += multi_assign_cnt;
7290 update_object_tuple (parser, assigns, assigns_count, cls_info, upd_cls_cnt, 0, 0, update_type,
false);
7296 if (assigns !=
NULL)
7299 for (i = assigns_count - 1; i >= 0; i--)
7301 if (assigns[i].attr_desc)
7310 if (cls_info !=
NULL)
7354 if (class_mop ==
NULL)
7356 PT_ERROR (parser, spec,
"Generic error");
7383 PT_ERROR (parser, spec,
"CTE not handled");
7427 PT_ERROR (parser, spec,
"Generic error");
7462 int assign_cnt = 0, upd_cls_cnt = 0, vals_cnt = 0, idx, idx2, idx3,
i;
7464 PT_NODE *node =
NULL, *assignments, *spec, *class_spec, *check_where;
7469 assign_cnt = vals_cnt = 0;
7491 if (assigns ==
NULL)
7523 if (cls_info ==
NULL)
7531 vals_cnt += upd_cls_cnt;
7532 vals_cnt += has_delete;
7541 for (i = 0; i < assign_cnt + upd_cls_cnt + has_delete; i++)
7555 cls_info_tmp = &cls_info[idx++];
7556 cls_info_tmp->
spec = node;
7557 cls_info_tmp->first_assign =
NULL;
7558 cls_info_tmp->class_mop =
NULL;
7566 while (check_where !=
NULL && check_where->info.check_option.spec_id != node->
info.
spec.
id)
7568 check_where = check_where->next;
7570 cls_info_tmp->check_where = check_where;
7586 cls_info_tmp = &cls_info[idx++];
7587 cls_info_tmp->
spec = node;
7588 cls_info_tmp->first_assign =
NULL;
7589 cls_info_tmp->class_mop =
NULL;
7598 while (check_where !=
NULL && check_where->info.check_option.spec_id != node->
info.
spec.
id)
7600 check_where = check_where->next;
7602 cls_info_tmp->check_where = check_where;
7615 assign->attr_desc =
NULL;
7616 assign->upd_col_name = ea.
lhs;
7623 assign->db_val = &dbvals[assign_cnt + upd_cls_cnt + has_delete - idx3++];
7625 assign->is_const =
true;
7630 assign->db_val = &dbvals[upd_cls_cnt + has_delete + idx++];
7631 assign->is_const =
false;
7634 for (idx2 = 0; idx2 < upd_cls_cnt; idx2++)
7639 cls_info[idx2].
oid = &dbvals[upd_cls_cnt - idx2 - 1];
7641 assign->cls_info = &cls_info[idx2];
7643 if (cls_info[idx2].first_assign)
7646 while (assign2->next)
7648 assign2 = assign2->
next;
7650 assign2->
next = assign;
7663 *assigns_data = assigns;
7664 *assigns_count = assign_cnt;
7665 *cls_data = cls_info;
7666 *cls_count = upd_cls_cnt;
7668 *values_cnt = vals_cnt;
7680 if (assigns !=
NULL)
7683 for (idx = 0; idx < assign_cnt; idx++)
7685 assign = &assigns[idx];
7686 if (assign->attr_desc)
7716 bool savepoint_started)
7719 int idx = 0,
count = 0, assign_count = 0;
7720 int upd_cls_cnt = 0, vals_cnt = 0;
7723 int turn_off_unique_check;
7724 int turn_off_server_serializable_conflict_check;
7727 const char *savepoint_name =
NULL;
7730 bool has_unique, has_trigger;
7731 bool has_delete, should_delete =
false;
7732 bool client_check_serializable_conflict =
false;
7734 if (list_id ==
NULL || statement ==
NULL)
7753 init_update_data (parser, statement, &assigns, &assign_count, &cls_info, &upd_cls_cnt, &dbvals, &vals_cnt,
7763 if (savepoint_started ==
false)
7775 if (list_id->
tuple_cnt == 1 && upd_cls_cnt == 1)
7779 turn_off_unique_check = 0;
7780 turn_off_server_serializable_conflict_check = 0;
7786 turn_off_unique_check = 1;
7787 turn_off_server_serializable_conflict_check = 1;
7791 if (!
cursor_open (&cursor_id, list_id,
false,
false))
7827 should_delete =
false;
7831 should_delete =
db_get_int (&dbvals[upd_cls_cnt]);
7837 update_object_tuple (parser, assigns, assign_count, cls_info, upd_cls_cnt, turn_off_unique_check,
7838 turn_off_server_serializable_conflict_check,
NORMAL_UPDATE, should_delete);
7876 client_check_serializable_conflict =
true;
7880 if (has_unique || client_check_serializable_conflict)
7883 for (idx = upd_cls_cnt - 1; idx >= 0; idx--)
7909 if (assigns !=
NULL)
7912 for (idx = 0; idx < assign_count; idx++)
7914 assign = &assigns[idx];
7915 if (assign->attr_desc)
7954 int idx = 0, assigns_count = 0;
7955 int upd_cls_cnt = 0, vals_cnt = 0, multi_assign_cnt = 0;
7965 init_update_data (parser, statement, &assigns, &assigns_count, &cls_info, &upd_cls_cnt, &dbvals, &vals_cnt,
false);
7970 for (idx = 0; idx < assigns_count && error ==
NO_ERROR; idx += multi_assign_cnt)
7972 assign = &assigns[idx];
7977 multi_assign_cnt = 1;
7997 for (idx = 0; idx < upd_cls_cnt && error ==
NO_ERROR; idx++)
7999 cls = &cls_info[idx];
8001 otemplate =
dbt_edit_object (cls->spec->info.spec.flat_entity_list->info.name.db_object);
8002 for (assign = cls->first_assign; assign !=
NULL && error ==
NO_ERROR; assign = assign->next)
8004 error =
dbt_put_internal (otemplate, assign->upd_col_name->info.name.original, assign->db_val);
8016 if (assigns !=
NULL)
8019 for (idx = assigns_count - 1; idx >= 0; idx--)
8021 if (assigns[idx].attr_desc)
8030 if (cls_info !=
NULL)
8121 QUERY_ID query_id_self = parser->
query_id;
8195 cl_name_node = cl_name_node->
next)
8255 for (; assignment; assignment = assignment->
next)
8269 #if defined(CUBRID_DEBUG) 8270 fprintf (stdout,
"system error detected in %s, line %d.\n", __FILE__, __LINE__);
8276 for (; att; att = att->next)
8278 if (att->node_type !=
PT_NAME)
8281 #if defined(CUBRID_DEBUG) 8282 fprintf (stdout,
"system error detected in %s, line %d.\n", __FILE__, __LINE__);
8289 if (spec ==
NULL || (class_obj = spec->info.spec.flat_entity_list->info.name.db_object) ==
NULL)
8297 bool has_unique_temp =
false;
8298 bool check_subclasses = (spec->info.spec.only_all ==
PT_ALL);
8303 if (has_unique_temp)
8322 if (pointer ==
NULL)
8357 for (; assignment; assignment = assignment->
next)
8373 for (; att; att = att->
next)
8404 int server_allowed = 0;
8405 int has_uniques = 0;
8417 class_obj = spec->info.spec.flat_entity_list->info.name.db_object;
8434 error =
update_at_server (parser, spec, statement, &non_null_attrs, has_uniques);
8446 int wait_msecs = -2;
8447 int old_wait_msecs = -2;
8448 float hint_waitsecs;
8458 QUERY_ID query_id_self;
8468 if (hint_waitsecs > 0)
8470 wait_msecs = (int) (hint_waitsecs * 1000);
8474 wait_msecs = (int) hint_waitsecs;
8476 if (wait_msecs >= -1)
8502 if (old_wait_msecs >= -1)
8528 if (non_null_attrs !=
NULL)
8531 non_null_attrs =
NULL;
8543 if (non_null_attrs !=
NULL)
8546 non_null_attrs =
NULL;
8564 int *
const server_allowed,
const PT_NODE * statement)
8567 int is_partition = 0;
8568 int trigger_involved = 0, ti = 0, is_virt = 0;
8574 *server_allowed = 0;
8579 while (spec && !trigger_involved && !is_virt)
8602 trigger_involved = ti;
8617 *server_allowed = ((!trigger_involved && !is_virt)
8624 if (non_null_attrs !=
NULL && *non_null_attrs !=
NULL)
8627 *non_null_attrs =
NULL;
8646 const char *savepoint_name =
NULL;
8647 bool savepoint_started =
false;
8661 if (savepoint_name ==
NULL)
8672 savepoint_started =
true;
8675 while (statement && (error >= 0))
8707 statement = statement->
next;
8743 int has_trigger, has_unique, has_any_update_trigger, au_save, has_virt = 0;
8746 if (parser ==
NULL || statement ==
NULL)
8768 statement->xasl_id =
NULL;
8777 if (statement->info.update.object)
8779 statement->etc =
NULL;
8785 if (statement->xasl_id)
8796 has_any_update_trigger = 0;
8797 while (spec && !has_trigger && err ==
NO_ERROR)
8811 has_any_update_trigger = has_trigger;
8813 else if (!has_any_update_trigger)
8837 statement->info.update.has_trigger = (
bool) has_trigger;
8847 statement->info.update.has_unique = (
bool) has_unique;
8850 server_update = (!has_trigger && !has_virt
8859 if (server_update && !has_any_update_trigger && !(statement->info.update.hint &
PT_HINT_USE_SBR))
8861 statement->info.update.execute_with_commit_allowed = 1;
8867 statement->info.update.do_class_attrs =
true;
8895 statement->flag.cannot_prepare = 1;
8910 if (statement->flag.recompile == 0)
8993 statement->flag.use_plan_cache = 0;
9020 statement->flag.use_plan_cache = 0;
9034 int no_vals = 0, no_consts = 0;
9070 if (select_statement !=
NULL)
9079 select_statement =
mq_translate (parser, select_statement);
9081 if (select_statement)
9099 statement->xasl_id = stream.
xasl_id;
9121 int err, result = 0;
9123 const char *savepoint_name =
NULL;
9127 int wait_msecs = -2, old_wait_msecs = -2;
9128 float hint_waitsecs;
9130 QUERY_ID query_id_self = parser->
query_id;
9131 bool savepoint_started =
false;
9143 if (savepoint_name ==
NULL)
9152 savepoint_started =
true;
9161 if (statement->info.update.object)
9168 if (!statement->info.update.do_class_attrs && !statement->xasl_id)
9170 statement->etc =
NULL;
9179 if (statement->info.update.server_update || !statement->info.update.do_class_attrs)
9196 if (statement->flag.use_auto_commit)
9214 if (statement->flag.use_auto_commit)
9261 if (!statement->info.update.server_update)
9267 if (hint_waitsecs > 0)
9269 wait_msecs = (int) (hint_waitsecs * 1000);
9273 wait_msecs = (int) hint_waitsecs;
9275 if (wait_msecs >= -1)
9282 if (statement->info.update.do_class_attrs)
9294 if (old_wait_msecs >= -1)
9300 if (statement->info.update.server_update || !statement->info.update.do_class_attrs)
9305 if (list_id->
tuple_cnt > 0 && statement->info.update.server_update)
9328 if (err >=
NO_ERROR && statement->info.update.server_update)
9380 return (err <
NO_ERROR) ? err : result;
9394 #if defined(ENABLE_UNUSED_FUNCTION) 9398 bool savepoint_started);
9425 if (statement !=
NULL)
9528 #if defined(ENABLE_UNUSED_FUNCTION) 9561 int count = 0, attrs_cnt = 0, idx;
9562 const char *savepoint_name =
NULL;
9563 int *flush_to_server =
NULL;
9565 bool has_savepoint =
false, is_cursor_open =
false;
9568 if (list_id ==
NULL)
9596 if (savepoint_started ==
false)
9605 has_savepoint =
true;
9609 if (!
cursor_open (&cursor_id, list_id,
false,
false))
9614 is_cursor_open =
true;
9624 if (flush_to_server ==
NULL)
9629 for (idx = 0; idx < attrs_cnt; idx++)
9631 flush_to_server[idx] = -1;
9641 for (idx = 0; idx < attrs_cnt && error >=
NO_ERROR; idx++)
9663 if (flush_to_server[idx] == -1)
9668 flush_to_server[idx] = 1;
9672 flush_to_server[idx] = 0;
9683 if ((error >=
NO_ERROR) && flush_to_server[idx])
9723 if (flush_to_server !=
NULL)
9765 QUERY_ID query_id_self = parser->
query_id;
9881 for (c = constraint_list; c; c = c->
next)
9904 int trigger_involved = 0;
9907 int wait_msecs = -2, old_wait_msecs = -2;
9908 float hint_waitsecs;
9910 bool has_virt_object =
false;
9919 class_obj = spec->info.spec.flat_entity_list->info.name.db_object;
9921 if (spec->info.spec.flat_entity_list->info.name.virt_object)
9923 has_virt_object =
true;
9933 if (!trigger_involved)
9947 if (!trigger_involved && !has_virt_object)
9953 QUERY_ID query_id_self;
9962 if (hint_waitsecs > 0)
9964 wait_msecs = (int) (hint_waitsecs * 1000);
9968 wait_msecs = (int) hint_waitsecs;
9970 if (wait_msecs >= -1)
9981 if (old_wait_msecs >= -1)
10018 const char *savepoint_name =
NULL;
10032 if (savepoint_name ==
NULL)
10044 while (statement && error >= 0)
10060 #if defined(ENABLE_UNUSED_FUNCTION) 10064 error = delete_object_by_oid (parser, statement);
10074 statement = statement->
next;
10111 int has_trigger, au_save, has_any_delete_trigger;
10112 bool server_delete, has_virt_obj;
10114 PT_NODE *save_stmt = statement;
10116 if (parser ==
NULL)
10138 statement->xasl_id =
NULL;
10144 if (!statement->info.delete_.spec)
10146 statement->etc =
NULL;
10152 if (statement->xasl_id)
10165 has_virt_obj =
false;
10167 has_any_delete_trigger = 0;
10178 has_virt_obj =
true;
10192 has_any_delete_trigger = has_trigger;
10194 else if (!has_any_delete_trigger)
10213 statement->info.delete_.has_trigger = has_trigger;
10216 server_delete = (!has_trigger && !has_virt_obj);
10218 statement->info.delete_.server_delete = server_delete;
10219 if (server_delete && !has_any_delete_trigger && !(statement->info.delete_.hint &
PT_HINT_USE_SBR))
10221 statement->info.delete_.execute_with_commit_allowed = 1;
10246 statement->flag.cannot_prepare = 1;
10253 if (statement->flag.recompile == 0)
10323 statement->flag.use_plan_cache = 0;
10329 statement->flag.use_plan_cache = 1;
10333 statement->flag.use_plan_cache = 0;
10344 delete_info = &statement->info.delete_;
10361 select_statement =
mq_translate (parser, select_statement);
10363 if (select_statement)
10378 if (statement->info.delete_.del_stmt_list !=
NULL)
10380 err =
do_prepare_delete (parser, statement->info.delete_.del_stmt_list, statement);
10389 statement->xasl_id = stream.
xasl_id;
10393 if (err !=
NO_ERROR || (statement !=
NULL && statement->flag.cannot_prepare == 1))
10395 for (node = save_stmt; node != statement; node = node->
next)
10418 int err, result = 0;
10420 const char *savepoint_name =
NULL;
10424 int wait_msecs = -2, old_wait_msecs = -2;
10425 float hint_waitsecs;
10428 QUERY_ID query_id_self = parser->
query_id;
10429 bool savepoint_started =
false;
10440 if (savepoint_name ==
NULL)
10450 savepoint_started =
true;
10455 #if defined(ENABLE_UNUSED_FUNCTION) 10458 if (!statement->info.delete_.spec)
10460 err = delete_object_by_oid (parser, statement);
10466 if (!statement->xasl_id)
10468 statement->etc =
NULL;
10490 if (statement->flag.use_auto_commit)
10508 if (statement->flag.use_auto_commit)
10543 if (statement->info.delete_.server_delete)
10553 if (hint_waitsecs > 0)
10555 wait_msecs = (int) (hint_waitsecs * 1000);
10559 wait_msecs = (int) hint_waitsecs;
10561 if (wait_msecs >= -1)
10571 if (old_wait_msecs >= -1)
10581 if (list_id->
tuple_cnt > 0 && statement->info.delete_.server_delete)
10653 return (err <
NO_ERROR) ? err : result;
10676 const char *into_label;
10723 #if defined(ENABLE_UNUSED_FUNCTION) 10729 INSERT_DEFAULT = 4,
10730 INSERT_REPLACE = 8,
10731 INSERT_ON_DUP_KEY_UPDATE = 16
10752 PT_NODE * class_,
const char **savepoint_name);
10755 const bool has_default_values_list);
10768 int *continue_walk);
10922 if (contextp->
xasl)
11009 QUERY_ID query_id_self = parser->
query_id;
11065 &list_id, query_flag);
11095 statement->
etc = (
void *) list_id;
11138 if (*non_null_attrs !=
NULL)
11164 pointer =
pt_point (parser, attr_list);
11165 if (pointer ==
NULL)
11169 if (*non_null_attrs)
11173 *non_null_attrs =
NULL;
11181 attr_list = attr_list->
next;
11184 if (*has_unique == 0)
11219 int trigger_involved;
11223 int server_preference;
11249 if (attr->node_type !=
PT_NAME)
11255 if (attr->info.name.meta_class !=
PT_NORMAL)
11291 int server_allowed = 1;
11302 if (!server_allowed)
11334 if (trigger_involved)
11348 if (trigger_involved)
11395 int *server_allowed = (
int *) arg;
11404 *server_allowed = 1;
11408 *server_allowed = 0;
11467 int buf_size = 0, bitmap_size = 0,
i,
error =
NO_ERROR, attr_count = 0;
11468 unsigned char *bits;
11469 char *bound_bits =
NULL, *key_ptr =
NULL;
11473 const int *asc_desc =
NULL;
11480 for (attr_count = 0, attr = constraint->
attributes; *attr !=
NULL; attr_count++, attr++)
11489 if (attr_dom ==
NULL)
11495 if (asc_desc !=
NULL && asc_desc[attr_count] == 1)
11505 if (setdomain ==
NULL)
11507 setdomain = attr_dom;
11511 dom->
next = attr_dom;
11517 buf_size += bitmap_size;
11526 bound_bits = midxkey.
buf;
11527 key_ptr = bound_bits + bitmap_size;
11529 OR_BUF_INIT (buf, key_ptr, buf_size - bitmap_size);
11530 if (bitmap_size > 0)
11532 bits = (
unsigned char *) bound_bits;
11533 for (
i = 0;
i < bitmap_size;
i++)
11535 bits[
i] = (
unsigned char) 0;
11550 dom->type->index_writeval (&buf, val);
11559 midxkey.
size = buf_size;
11585 while (dom !=
NULL)
11587 attr_dom = dom->
next;
11622 if (update ==
NULL)
11633 if (check_where ==
NULL)
11648 if (update !=
NULL)
11678 int unique_count = 0, key_cnt,
i, level, attr_count = 0;
11683 bool should_verify =
false;
11705 for (constraint = class_->
constraints; constraint !=
NULL; constraint = constraint->
next)
11714 if (unique_count == 0)
11723 if (unique_btids ==
NULL)
11729 if (unique_keys ==
NULL)
11735 for (constraint = class_->
constraints; constraint !=
NULL; constraint = constraint->
next)
11750 should_verify =
true;
11755 if (!should_verify || attr_count == 0)
11760 if (attr_count == 1)
11765 if (assignment ==
NULL)
11807 if (unique_keys !=
NULL)
11809 for (i = 0; i < key_cnt; i++)
11815 if (unique_btids !=
NULL)
11846 int oids_count = 0;
11854 if (oids_count == 0)
11901 int oids_count = 0,
i;
11910 if (oids_count == 0)
11917 for (
i = 0;
i < oids_count;
i++)
12008 int *row_count_ptr)
12010 const char *into_label =
NULL;
12018 int i, degree, row_count = 0;
12019 int wait_msecs = -2, old_wait_msecs = -2;
12020 float hint_waitsecs;
12026 unsigned int save_custom;
12032 if (otemplate ==
NULL)
12040 if (row_count_ptr !=
NULL)
12042 *row_count_ptr = 0;
12051 error =
do_insert_checks (parser, statement, &class_, &update, value_clauses);
12071 if (ins_val ==
NULL)
12108 error = (row_count < 0) ? row_count :
NO_ERROR;
12111 if (ins_val !=
NULL)
12124 if (into_label !=
NULL)
12163 for (value_list = value_clauses; value_list !=
NULL; value_list = value_list->
next)
12169 if (*otemplate ==
NULL)
12175 (*otemplate)->pruning_type = pruning_type;
12191 if (attr !=
NULL && attr_descs ==
NULL)
12194 if (attr_descs ==
NULL)
12207 if (hint_waitsecs > 0)
12209 wait_msecs = (int) (hint_waitsecs * 1000);
12213 wait_msecs = (int) hint_waitsecs;
12215 if (wait_msecs >= -1)
12226 if (vc->node_type !=
PT_INSERT_VALUE || !vc->info.insert_value.is_evaluated)
12233 if (attr_descs[i] ==
NULL)
12254 error =
insert_object_attr (parser, *otemplate, &vc->info.insert_value.value, attr, attr_descs[i]);
12296 else if (error > 0)
12299 row_count +=
error;
12324 row_count +=
error;
12334 if (ins_val !=
NULL && *otemplate !=
NULL)
12345 if (into_label !=
NULL)
12356 if (*otemplate !=
NULL)
12370 bool include_new_obj;
12376 if (include_new_obj ==
true)
12404 if (old_wait_msecs >= -1)
12431 statement->
etc = (
void *) value;
12449 statement->
etc = (
void *) value;
12455 if (*otemplate !=
NULL && value_clauses->
next ==
NULL)
12463 if (ins_val ==
NULL)
12479 statement->
etc = (
void *) ins_val;
12487 for (i = 0; i < degree; i++)
12497 if (update !=
NULL)
12521 if (db_val !=
NULL)
12541 if (row_count_ptr !=
NULL)
12543 *row_count_ptr = row_count;
12570 const char **savepoint_name)
12578 int degree, k, cnt,
i,
flag = 0;
12582 QUERY_ID query_id_self = parser->
query_id;
12646 (
void *) (&odku_arg),
NULL,
NULL);
12663 if (error < NO_ERROR || qry->etc ==
NULL)
12683 for (i = 0; i < degree; i++)
12692 if (attr_descs ==
NULL)
12699 for (i = 0; i < degree; i++)
12701 attr_descs[
i] =
NULL;
12728 if (otemplate ==
NULL)
12738 for (attr = attrs, val = vals, k = 0; attr !=
NULL && k < degree; attr = attr->
next, val++, k++)
12741 if (attr_descs !=
NULL)
12743 if (attr_descs[k] ==
NULL)
12761 0, 1, &attr_descs[k]);
12783 if (update ==
NULL)
12787 if (update ==
NULL)
12834 if (otemplate !=
NULL)
12837 bool include_new_obj;
12847 if (include_new_obj ==
true)
12915 statement->
etc = (
void *) value;
12919 if (update !=
NULL)
12933 for (val = vals, k = 0; k < degree; val++, k++)
12940 if (attr_descs !=
NULL)
12942 for (i = 0; i < degree; i++)
12944 if (attr_descs[i] !=
NULL)
12952 if (cnt < 0 && seq !=
NULL)
12977 int not_on_list = 1;
12979 for (tmp = name_list; tmp !=
NULL; tmp = tmp->
next)
12988 return not_on_list;
13005 const bool has_default_values_list)
13049 const char *into_label;
13093 int *found = (
int *) arg;
13137 int row_count_total = 0;
13140 int has_check_option = 0;
13141 const char *savepoint_name =
NULL;
13143 bool has_default_values_list =
false;
13144 bool is_multiple_tuples_insert =
false;
13145 bool need_savepoint =
false;
13146 int has_trigger = 0;
13147 bool is_trigger_involved =
false;
13161 crt_list = crt_list->
next)
13165 has_default_values_list =
true;
13178 has_default_values_list);
13187 is_multiple_tuples_insert =
true;
13209 need_savepoint =
true;
13212 if (need_savepoint ==
false)
13215 if (has_check_option)
13217 need_savepoint =
true;
13234 if (has_trigger != 0)
13236 need_savepoint =
true;
13240 need_savepoint =
true;
13244 if (need_savepoint ==
false)
13253 if (has_trigger != 0)
13255 need_savepoint =
true;
13259 if (need_savepoint ==
false)
13268 need_savepoint =
true;
13277 if (need_savepoint ==
true)
13280 if (savepoint_name ==
NULL)
13301 row_count_total = 0;
13305 error =
do_insert_template (parser, &otemplate, statement, &savepoint_name, &row_count_total);
13329 return error < 0 ? error : row_count_total;
13343 PT_NODE *statement = root_statement;
13354 while (error < NO_ERROR && statement->next)
13361 statement = statement->
next;
13380 root_statement->
etc = statement->
etc;
13440 if (update !=
NULL)
13470 QUERY_ID query_id_self = parser->
query_id;
13551 statement->
etc = (
void *) list_id;
13584 const char *into_label, *proc;
13589 PT_NODE *vc, *into, *target, *method;
13639 next_val_list = &val_list;
13644 bool to_break =
false;
13647 if (*next_val_list ==
NULL)
13675 db_val = &db_value;
13678 if (db_val !=
NULL)
13680 (*next_val_list)->val = *db_val;
13682 next_val_list = &(*next_val_list)->next;
13710 for (; val_list && vc; vc = vc->
next)
13712 vl = val_list->
next;
13905 const char *into_label;
13910 bool query_trace =
false;
13932 query_trace =
true;
13947 #if defined(CUBRID_DEBUG) 13962 regu_var_list = regu_var_list->
next)
13975 if (query_trace ==
true)
13995 &list_id, query_flag);
13997 statement->
etc = list_id;
14015 for (i = 0, v = vals; i < into_cnt && into; i++, v++, into = into->next)
14017 if (into->node_type ==
PT_NAME && (into_label = into->info.name.original) !=
NULL)
14090 if (parser ==
NULL || statement ==
NULL)
14298 int query_flag, into_cnt,
i, au_save;
14300 const char *into_label;
14304 bool query_trace =
false;
14318 query_trace =
true;
14336 if (query_trace ==
true)
14383 statement->
etc = (
void *) list_id;
14418 for (i = 0, v = vals; i < into_cnt && into; i++, v++, into = into->next)
14420 if (into->node_type ==
PT_NAME && (into_label = into->info.name.original) !=
NULL)
14445 int query_flag, into_cnt,
i, au_save;
14447 const char *into_label;
14450 bool query_trace =
false;
14463 query_trace =
true;
14529 if (query_trace ==
true)
14578 statement->
etc = (
void *) list_id;
14592 for (i = 0, v = vals; i < into_cnt && into; i++, v++, into = into->next)
14594 if (into->node_type ==
PT_NAME && (into_label = into->info.name.original) !=
NULL)
14639 static const char *unknown_name =
"-";
14640 char stmt_separator;
14641 char *stmt_end =
NULL;
14642 char *sbr_text =
NULL;
14793 repl_stmt.
name = (
char *) unknown_name;
14806 stmt_separator = *stmt_end;
14823 bool begin_quote =
false;
14826 if (host_val ==
NULL)
14834 var_len += host_val[
i]->
length;
14837 sbr_text = (
char *) malloc (sql_len + var_len);
14838 if (sbr_text ==
NULL)
14846 for (i = 0; i < sql_len; i++)
14848 if (sql_text[i] ==
'\'')
14852 begin_quote =
true;
14856 begin_quote =
false;
14860 if (sql_text[i] ==
'?' && !begin_quote)
14862 if (nth < parser->host_var_count)
14864 strncpy (&sbr_text[n], (
char *) host_val[nth]->bytes, host_val[nth]->length);
14865 n += host_val[nth++]->
length;
14875 sbr_text[n++] = sql_text[
i];
14896 repl_info.
info = (
char *) &repl_stmt;
14900 if (stmt_end !=
NULL)
14902 *stmt_end = stmt_separator;
15058 else if (xasl ==
NULL)
15089 statement->
etc = list_id;
15128 assignment = assignment->
next;
15132 if (variables ==
NULL)
15140 for (
i = 0;
i < count * 2;
i++)
15162 if (variables !=
NULL)
15164 for (
i = 0;
i < count * 2;
i++)
15196 variables = variables->
next;
15200 if (values ==
NULL)
15215 if (values !=
NULL)
15258 err = do_func (parser, statement);
15283 const char *savepoint_name =
NULL;
15293 if (class_ ==
NULL)
15340 if (savepoint_name ==
NULL)
15412 const char *savepoint_name =
NULL;
15422 QUERY_ID ins_query_id = NULL_QUERY_ID;
15423 QUERY_ID upd_query_id = NULL_QUERY_ID;
15424 QUERY_ID query_id_self = parser->
query_id;
15425 int no_vals, no_consts;
15426 int wait_msecs = -2, old_wait_msecs = -2;
15427 float hint_waitsecs;
15429 bool insert_only =
false;
15430 PT_NODE *copy_assigns, *save_assigns;
15436 if (savepoint_name ==
NULL)
15451 insert_only =
true;
15530 upd_select_stmt =
mq_translate (parser, upd_select_stmt);
15532 if (upd_select_stmt ==
NULL)
15581 ins_select_stmt =
mq_translate (parser, ins_select_stmt);
15584 if (ins_select_stmt ==
NULL)
15613 if (ins_select_stmt->
etc ==
NULL)
15672 upd_select_stmt =
NULL;
15680 if (hint_waitsecs > 0)
15682 wait_msecs = (int) (hint_waitsecs * 1000);
15686 wait_msecs = (int) hint_waitsecs;
15688 if (wait_msecs >= -1)
15755 ins_select_stmt =
NULL;
15760 if (old_wait_msecs >= -1)
15775 if (upd_select_stmt !=
NULL)
15780 if (list_id !=
NULL)
15789 if (ins_select_stmt !=
NULL)
15791 if (ins_select_stmt->
etc !=
NULL)
15816 return (err <
NO_ERROR) ? err : result;
15830 PT_NODE *non_nulls_upd =
NULL, *non_nulls_ins =
NULL, *lhs, *flat, *spec;
15831 int has_unique = 0, has_trigger = 0, has_virt = 0, au_save;
15832 bool server_insert, server_update, server_op, insert_only =
false;
15840 PT_NODE *copy_assigns, *save_assigns;
15842 int no_vals, no_consts, is_vclass = 0;
15851 if (parser ==
NULL || statement ==
NULL)
15868 insert_only =
true;
15882 class_obj = (flat) ? flat->info.name.db_object :
NULL;
15887 if (err ==
NO_ERROR && !has_trigger)
15894 if (err ==
NO_ERROR && !has_trigger)
15903 if (err ==
NO_ERROR && !has_trigger)
15918 has_virt = is_vclass || ((flat) ? (flat->info.name.virt_object !=
NULL) :
false);
15949 server_update = (!has_trigger && !has_virt
15967 server_update = !has_trigger && !has_virt;
15978 server_insert =
true;
15984 server_insert =
false;
15992 server_insert =
false;
16014 server_insert = !has_trigger && !has_virt;
16017 server_op = (server_insert && server_update);
16081 contextp->
xasl =
pt_to_merge_xasl (parser, statement, &non_nulls_upd, &non_nulls_ins, default_expr_attrs);
16192 select_statement =
mq_translate (parser, select_statement);
16194 if (select_statement)
16226 non_nulls_upd =
NULL;
16231 non_nulls_ins =
NULL;
16248 const char *savepoint_name;
16252 int wait_msecs = -2, old_wait_msecs = -2;
16253 float hint_waitsecs;
16255 QUERY_ID ins_query_id = NULL_QUERY_ID;
16256 QUERY_ID query_id_self = parser->
query_id;
16271 if (savepoint_name ==
NULL)
16438 ins_select_stmt =
mq_translate (parser, ins_select_stmt);
16441 if (ins_select_stmt ==
NULL)
16457 err =
do_select (parser, ins_select_stmt);
16466 if (ins_select_stmt->
etc ==
NULL)
16481 hint_waitsecs = (float) atof (hint_arg->info.name.original);
16482 if (hint_waitsecs > 0)
16484 wait_msecs = (int) (hint_waitsecs * 1000);
16488 wait_msecs = (int) hint_waitsecs;
16490 if (wait_msecs >= -1)
16548 values_list->info.node_list.list = ins_select_stmt;
16571 values_list->info.node_list.list_type = save_type;
16572 values_list->info.node_list.list = save_list;
16575 ins_select_stmt =
NULL;
16578 if (old_wait_msecs >= -1)
16594 if (ins_select_stmt !=
NULL)
16596 if (ins_select_stmt->
etc !=
NULL)
16607 if (list_id !=
NULL)
16626 return (err <
NO_ERROR) ? err : result;
16641 int charset_id, collation_id;
16655 snprintf (sys_prm_chg,
sizeof (sys_prm_chg) - 1,
"intl_collation=%s",
lang_get_collation_name (collation_id));
16673 #define MAX_LEN 100 16683 snprintf (sys_prm_chg,
sizeof (sys_prm_chg) - 1,
"timezone=%s", timezone);
16752 if (select_list ==
NULL)
16786 for (spec = select_spec; spec !=
NULL; spec = spec->next)
16824 bool free_temp =
false;
16828 if (attr_list ==
NULL || value_clause ==
NULL || value_clause->info.node_list.list_type ==
PT_IS_SUBQUERY)
16845 for (value_list = value_clause; value_list !=
NULL; value_list = value_list->next)
16847 if (value_list->info.node_list.list_type !=
PT_IS_VALUE)
16859 save_next = val->
next;
16932 val->
next = save_next;
16952 val->
next = save_next;
16964 if (result ==
NULL)
16971 val->
next = save_next;
16979 val->
next = save_next;
17000 val->
next = save_next;
17010 result->
next = save_next;
17018 prev->
next = result;
17028 if (temp !=
NULL && free_temp)
17074 value->info.insert_value.is_evaluated =
false;
17113 if (attr_list ==
NULL || value_clauses ==
NULL)
17122 for (value_list = value_clauses; value_list !=
NULL; value_list = value_list->next)
17124 if (value_list->info.node_list.list_type !=
PT_IS_VALUE)
17132 save_next = value->
next;
17144 if (value_tmp ==
NULL)
17154 value->
next = save_next;
17161 prev->
next = value;
17260 if (result ==
NULL)
17276 for (attr = eval->
attr_list, count = 0; attr !=
NULL && count < eval->crt_attr_index; attr = attr->
next, count++)
17290 if (found && val !=
NULL)
17313 if (result ==
NULL)
17342 if (result ==
NULL)
17412 #if defined(SA_MODE) 17447 #if defined(SA_MODE) 17452 bool interrupt_only;
17455 int *tran_index_array;
17457 bool is_dba_group_member;
17462 assert (array_size >= 1);
17466 tran_index_array = (
int *) malloc (
sizeof (
int) * array_size);
17467 if (tran_index_array ==
NULL)
17474 for (i = 0; id_list !=
NULL; id_list = id_list->
next, i++)
17476 assert (i < array_size);
17488 error = num_killed;
17528 char *plan_str =
NULL;
17571 jplan = json_array ();
17586 plan_str = json_dumps (jplan, JSON_INDENT (2) | JSON_PRESERVE_ORDER);
17588 json_object_clear (jplan);
17589 json_decref (jplan);
17594 if (plan_str !=
NULL)
17619 int upd_has_uniques = 0;
17620 bool has_default_values_list =
false;
17621 int trigger_involved = 0;
17652 has_default_values_list =
true;
17656 has_default_values_list);
17668 if (*update ==
NULL)
17676 int server_allowed = 0;
17679 &server_allowed, *update);
17686 if (!server_allowed)
static void do_clear_insert_values(PARSER_CONTEXT *parser, PT_NODE *insert_statement)
DB_OBJECT * db_find_class(const char *name)
int au_check_serial_authorization(MOP serial_object)
static int set_iso_level(PARSER_CONTEXT *parser, DB_TRAN_ISOLATION *tran_isolation, bool *async_ws, PT_NODE *statement, const DB_VALUE *level)
MIN_MAX_COLUMN_INFO min_max_val
DB_C_FLOAT db_get_float(const DB_VALUE *value)
int do_replicate_statement(PARSER_CONTEXT *parser, PT_NODE *statement)
#define ER_LK_UNILATERALLY_ABORTED
int do_check_merge_trigger(PARSER_CONTEXT *parser, PT_NODE *statement, PT_DO_FUNC *do_func)
OUTPTR_LIST * outptr_list
PT_GET_OPT_LVL_INFO get_opt_lvl
#define SERIAL_ATTR_CLASS_NAME
int tr_set_depth(int depth)
#define RESET_HOST_VARIABLES_IF_INTERNAL_STATEMENT(parser_)
TP_DOMAIN_STATUS tp_value_coerce(const DB_VALUE *src, DB_VALUE *dest, const TP_DOMAIN *desired_domain)
int tran_system_savepoint(const char *savept_name)
PT_NODE * pt_find_spec_in_statement(PARSER_CONTEXT *parser, const PT_NODE *stmt, const PT_NODE *name)
bool classobj_has_unique_constraint(SM_CONSTRAINT *constraints)
#define PT_NODE_TR_EVENT_TYPE(node)
int db_make_datetime(DB_VALUE *value, const DB_DATETIME *datetime)
unsigned execute_with_commit_allowed
int do_drop_trigger(PARSER_CONTEXT *parser, PT_NODE *statement)
#define ER_TP_CANT_COERCE
#define CHECK_MODIFICATION_ERROR()
int db_value_coerce(const DB_VALUE *src, DB_VALUE *dest, const DB_DOMAIN *desired_domain)
int do_statement(PARSER_CONTEXT *parser, PT_NODE *statement)
unsigned dont_collect_exec_stats
#define SERIAL_ATTR_OWNER
int thread_kill_or_interrupt_tran(int *tran_index_list, int num_tran_index, bool is_dba_group_member, bool interrupt_only, int *num_killed)
int do_execute_do(PARSER_CONTEXT *parser, PT_NODE *statement)
bool pt_recompile_for_limit_optimizations(PARSER_CONTEXT *parser, PT_NODE *statement, int xasl_flag)
PT_METHOD_CALL_INFO method_call
int do_remove_trigger(PARSER_CONTEXT *parser, PT_NODE *statement)
int db_2pc_prepare_to_commit_transaction(int global_transaction_id)
int tr_find_event_triggers(DB_TRIGGER_EVENT event, DB_OBJECT *class_mop, const char *attribute, bool active, DB_OBJLIST **list)
struct db_value_list * next
static int delete_object_tuple(DB_OBJECT *obj)
int do_scope(PARSER_CONTEXT *parser, PT_NODE *statement)
static int update_class_attributes(PARSER_CONTEXT *parser, PT_NODE *statement)
int do_alter_serial(PARSER_CONTEXT *parser, PT_NODE *statement)
int sm_att_id(MOP classop, const char *name)
bool ws_has_updated(void)
bool sm_att_auto_increment(MOP classop, const char *name)
static int do_insert_at_server(PARSER_CONTEXT *parser, PT_NODE *statement)
PT_CHECK_OPTION_INFO check_option
int do_get_serial_cached_num(int *cached_num, MOP serial_obj)
#define PT_MERGE_INFO_HAS_UNIQUE
XASL_NODE_HEADER * xasl_header
int do_check_update_trigger(PARSER_CONTEXT *parser, PT_NODE *statement, PT_DO_FUNC *do_func)
#define MSGCAT_RUNTIME_RT_SERIAL_NOT_DEFINED
static const char * get_savepoint_name_from_db_value(DB_VALUE *val)
DB_VALUE_COMPARE_RESULT tp_value_compare(const DB_VALUE *value1, const DB_VALUE *value2, int allow_coercion, int total_order)
unsigned is_autoincrement_set
static int do_replace_into(PARSER_CONTEXT *parser, DB_OTMPL *tmpl, PT_NODE *spec, PT_NODE *class_specs)
#define PT_ERRORm(parser, node, setNo, msgNo)
#define CACHE_TIME_RESET(T)
int do_drop_session_variables(PARSER_CONTEXT *parser, PT_NODE *statement)
#define AU_SAVE_AND_ENABLE(save)
const char * db_get_class_name(DB_OBJECT *class_)
void qo_get_optimization_param(void *, QO_PARAM,...)
int pt_resolve_default_value(PARSER_CONTEXT *parser, PT_NODE *name)
QFILE_TUPLE_VALUE_TYPE_LIST type_list
#define ER_INVALID_PARTITION_REQUEST
MOP ws_mop(const OID *oid, MOP class_mop)
int do_set_timezone(PARSER_CONTEXT *parser, PT_NODE *statement)
int do_drop_variable(PARSER_CONTEXT *parser, PT_NODE *stmt)
int do_prepare_statement(PARSER_CONTEXT *parser, PT_NODE *statement)
DB_ATTRIBUTE * db_get_attributes(DB_OBJECT *obj)
int do_reset_auto_increment_serial(MOP serial_obj)
int tp_value_domain_name(const DB_VALUE *value, char *buffer, int maxlen)
int do_check_delete_trigger(PARSER_CONTEXT *parser, PT_NODE *statement, PT_DO_FUNC *do_func)
static int build_xasl_for_server_delete(PARSER_CONTEXT *parser, PT_NODE *statement)
void tran_get_tran_settings(int *lock_wait_in_msecs, TRAN_ISOLATION *tran_isolation, bool *async_ws)
DB_OBJECT * db_real_instance(DB_OBJECT *obj)
#define MSGCAT_SEMANTIC_SERIAL_CACHED_NUM_INVALID_RANGE
XASL_NODE * pt_to_insert_xasl(PARSER_CONTEXT *parser, PT_NODE *statement)
#define PT_TR_TARGET_CLASS(target)
bool tr_get_execution_state(void)
int db_savepoint_transaction_internal(const char *savepoint_name)
static void unlink_list(PT_NODE *list)
#define MSGCAT_SEMANTIC_SERIAL_MIN_VAL_UNDERFLOW
int execute_query(const XASL_ID *xasl_id, QUERY_ID *query_idp, int var_cnt, const DB_VALUE *varptr, QFILE_LIST_ID **list_idp, QUERY_FLAG flag, CACHE_TIME *clt_cache_time, CACHE_TIME *srv_cache_time)
bool obt_Last_insert_id_generated
static int do_select_internal(PARSER_CONTEXT *parser, PT_NODE *statement, bool for_ins_upd)
void dbmeth_print(DB_OBJECT *self, DB_VALUE *result, DB_VALUE *msg)
int do_savepoint(PARSER_CONTEXT *parser, PT_NODE *statement)
int get_index_size_of_value(const DB_VALUE *value) const
void set_free(DB_COLLECTION *set)
int do_execute_trigger(PARSER_CONTEXT *parser, PT_NODE *statement)
#define PT_ERROR(parser, node, msg)
int do_call_method(PARSER_CONTEXT *parser, PT_NODE *statement)
int qmgr_end_query(QUERY_ID query_id)
char * intl_mbs_chr(const char *mbs, wchar_t wc)
XASL_NODE * pt_to_merge_xasl(PARSER_CONTEXT *parser, PT_NODE *statement, PT_NODE **non_null_upd_attrs, PT_NODE **non_null_ins_attrs, PT_NODE *default_expr_attrs)
static int insert_local(PARSER_CONTEXT *parser, PT_NODE *statement)
void pt_report_to_ersys_with_statement(PARSER_CONTEXT *parser, const PT_ERROR_TYPE error_type, PT_NODE *statement)
int db_make_bigint(DB_VALUE *value, const DB_BIGINT num)
int db_get_int(const DB_VALUE *value)
#define MSGCAT_RUNTIME_SERIAL_S_SERIAL_I
#define ER_QPROC_DB_SERIAL_NOT_FOUND
int( PT_DO_FUNC)(PARSER_CONTEXT *, PT_NODE *)
int sm_update_all_statistics(bool with_fullscan)
void obt_begin_insert_values(void)
int db_is_vclass(DB_OBJECT *op)
PT_NODE * trigger_priority
int do_get_stats(PARSER_CONTEXT *parser, PT_NODE *statement)
DB_C_DOUBLE db_get_double(const DB_VALUE *value)
int do_rename(const PARSER_CONTEXT *parser, const PT_NODE *statement)
int obt_populate_known_arguments(OBJ_TEMPLATE *template_ptr)
int db_datetime_decode(const DB_DATETIME *datetime, int *month, int *day, int *year, int *hour, int *minute, int *second, int *millisecond)
PT_NODE * trigger_name_list
int do_set_trigger(PARSER_CONTEXT *parser, PT_NODE *statement)
int csession_reset_cur_insert_id(void)
int do_prepare_to_commit(PARSER_CONTEXT *parser, PT_NODE *statement)
SM_CLASS_CONSTRAINT * classobj_find_cons_primary_key(SM_CLASS_CONSTRAINT *cons_list)
int db_set_suppress_repl_on_transaction(int set)
PARSER_VARCHAR * pt_print_db_value(PARSER_CONTEXT *parser, const struct db_value *val)
static char * extract_att_name(const char *str)
#define SERIAL_ATTR_COMMENT
#define MSGCAT_SEMANTIC_SERIAL_START_VAL_INVALID
PT_GET_XACTION_INFO get_xaction
DB_FETCH_MODE cursor_set_prefetch_lock_mode(CURSOR_ID *cursor_id_p, DB_FETCH_MODE mode)
int do_set_xaction(PARSER_CONTEXT *parser, PT_NODE *statement)
int cursor_next_tuple(CURSOR_ID *cursor_id_p)
union xasl_node::@155 proc
void qo_set_optimization_param(void *, QO_PARAM,...)
unsigned is_xasl_pinned_reference
QUERY_TRACE_FORMAT format
PT_NODE * pt_get_select_list(PARSER_CONTEXT *parser, PT_NODE *query)
int db_value_clone(DB_VALUE *src, DB_VALUE *dest)
#define OR_BUF_INIT(buf, data, size)
#define PT_NODE_PRINT_TO_ALIAS(p, n, c)
#define PT_NODE_SR_INCREMENT_VAL(node)
#define MSGCAT_RUNTIME_XACT_INVALID_ISO_LVL_MSG
void pt_reset_error(PARSER_CONTEXT *parser)
#define IS_INVALIDATE_ACTION_STATEMENT(statement)
void tr_abort(TR_STATE *state)
SM_ATTRIBUTE * attributes
int db_set_system_parameters(const char *data)
#define ASSERT_ERROR_AND_SET(error_code)
unsigned dont_prt_long_string
static int check_trigger(DB_TRIGGER_EVENT event, PT_DO_FUNC *do_func, PARSER_CONTEXT *parser, PT_NODE *statement)
static int map_iso_levels(PARSER_CONTEXT *parser, PT_NODE *statement, DB_TRAN_ISOLATION *tran_isolation, PT_NODE *node)
void pt_record_error(PARSER_CONTEXT *parser, int stmt_no, int line_no, int col_no, const char *msg, const char *context)
#define SERIAL_ATTR_CACHED_NUM
void tz_get_session_tz_region(TZ_REGION *tz_region)
#define assert_release(e)
static int make_cst_item_value(DB_OBJECT *obj, const char *str, DB_VALUE *db_val)
int db_make_object(DB_VALUE *value, DB_C_OBJECT *obj)
#define SM_MAX_IDENTIFIER_LENGTH
DB_COLLECTION * set_create_sequence(int size)
int do_drop_index(PARSER_CONTEXT *parser, const PT_NODE *statement)
#define MSGCAT_MVCC_RUNTIME_XACT_ISO_LVL_MSG
union pt_plan_trace_info::@133 trace
int db_is_any_class(MOP obj)
int do_select(PARSER_CONTEXT *parser, PT_NODE *statement)
int pt_is_ddl_statement(const PT_NODE *node)
DB_CONSTRAINT * db_get_constraints(DB_OBJECT *obj)
static int delete_real_class(PARSER_CONTEXT *parser, PT_NODE *statement)
OBJ_TEMPASSIGN ** assignments
int do_rollback(PARSER_CONTEXT *parser, PT_NODE *statement)
int tr_rename_trigger(DB_OBJECT *trigger_object, const char *name, bool call_from_api)
static int check_timeout_value(PARSER_CONTEXT *parser, PT_NODE *statement, DB_VALUE *val)
int numeric_db_value_compare(const DB_VALUE *dbv1, const DB_VALUE *dbv2, DB_VALUE *answer)
static int has_unique_constraint(DB_OBJECT *mop)
struct pt_query_info::@123 flag
static double get_priority(PARSER_CONTEXT *parser, PT_NODE *node)
static int select_delete_list(PARSER_CONTEXT *parser, QFILE_LIST_ID **result_p, PT_NODE *delete_stmt)
#define ER_AUTO_INCREMENT_NEWVAL_MUST_LT_MAXVAL
bool au_is_dba_group_member(MOP user)
static int update_savepoint_number
SM_DEFAULT_VALUE default_value
#define PT_IS_INSERT_VALUE_NODE(n)
#define PT_NODE_COND(node)
#define PT_TR_TARGET_ATTR(target)
#define SM_IS_CONSTRAINT_UNIQUE_FAMILY(c)
int do_execute_select(PARSER_CONTEXT *parser, PT_NODE *statement)
static int do_create_midxkey_for_constraint(DB_OTMPL *tmpl, SM_CLASS_CONSTRAINT *constraint, DB_VALUE *key)
int sm_flush_and_decache_objects(MOP obj, int decache)
#define PT_NODE_COND_TIME(node)
OID * ws_identifier(MOP mop)
struct sm_component * next
union pt_query_info::@124 q
bool tran_was_latest_query_ended(void)
#define OID_SET_NULL(oidp)
#define MSGCAT_RUNTIME_PARM_IS_NOT_SET
void pt_exit_packing_buf(void)
int do_alter(PARSER_CONTEXT *parser, PT_NODE *alter)
void sm_downcase_name(const char *name, char *buf, int maxlen)
int do_get_xaction(PARSER_CONTEXT *parser, PT_NODE *statement)
#define cursor_free_self_list_id(list_id)
TP_DOMAIN * tp_domain_resolve_value(const DB_VALUE *val, TP_DOMAIN *dbuf)
int do_update_auto_increment_serial_on_rename(MOP serial_obj, const char *class_name, const char *att_name)
bool is_xasl_pinned_reference
int db_make_sequence(DB_VALUE *value, DB_C_SET *set)
#define TR_LOWEST_PRIORITY
#define ER_TR_TRIGGER_NOT_FOUND
struct pt_merge_info::@125 update
DB_OBJECT * dbt_finish_object(DB_OTMPL *def)
#define ER_QPROC_SERIAL_ALREADY_EXIST
unsigned int custom_print
TP_DOMAIN * tp_domain_copy(const TP_DOMAIN *domain, bool check_cache)
#define PT_IS_NULL_NODE(e)
enum lc_prefetch_flags LC_PREFETCH_FLAGS
static bool truncate_need_repl_log(PT_NODE *statement)
int tz_conv_tz_time_w_zone_name(const DB_TIME *time_source, const char *source_zone, int len_source, const char *dest_zone, int len_dest, DB_TIME *time_dest)
int tr_prepare_statement(TR_STATE **state_p, DB_TRIGGER_EVENT event, DB_OBJECT *class_mop, int attcount, const char **attnames)
struct sm_class_constraint * next
int numeric_db_value_coerce_to_num(DB_VALUE *src, DB_VALUE *dest, DB_DATA_STATUS *data_status)
int SHA1Compute(const unsigned char *message_array, size_t length, SHA1Hash *hash)
TP_DOMAIN tp_Integer_domain
int pt_append_omitted_on_update_expr_assignments(PARSER_CONTEXT *parser, PT_NODE *assigns, PT_NODE *from)
static int is_server_update_allowed(PARSER_CONTEXT *parser, PT_NODE **non_null_attrs, int *has_uniques, int *const server_allowed, const PT_NODE *statement)
int do_get_optimization_param(PARSER_CONTEXT *parser, PT_NODE *statement)
#define MSGCAT_RUNTIME_REPREAD_S_READCOM_I
static int update_object_tuple(PARSER_CONTEXT *parser, CLIENT_UPDATE_INFO *assigns, int assigns_count, CLIENT_UPDATE_CLASS_INFO *upd_classes_info, int classes_cnt, const int turn_off_unique_check, const int turn_off_serializable_conflict_check, UPDATE_TYPE update_type, bool should_delete)
#define MSGCAT_RUNTIME_RT_SERIAL_ALTER_NOT_ALLOWED
void db_string_free(char *string)
PT_NODE_LIST_INFO node_list
#define OR_MULTI_BOUND_BIT_BYTES(count)
void dbt_abort_object(DB_OTMPL *def)
int numeric_db_value_sub(const DB_VALUE *dbv1, const DB_VALUE *dbv2, DB_VALUE *answer)
PT_NODE * pt_to_merge_update_query(PARSER_CONTEXT *parser, PT_NODE *select_list, PT_MERGE_INFO *info)
static int delete_savepoint_number
PT_REMOVE_TRIGGER_INFO remove_trigger
static int do_insert_template(PARSER_CONTEXT *parser, DB_OTMPL **otemplate, PT_NODE *statement, const char **savepoint_name, int *row_count_ptr)
int do_merge(PARSER_CONTEXT *parser, PT_NODE *statement)
#define PT_MERGE_INFO_INSERT_ONLY
int tz_conv_tz_datetime_w_region(const DB_DATETIME *src_dt, const TZ_REGION *src_tz_region, const TZ_REGION *dest_tz_region, DB_DATETIME *dest_dt, TZ_ID *src_tz_id_out, TZ_ID *dest_tz_id_out)
PT_ATTACH_INFO prepare_to_commit
int do_create_trigger(PARSER_CONTEXT *parser, PT_NODE *statement)
static void do_send_plan_trace_to_session(PARSER_CONTEXT *parser)
HFID * sm_get_ch_heap(MOP classmop)
int pt_split_delete_stmt(PARSER_CONTEXT *parser, PT_NODE *delete_stmt)
enum tp_domain_status TP_DOMAIN_STATUS
const char * pt_show_misc_type(PT_MISC_TYPE p)
#define er_log_debug(...)
int db_timestamp_encode_sys(const DB_DATE *date, const DB_TIME *timeval, DB_TIMESTAMP *utime, TZ_ID *dest_tz_id)
PT_NODE * pt_find_node_type_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
void obt_retain_after_finish(OBJ_TEMPLATE *template_ptr)
#define PT_NODE_ACTION(node)
#define IS_PRINT_ACTION_STATEMENT(statement)
int do_drop(PARSER_CONTEXT *parser, PT_NODE *statement)
DB_VALUE * host_variables
void prm_set_integer_value(PARAM_ID prm_id, int value)
int tr_drop_trigger(DB_OBJECT *obj, bool call_from_api)
int tr_before(TR_STATE *state)
int ml_find(DB_OBJLIST *list, MOP mop)
const char * db_attribute_name(DB_ATTRIBUTE *attribute)
static int extract_bt_idx(const char *str)
int do_update_stats(PARSER_CONTEXT *parser, PT_NODE *statement)
#define ER_AUTO_INCREMENT_STARTVAL_MUST_LT_MAXVAL
#define SET_HOST_VARIABLES_IF_INTERNAL_STATEMENT(parser_)
static PT_NODE * do_create_odku_stmt(PARSER_CONTEXT *parser, PT_NODE *insert)
int db_attribute_is_non_null(DB_ATTRIBUTE *attribute)
#define ER_AU_ALTER_FAILURE
struct parser_context::@134 flag
static int update_object_by_oid(PARSER_CONTEXT *parser, PT_NODE *statement, UPDATE_TYPE update_type)
static int do_vacuum(PARSER_CONTEXT *parser, PT_NODE *statement)
int do_prepare_merge(PARSER_CONTEXT *parser, PT_NODE *statement)
#define ER_DO_UNDEFINED_CST_ITEM
DB_ELO * db_get_elo(const DB_VALUE *value)
int pt_associate_label_with_value_check_reference(const char *label, DB_VALUE *val)
#define ERROR0(error, code)
int db_elo_delete(DB_ELO *elo)
bool pt_false_where(PARSER_CONTEXT *parser, PT_NODE *statement)
static int update_real_class(PARSER_CONTEXT *parser, PT_NODE *statement, bool savepoint_started)
#define MSGCAT_SEMANTIC_SERIAL_INC_VAL_INVALID
#define PT_NODE_SR_CACHED_NUM_VAL(node)
static int check_missing_non_null_attrs(const PARSER_CONTEXT *parser, const PT_NODE *spec, PT_NODE *attr_list, const bool has_default_values_list)
static int insert_subquery_results(PARSER_CONTEXT *parser, PT_NODE *statement, PT_NODE *values_list, PT_NODE *class_, const char **savepoint_name)
char * intl_mbs_ncpy(char *mbs1, const char *mbs2, size_t n)
CLASS_STATS * sm_get_statistics_force(MOP classop)
SERVER_INSERT_ALLOWED server_allowed
#define PT_TR_ATTR_NAME(attr)
int dbt_put_internal(DB_OTMPL *def, const char *name, DB_VALUE *value)
int do_truncate(PARSER_CONTEXT *parser, PT_NODE *statement)
TP_DOMAIN tp_Double_domain
DB_DEFAULT_EXPR_TYPE default_expr_type
PT_KILLSTMT_INFO killstmt
int intl_identifier_lower(const char *src, char *dst)
int tr_set_status(DB_OBJECT *trigger_object, DB_TRIGGER_STATUS status, bool call_from_api)
static DB_OBJECT * is_class(OID *obj_oid, OID *class_oid)
unsigned force_check_not_null
void pt_report_to_ersys(const PARSER_CONTEXT *parser, const PT_ERROR_TYPE error_type)
int do_execute_update(PARSER_CONTEXT *parser, PT_NODE *statement)
const char * lang_get_collation_name(const int coll_id)
static int delete_list_by_oids(PARSER_CONTEXT *parser, PT_NODE *statement, QFILE_LIST_ID *list_id, bool savepoint_started)
const char * mq_generate_name(PARSER_CONTEXT *parser, const char *root, int *version)
enum query_trace_format QUERY_TRACE_FORMAT
MOBJ locator_fetch_class(MOP class_mop, DB_FETCH_MODE purpose)
int db_make_string(DB_VALUE *value, DB_CONST_C_CHAR str)
DB_OBJECT * tr_find_trigger(const char *name)
const int REGU_VARIABLE_UPD_INS_LIST
#define PT_ERRORmf3(parser, node, setNo, msgNo, arg1, arg2, arg3)
void port_close_memstream(FILE *fp, char **ptr, size_t *sizeloc)
static int insert_savepoint_number
int do_set_optimization_param(PARSER_CONTEXT *parser, PT_NODE *statement)
DB_DEFAULT_EXPR default_expr
int tran_reset_wait_times(int wait_in_msecs)
unsigned int DB_TIMESTAMP
#define PT_MERGE_INFO_SERVER_OP
int db_unix_timestamp(const DB_VALUE *src_date, DB_VALUE *result_timestamp)
void pt_free_statement_xasl_id(PT_NODE *statement)
DB_ATTRIBUTE * db_get_attribute(DB_OBJECT *obj, const char *name)
int do_execute_session_statement(PARSER_CONTEXT *parser, PT_NODE *statement)
void qo_do_auto_parameterize(PARSER_CONTEXT *parser, PT_NODE *where)
CLIENT_UPDATE_CLASS_INFO * cls_info
int pt_check_grammar_charset_collation(PARSER_CONTEXT *parser, PT_NODE *charset_node, PT_NODE *coll_node, int *charset, int *coll_id)
TP_DOMAIN * tp_domain_resolve_default(DB_TYPE type)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
#define ER_INCREMENT_VALUE_CANNOT_BE_ZERO
static PT_NODE * test_check_option(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
int do_prepare_delete(PARSER_CONTEXT *parser, PT_NODE *statement, PT_NODE *parent)
static int update_check_for_constraints(PARSER_CONTEXT *parser, int *has_unique, PT_NODE **not_nulls, const PT_NODE *statement)
#define PT_IS_VACUUM_NODE(n)
int do_execute_insert(PARSER_CONTEXT *parser, PT_NODE *statement)
int db_value_put_encoded_time(DB_VALUE *value, const DB_TIME *time)
#define ER_QPROC_SERIAL_NOT_FOUND
int obt_quit(OBJ_TEMPLATE *template_ptr)
#define DB_MAX_NUMERIC_PRECISION
static int check_serial_invariants(SERIAL_INVARIANT *invariants, int num_invariants, int *ret_msg_id)
#define SERIAL_ATTR_MAX_VAL
static int init_update_data(PARSER_CONTEXT *parser, PT_NODE *statement, CLIENT_UPDATE_INFO **assigns_data, int *assigns_count, CLIENT_UPDATE_CLASS_INFO **cls_data, int *cls_count, DB_VALUE **values, int *values_cnt, bool has_delete)
#define PT_ERRORmf2(parser, node, setNo, msgNo, arg1, arg2)
int tran_abort_upto_system_savepoint(const char *savepoint_name)
#define XASL_ID_COPY(X1, X2)
#define MSGCAT_RUNTIME_OUT_OF_MEMORY
XASL_NODE * pt_to_delete_xasl(PARSER_CONTEXT *parser, PT_NODE *statement)
void dbmeth_class_name(DB_OBJECT *self, DB_VALUE *result)
static void init_compile_context(PARSER_CONTEXT *parser)
#define PT_NODE_SR_MAX_VAL(node)
XASL_NODE * pt_to_update_xasl(PARSER_CONTEXT *parser, PT_NODE *statement, PT_NODE **non_null_attrs)
int tr_find_all_triggers(DB_OBJLIST **list)
void obt_set_force_flush(OBJ_TEMPLATE *template_ptr)
int sm_att_constrained(MOP classop, const char *name, SM_ATTRIBUTE_FLAG cons)
#define MSGCAT_SEMANTIC_SERIAL_MAX_VAL_OVERFLOW
char * pt_chop_trailing_dots(PARSER_CONTEXT *parser, const char *msg)
#define LANG_COERCIBLE_CODESET
#define OR_ENABLE_BOUND_BIT(bitptr, element)
static void get_activity_info(PARSER_CONTEXT *parser, DB_TRIGGER_ACTION *type, const char **source, PT_NODE *statement)
static void initialize_serial_invariant(SERIAL_INVARIANT *invariant, DB_VALUE val1, DB_VALUE val2, PT_OP_TYPE cmp_op, int val1_msgid, int val2_msgid, int error_type)
int prm_get_integer_value(PARAM_ID prm_id)
void pt_evaluate_tree(PARSER_CONTEXT *parser, PT_NODE *tree, DB_VALUE *db_values, int values_count)
int do_attach(PARSER_CONTEXT *parser, PT_NODE *statement)
PT_NODE * pt_rewrite_to_auto_param(PARSER_CONTEXT *parser, PT_NODE *value)
#define PT_SPEC_IS_ENTITY(spec_)
int au_fetch_class(MOP op, SM_CLASS **class_ptr, AU_FETCHMODE fetchmode, DB_AUTH type)
static PT_NODE * make_vmops(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
int do_rename_trigger(PARSER_CONTEXT *parser, PT_NODE *statement)
static char ** find_update_columns(int *count_ptr, PT_NODE *statement)
int sm_class_has_triggers(DB_OBJECT *classop, int *status_ptr, DB_TRIGGER_EVENT event_type)
PT_CREATE_TRIGGER_INFO create_trigger
int tp_domain_status_er_set(TP_DOMAIN_STATUS status, const char *file_name, const int line_no, const DB_VALUE *src, const TP_DOMAIN *domain)
int do_grant(const PARSER_CONTEXT *parser, const PT_NODE *statement)
PT_NODE * pt_to_upd_del_query(PARSER_CONTEXT *parser, PT_NODE *select_names, PT_NODE *select_list, PT_NODE *from, PT_NODE *with, PT_NODE *class_specs, PT_NODE *where, PT_NODE *using_index, PT_NODE *order_by, PT_NODE *orderby_for, int server_op, SCAN_OPERATION_TYPE scan_op_type)
PT_NODE * odku_assignments
static bool update_check_having_meta_attr(PARSER_CONTEXT *parser, PT_NODE *assignment)
char * db_get_user_and_host_name(void)
#define MSGCAT_SEMANTIC_METH_TARGET_NOT_OBJ
PT_MISC_TYPE trigger_status
#define ER_IT_DATA_OVERFLOW
#define ER_OUT_OF_VIRTUAL_MEMORY
PT_SET_XACTION_INFO set_xaction
#define MSGCAT_SET_PARSER_RUNTIME
PARSER_CONTEXT * parent_parser
int tp_domain_name(const TP_DOMAIN *domain, char *buffer, int maxlen)
DB_TYPE db_value_type(const DB_VALUE *value)
int jsp_call_stored_procedure(PARSER_CONTEXT *parser, PT_NODE *statement)
int pt_get_one_tuple_from_list_id(PARSER_CONTEXT *parser, PT_NODE *tree, DB_VALUE *vals, int cnt)
PT_NODE * flat_entity_list
PT_NODE * pt_insert_value(PARSER_CONTEXT *parser, PT_NODE *node)
int do_prepare_update(PARSER_CONTEXT *parser, PT_NODE *statement)
#define SERIAL_ATTR_CYCLIC
int sm_is_partitioned_class(MOP op)
PT_NODE * trigger_spec_list
static int do_create_serial_internal(MOP *serial_object, const char *serial_name, DB_VALUE *current_val, DB_VALUE *inc_val, DB_VALUE *min_val, DB_VALUE *max_val, const int cyclic, const int cached_num, const int started, const char *comment, const char *class_name, const char *att_name)
#define ER_QPROC_SERIAL_RANGE_OVERFLOW
int tran_commit(bool retain_lock)
int sm_update_statistics(MOP classop, bool with_fullscan)
#define ER_IT_UNKNOWN_VARIABLE
int intl_identifier_casecmp(const char *str1, const char *str2)
bool tran_was_latest_query_committed(void)
#define PT_IS_HINT_NODE(n)
int prepare_query(COMPILE_CONTEXT *context, XASL_STREAM *stream)
void pt_evaluate_tree_having_serial(PARSER_CONTEXT *parser, PT_NODE *tree, DB_VALUE *db_value, int vals_cnt)
#define MSGCAT_RUNTIME_RESOURCES_EXHAUSTED
int pt_count_assignments(PARSER_CONTEXT *parser, PT_NODE *assignments)
#define TM_TRAN_WAIT_MSECS()
UPDATE_ASSIGNMENT * assigns
void db_free_attribute_descriptor(DB_ATTDESC *descriptor)
static int update_at_server(PARSER_CONTEXT *parser, PT_NODE *from, PT_NODE *statement, PT_NODE **non_null_attrs, int has_uniques)
PT_DROP_SESSION_VAR_INFO drop_session_var
int do_kill(PARSER_CONTEXT *parser, PT_NODE *statement)
int locator_flush_class(MOP class_mop)
const char * db_error_string(int level)
int do_check_insert_trigger(PARSER_CONTEXT *parser, PT_NODE *statement, PT_DO_FUNC *do_func)
static enum scanner_mode mode
PT_NODE * parser_copy_tree(PARSER_CONTEXT *parser, const PT_NODE *tree)
static int merge_savepoint_number
PT_NODE * pt_semantic_type(PARSER_CONTEXT *parser, PT_NODE *tree, SEMANTIC_CHK_INFO *sc_info)
PT_EXECUTE_TRIGGER_INFO execute_trigger
CLIENT_UPDATE_INFO * first_assign
#define ER_BLOCK_DDL_STMT
int do_create_index(PARSER_CONTEXT *parser, const PT_NODE *statement)
DB_ATTRIBUTE * db_attribute_next(DB_ATTRIBUTE *attribute)
#define PT_NODE_SR_MIN_VAL(node)
DB_OBJECT * db_get_object(const DB_VALUE *value)
int db_abort_to_savepoint(const char *savepoint_name)
PT_ISOLATION_LVL_INFO isolation_lvl
static int convert_speclist_to_objlist(DB_OBJLIST **triglist, PT_NODE *specnode)
int au_check_authorization(MOP op, DB_AUTH auth)
MOP ws_class_mop(MOP mop)
#define PT_IS_VALUE_NODE(n)
#define PT_NODE_TR_PRI(node)
DB_VALUE * db_value_copy(DB_VALUE *value)
TP_DOMAIN_STATUS tp_value_cast(const DB_VALUE *src, DB_VALUE *dest, const TP_DOMAIN *desired_domain, bool implicit_coercion)
int locator_flush_replication_info(REPL_INFO *repl_info)
#define PT_NODE_TR_NAME(node)
#define TP_DOMAIN_TYPE(dom)
void db_set_read_fetch_instance_version(LC_FETCH_VERSION_TYPE read_Fetch_Instance_Version)
#define MSGCAT_RUNTIME_SERIAL_IS_AUTO_INCREMENT_OBJ
PT_DATA_TYPE_INFO data_type
void pt_enter_packing_buf(void)
int db_get_attribute_descriptor(DB_OBJECT *obj, const char *attname, int class_attribute, int for_update, DB_ATTDESC **descriptor)
#define MSGCAT_RUNTIME_DBT_PUT_ERROR
int db_datetime_to_timestamp(const DB_VALUE *src_datetime, DB_VALUE *result_timestamp)
DB_VALUE * db_value_create(void)
static QFILE_LIST_ID * get_select_list_to_update(PARSER_CONTEXT *parser, PT_NODE *from, PT_NODE *column_names, PT_NODE *column_values, PT_NODE *with, PT_NODE *where, PT_NODE *order_by, PT_NODE *orderby_for, PT_NODE *using_index, PT_NODE *class_specs, PT_NODE *update_stmt)
int tran_abort_only_client(bool is_server_down)
static PT_NODE * pt_append_odku_references(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
void db_update_row_count_cache(const int row_count)
static void cleanup(int signo)
int locator_assign_all_permanent_oids(void)
PT_ATTR_DEF_INFO attr_def
int do_check_internal_statements(PARSER_CONTEXT *parser, PT_NODE *statement, PT_DO_FUNC do_func)
#define pt_is_const_not_hostvar(n)
void obt_disable_serializable_conflict_checking(OBJ_TEMPLATE *template_ptr)
PT_GET_TRIGGER_INFO get_trigger
int csession_set_session_variables(DB_VALUE *variables, const int count)
void db_value_print(const DB_VALUE *value)
const char * er_msg(void)
int do_update(PARSER_CONTEXT *parser, PT_NODE *statement)
#define LANG_COERCIBLE_COLL
DB_OBJECT * db_get_class(MOP obj)
void tz_get_system_tz_region(TZ_REGION *tz_region)
CUBRID_STMT_TYPE pt_node_to_cmd_type(PT_NODE *node)
#define ER_REGU_NOT_IMPLEMENTED
int db_drop(DB_OBJECT *obj)
#define ER_OBJ_OBJECT_NOT_FOUND
#define CACHE_TIME_EQ(T1, T2)
static int do_find_unique_constraint_violations(DB_OTMPL *tmpl, bool for_update, OID **oids, int *oids_count)
#define MSGCAT_RUNTIME_INVALID_AUTO_INCREMENT_ALTER
static DB_TRIGGER_TIME convert_misc_to_tr_time(const PT_MISC_TYPE pt_time)
int do_change_auto_increment_serial(PARSER_CONTEXT *const parser, MOP serial_obj, PT_NODE *node_new_val)
static int merge_mop_list_extension(DB_OBJLIST *new_objlist, DB_OBJLIST **list)
#define PT_VALUE_GET_BYTES(node)
#define PT_NODE_SR_CYCLIC(node)
int sm_get_class_flag(MOP op, SM_CLASS_FLAG flag)
#define PT_NODE_SR_START_VAL(node)
int do_evaluate_default_expr(PARSER_CONTEXT *parser, PT_NODE *class_name)
#define MSGCAT_RUNTIME_NOT_ALLOWED_ACCESS_TO_PARTITION
unsigned recompile_xasl_pinned
static DB_TRIGGER_EVENT convert_event_to_tr_event(const PT_EVENT_TYPE ev)
void pt_end_query(PARSER_CONTEXT *parser, QUERY_ID query_id_self)
PT_CREATE_ENTITY_INFO create_entity
TP_DOMAIN * tp_domain_cache(TP_DOMAIN *transient)
PARSER_VARCHAR * pt_print_bytes(PARSER_CONTEXT *parser, const PT_NODE *node)
int au_fetch_instance_force(MOP op, MOBJ *obj_ptr, AU_FETCHMODE fetchmode, LC_FETCH_VERSION_TYPE fetch_version_type)
PT_NODE * trigger_spec_list
int db_value_put_encoded_date(DB_VALUE *value, const DB_DATE *date)
int sm_decache_instances_after_query_executed_with_commit(MOP class_mop)
#define TM_TRAN_READ_FETCH_VERSION()
void pt_null_etc(PT_NODE *node)
int tr_set_trace(bool trace)
int db_send_arglist(MOP obj, const char *name, DB_VALUE *returnval, DB_VALUE_LIST *args)
#define db_private_free(thrd, ptr)
#define PT_SPEC_IS_CTE(spec_)
PT_NODE * pt_continue_walk(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
int ml_ext_add(DB_OBJLIST **list, MOP mop, int *added_ptr)
static int do_check_for_empty_classes_in_delete(PARSER_CONTEXT *parser, PT_NODE *statement)
#define db_private_alloc(thrd, size)
PT_NODE * pt_get_next_assignment(PT_ASSIGNMENTS_HELPER *ea)
#define PT_NODE_TR_STATUS(node)
int numeric_db_value_mul(const DB_VALUE *dbv1, const DB_VALUE *dbv2, DB_VALUE *answer)
PT_TRIGGER_SPEC_LIST_INFO trigger_spec_list
need_clear_type need_clear
PT_EVENT_TARGET_INFO event_target
char * db_get_user_name(void)
int do_revoke(const PARSER_CONTEXT *parser, const PT_NODE *statement)
PT_EVALUATE_INFO evaluate
#define MAX_DOMAIN_NAME_SIZE
#define MAX_SERIAL_INVARIANT
static int insert_object_attr(const PARSER_CONTEXT *parser, DB_OTMPL *otemplate, DB_VALUE *value, PT_NODE *name, DB_ATTDESC *attr_desc)
int tr_after(TR_STATE *state)
PT_AUTO_INCREMENT_INFO auto_increment
int db_is_deleted(DB_OBJECT *obj)
int sm_flush_objects(MOP obj)
int do_set_session_variables(PARSER_CONTEXT *parser, PT_NODE *statement)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
PT_RENAME_TRIGGER_INFO rename_trigger
int pr_clear_value(DB_VALUE *value)
#define MSGCAT_CATALOG_CUBRID
bool qo_need_skip_execution(void)
int obj_set_shared(MOP op, const char *name, DB_VALUE *value)
static PT_NODE * do_check_insert_server_allowed(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
int tran_flush_to_commit(void)
int vid_vobj_to_object(const DB_VALUE *vobj, DB_OBJECT **mop)
int db_2pc_attach_transaction(int global_transaction_id)
#define SERIAL_ATTR_CURRENT_VAL
PT_SET_NAMES_INFO set_names
int db_make_time(DB_VALUE *value, const int hour, const int minute, const int second)
#define PT_NODE_SR_NO_CYCLIC(node)
bool is_stmt_based_repl_type(const PT_NODE *node)
SM_CONSTRAINT * constraints
DB_VALUE * pt_find_value_of_label(const char *label)
PT_NODE * pt_make_tuple_value_reference(PARSER_CONTEXT *parser, PT_NODE *name, PT_NODE *select_list, CURSOR_ID *cursor_p)
int tr_set_comment(DB_OBJECT *trigger_object, const char *comment, bool call_from_api)
int tran_internal_abort_upto_savepoint(const char *savepoint_name, SAVEPOINT_TYPE savepoint_type, bool client_decache_all_but_norealclasses)
#define MSGCAT_RUNTIME_REPREAD_S_REPREAD_I
int prepare_and_execute_query(char *stream, int stream_size, QUERY_ID *query_id, int var_cnt, DB_VALUE *varptr, QFILE_LIST_ID **result, QUERY_FLAG flag)
TP_DOMAIN tp_Float_domain
static int do_on_duplicate_key_update(PARSER_CONTEXT *parser, DB_OTMPL *tpl, PT_NODE *update_stmt)
#define SERIAL_ATTR_INCREMENT_VAL
int tran_reset_isolation(TRAN_ISOLATION isolation, bool async_ws)
int ws_mop_compare(MOP mop1, MOP mop2)
#define OR_CLEAR_BOUND_BIT(bitptr, element)
int jsp_create_stored_procedure(PARSER_CONTEXT *parser, PT_NODE *statement)
int locator_flush_instance(MOP mop)
PT_NODE * parser_append_node(PT_NODE *node, PT_NODE *list)
int tr_set_priority(DB_OBJECT *trigger_object, double priority, bool call_from_api)
char * pt_short_print(PARSER_CONTEXT *parser, const PT_NODE *node)
SM_CLASS_CONSTRAINT * constraints
int csession_drop_session_variables(DB_VALUE *variables, const int count)
#define TP_IS_CHAR_TYPE(typeid)
#define ER_DO_INSERT_TOO_MANY
XASL_NODE * parser_generate_xasl(PARSER_CONTEXT *parser, PT_NODE *node)
PT_NODE * parser_new_node(PARSER_CONTEXT *parser, PT_NODE_TYPE node_type)
int set_put_element(DB_COLLECTION *set, int index, DB_VALUE *value)
static void error(const char *msg)
PT_SET_SYS_PARAMS_INFO set_sys_params
bool tran_was_latest_query_aborted(void)
#define PT_NODE_MOVE_NUMBER_OUTERLINK(t, s)
int db_make_float(DB_VALUE *value, const DB_C_FLOAT num)
int do_execute_statement(PARSER_CONTEXT *parser, PT_NODE *statement)
unsigned is_click_counter
#define MSGCAT_RUNTIME_TIMEOUT_VALUE_MSG
TP_DOMAIN * tp_domain_construct(DB_TYPE domain_type, DB_OBJECT *class_obj, int precision, int scale, TP_DOMAIN *setdomain)
const unsigned char * pt_get_varchar_bytes(const PARSER_VARCHAR *string)
int db_make_midxkey(DB_VALUE *value, DB_MIDXKEY *midxkey)
int do_set_names(PARSER_CONTEXT *parser, PT_NODE *statement)
static PT_NODE * do_set_insert_server_not_allowed(PARSER_CONTEXT *parser, PT_NODE *node, void *void_arg, int *continue_walk)
#define UNIQUE_SAVEPOINT_ALTER_TRIGGER
DB_OTMPL * dbt_create_object_internal(DB_OBJECT *classobj)
bool db_value_is_null(const DB_VALUE *value)
PT_UPDATE_STATS_INFO update_stats
#define UNIQUE_SAVEPOINT_EXTERNAL_STATEMENT
#define PT_NODE_SR_NO_MAX(node)
static int tr_savepoint_number
#define MSGCAT_RUNTIME_ISO_LVL_SET_TO_MSG
PT_NODE * odku_non_null_attrs
int sm_partitioned_class_type(DB_OBJECT *classop, int *partition_type, char *keyattr, MOP **partitions)
bool pt_name_equal(PARSER_CONTEXT *parser, const PT_NODE *name1, const PT_NODE *name2)
int pr_clone_value(const DB_VALUE *src, DB_VALUE *dest)
#define ER_INVALID_SERIAL_VALUE
void parser_free_tree(PARSER_CONTEXT *parser, PT_NODE *tree)
const char * default_expr_format
#define MSGCAT_SEMANTIC_SERIAL_MIN_VAL_INVALID
BTREE_SEARCH btree_find_multi_uniques(OID *class_oid, int pruning_type, BTID *btids, DB_VALUE *keys, int count, SCAN_OPERATION_TYPE op_type, OID **oids, int *oids_count)
int locator_all_flush(void)
unsigned clt_cache_reusable
int db_abort_to_savepoint_internal(const char *savepoint_name)
LC_FIND_CLASSNAME locator_lockhint_classes(int num_classes, const char **many_classnames, LOCK *many_locks, int *need_subclasses, LC_PREFETCH_FLAGS *flags, int quit_on_errors, LOCK lock_rr_tran)
void insert_rewrite_names_in_value_clauses(PARSER_CONTEXT *parser, PT_NODE *insert_statement)
int do_drop_user(const PARSER_CONTEXT *parser, const PT_NODE *statement)
int sm_update_all_catalog_statistics(bool with_fullscan)
static int is_server_insert_allowed(PARSER_CONTEXT *parser, PT_NODE *statement)
int do_commit(PARSER_CONTEXT *parser, PT_NODE *statement)
#define MSGCAT_SET_PARSER_SEMANTIC
int sm_class_has_unique_constraint(MOBJ classobj, MOP classop, bool check_subclasses, bool *has_unique)
static int do_set_pruning_type(PARSER_CONTEXT *parser, PT_NODE *spec, CLIENT_UPDATE_CLASS_INFO *cls)
int do_drop_serial(PARSER_CONTEXT *parser, PT_NODE *statement)
int intl_identifier_lower_string_size(const char *src)
static int is_replace_or_odku_allowed(DB_OBJECT *obj, int *allowed)
#define free_and_init(ptr)
struct pt_merge_info::@126 insert
#define BTID_COPY(btid_ptr1, btid_ptr2)
#define MSGCAT_RUNTIME__CAN_NOT_EVALUATE
PT_COMMIT_WORK_INFO commit_work
char * prm_get_string_value(PARAM_ID prm_id)
char * parser_print_tree_with_quotes(PARSER_CONTEXT *parser, const PT_NODE *node)
unsigned long_string_skipped
bool recompile_xasl_pinned
DB_OBJECT * pt_check_user_owns_class(PARSER_CONTEXT *parser, PT_NODE *cls_ref)
#define STATS_WITH_FULLSCAN
PT_NODE * pt_point(PARSER_CONTEXT *parser, const PT_NODE *in_tree)
int do_prepare_insert(PARSER_CONTEXT *parser, PT_NODE *statement)
int do_set_query_trace(PARSER_CONTEXT *parser, PT_NODE *statement)
const char * tz_get_system_timezone(void)
#define ER_OBJ_INVALID_ARGUMENTS
int intl_mbs_ncasecmp(const char *mbs1, const char *mbs2, size_t n)
int obj_inst_lock(MOP op, int for_write)
#define PT_NODE_TR_TARGET(node)
const int * db_constraint_asc_desc(DB_CONSTRAINT *constraint)
int do_insert(PARSER_CONTEXT *parser, PT_NODE *root_statement)
static int update_object_attribute(PARSER_CONTEXT *parser, DB_OTMPL *otemplate, PT_NODE *name, DB_ATTDESC *attr_desc, DB_VALUE *value)
PT_SET_TIMEZONE_INFO set_timezone
PT_ALTER_TRIGGER_INFO alter_trigger
#define ER_HEAP_UNKNOWN_OBJECT
int do_get_trigger(PARSER_CONTEXT *parser, PT_NODE *statement)
int log_get_mvcc_snapshot(void)
PT_NODE * pt_flush_classes(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define DB_CURSOR_SUCCESS
void pt_init_assignments_helper(PARSER_CONTEXT *parser, PT_ASSIGNMENTS_HELPER *helper, PT_NODE *assignment)
int db_get(DB_OBJECT *object, const char *attpath, DB_VALUE *value)
int do_prepare_session_statement(PARSER_CONTEXT *parser, PT_NODE *statement)
void ml_ext_free(DB_OBJLIST *list)
int lang_set_flag_from_lang(const char *lang_str, bool has_user_format, bool has_user_lang, int *flag)
PT_ROLLBACK_WORK_INFO rollback_work
int do_create_serial(PARSER_CONTEXT *parser, PT_NODE *statement)
bool prm_get_bool_value(PARAM_ID prm_id)
SM_ATTRIBUTE ** attributes
PT_DROP_TRIGGER_INFO drop_trigger
#define AU_SAVE_AND_DISABLE(save)
PT_GET_STATS_INFO get_stats
DB_VALUE * db_attribute_default(DB_ATTRIBUTE *attribute)
static int call_method(PARSER_CONTEXT *parser, PT_NODE *statement)
void obt_disable_unique_checking(OBJ_TEMPLATE *template_ptr)
#define PT_IS_N_COLUMN_UPDATE_EXPR(n)
const char * tz_get_session_local_timezone(void)
MOP vid_build_virtual_mop(MOP bmop, MOP vclass_mop)
int do_evaluate(PARSER_CONTEXT *parser, PT_NODE *statement)
int serial_decache(OID *oid)
int xts_map_xasl_to_stream(const XASL_NODE *xasl_tree, XASL_STREAM *stream)
int dbt_dput_internal(DB_OTMPL *def, DB_ATTDESC *attribute, DB_VALUE *value)
#define ER_AUTO_INCREMENT_SERIAL_ALREADY_EXIST
PT_SET_OPT_LVL_INFO set_opt_lvl
TR_TRIGGER * tr_map_trigger(DB_OBJECT *object, int fetch)
void cursor_close(CURSOR_ID *cursor_id_p)
char * parser_print_tree(PARSER_CONTEXT *parser, const PT_NODE *node)
static int check_merge_trigger(PT_DO_FUNC *do_func, PARSER_CONTEXT *parser, PT_NODE *statement)
#define DB_VALUE_TYPE(value)
PT_NODE * trigger_spec_list
int heap_has_instance(HFID *hfid, OID *class_oid, int has_visible_instance)
#define MSGCAT_SEMANTIC_SERIAL_MAX_VAL_INVALID
#define ER_PT_UNKNOWN_STATEMENT
int locator_flush_all_instances(MOP class_mop, bool decache)
int pt_length_of_select_list(PT_NODE *list, int hidden_col)
static PT_NODE * do_replace_names_for_insert_values_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
int db_to_char(const DB_VALUE *src_value, const DB_VALUE *format_or_length, const DB_VALUE *lang_str, DB_VALUE *result_str, const TP_DOMAIN *domain)
int db_make_null(DB_VALUE *value)
char * msgcat_message(int cat_id, int set_id, int msg_id)
#define PT_NODE_ACTION_TIME(node)
#define DB_IS_NULL(value)
DB_OTMPL * dbt_edit_object(MOP object)
#define ER_BLOCK_NOWHERE_STMT
int do_update_maxvalue_of_auto_increment_serial(PARSER_CONTEXT *parser, MOP *serial_object, const char *class_name, PT_NODE *att)
#define IS_REJECT_ACTION_STATEMENT(statement)
#define ER_OBJ_MISSING_NON_NULL_ASSIGN
#define SERIAL_ATTR_STARTED
int db_get_error(const DB_VALUE *value)
int sm_flush_for_multi_update(MOP class_mop)
DB_DATETIME * db_get_datetime(const DB_VALUE *value)
PT_TRUNCATE_INFO truncate
static int do_prepare_insert_internal(PARSER_CONTEXT *parser, PT_NODE *statement)
unsigned print_type_ambiguity
PT_PLAN_TRACE_INFO plan_trace[MAX_NUM_PLAN_TRACE]
int do_execute_merge(PARSER_CONTEXT *parser, PT_NODE *statement)
struct sm_attribute * order_link
unsigned return_generated_keys
char * sysprm_print_parameters_for_ha_repl(void)
int do_alter_index(PARSER_CONTEXT *parser, const PT_NODE *statement)
static void do_set_trace_to_query_flag(QUERY_FLAG *query_flag)
#define PT_NODE_SR_NAME(node)
#define PT_INTERNAL_ERROR(parser, what)
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 do_alter_trigger(PARSER_CONTEXT *parser, PT_NODE *statement)
int jsp_alter_stored_procedure(PARSER_CONTEXT *parser, PT_NODE *statement)
#define pt_has_error(parser)
PT_SAVEPOINT_INFO savepoint
static int update_objs_for_list_file(PARSER_CONTEXT *parser, QFILE_LIST_ID *list_id, PT_NODE *statement, bool savepoint_started)
MOP sm_find_class(const char *name)
int do_select_for_ins_upd(PARSER_CONTEXT *parser, PT_NODE *statement)
#define STATS_WITH_SAMPLING
DB_OBJECT * tr_create_trigger(const char *name, DB_TRIGGER_STATUS status, double priority, DB_TRIGGER_EVENT event, DB_OBJECT *class_mop, const char *attribute, DB_TRIGGER_TIME cond_time, const char *cond_source, DB_TRIGGER_TIME action_time, DB_TRIGGER_ACTION action_type, const char *action_source, const char *comment)
void au_change_trigger_owner_method(MOP obj, DB_VALUE *returnval, DB_VALUE *trigger, DB_VALUE *owner)
int db_make_char(DB_VALUE *value, const int char_length, DB_CONST_C_CHAR str, const int char_str_byte_size, const int codeset, const int collation_id)
PT_NODE * trigger_spec_list
PT_SET_TRIGGER_INFO set_trigger
int sm_att_unique_constrained(MOP classop, const char *name)
DB_OBJECT * db_find_unique(MOP classmop, const char *attname, DB_VALUE *value)
bool log_does_allow_replication(void)
XASL_NODE * parser_generate_do_stmt_xasl(PARSER_CONTEXT *parser, PT_NODE *node)
PT_TRIGGER_ACTION_INFO trigger_action
PT_NODE * pt_bind_param_node(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
void prm_set_bool_value(PARAM_ID prm_id, bool value)
#define TRAN_ASYNC_WS_BIT
int dbt_set_label(DB_OTMPL *def, DB_VALUE *label)
#define MSGCAT_SEMANTIC_SERIAL_ALREADY_EXIST
static int is_attr_not_in_insert_list(const PARSER_CONTEXT *parser, PT_NODE *name_list, const char *name)
int numeric_coerce_string_to_num(const char *astring, int astring_length, INTL_CODESET codeset, DB_VALUE *result)
PT_NODE * pt_dbval_to_value(PARSER_CONTEXT *parser, const DB_VALUE *val)
SM_ATTRIBUTE * ordered_attributes
int db_abs_dbval(DB_VALUE *result, DB_VALUE *value)
PT_SET_SESSION_VARIABLE_INFO set_variables
int tr_check_authorization(DB_OBJECT *trigger_object, int alter_flag)
int pt_get_assignment_lists(PARSER_CONTEXT *parser, PT_NODE **select_names, PT_NODE **select_values, PT_NODE **const_names, PT_NODE **const_values, int *no_vals, int *no_consts, PT_NODE *assign, PT_NODE ***old_links)
int pt_length_of_list(const PT_NODE *list)
struct parser_node::@132 flag
#define SERIAL_ATTR_ATT_NAME
int pt_find_omitted_default_expr(PARSER_CONTEXT *parser, DB_OBJECT *class_obj, PT_NODE *specified_attrs, PT_NODE **default_expr_attrs)
static CST_ITEM cst_item_tbl[]
PT_NODE * object_parameter
MOP do_get_serial_obj_id(DB_IDENTIFIER *serial_obj_id, DB_OBJECT *serial_class_mop, const char *serial_name)
int do_prepare_select(PARSER_CONTEXT *parser, PT_NODE *statement)
DB_VALUE * pt_value_to_db(PARSER_CONTEXT *parser, PT_NODE *value)
int db_compile_and_execute_local(const char *CSQL_query, void *result, DB_QUERY_ERROR *query_error)
void pt_free_orphans(PARSER_CONTEXT *parser)
struct json_t * json_plan
PT_NODE * pt_to_merge_insert_query(PARSER_CONTEXT *parser, PT_NODE *select_list, PT_MERGE_INFO *info)
static DB_TRIGGER_STATUS convert_misc_to_tr_status(const PT_MISC_TYPE pt_status)
PT_EVENT_SPEC_INFO event_spec
void pt_restore_assignment_links(PT_NODE *assigns, PT_NODE **links, int count)
bool cursor_open(CURSOR_ID *cursor_id_p, QFILE_LIST_ID *list_id_p, bool updatable, bool is_oid_included)
int do_set_sys_params(PARSER_CONTEXT *parser, PT_NODE *statement)
int tr_drop_deferred_activities(DB_OBJECT *trigger_object, DB_OBJECT *target)
int do_create_user(const PARSER_CONTEXT *parser, const PT_NODE *statement)
#define MSGCAT_SEMANTIC_SERIAL_INC_VAL_ZERO
PT_NODE * parser_walk_tree(PARSER_CONTEXT *parser, PT_NODE *node, PT_NODE_WALK_FUNCTION pre_function, void *pre_argument, PT_NODE_WALK_FUNCTION post_function, void *post_argument)
REGU_VARIABLE_LIST valptrp
#define PT_IS_NAME_NODE(n)
PT_NODE * parser_copy_tree_list(PARSER_CONTEXT *parser, PT_NODE *tree)
#define PT_NODE_SR_NO_MIN(node)
static int do_insert_checks(PARSER_CONTEXT *parser, PT_NODE *statement, PT_NODE **class_, PT_NODE **update, PT_NODE *values)
int do_create_entity(PARSER_CONTEXT *parser, PT_NODE *node)
int au_fetch_class_force(MOP op, SM_CLASS **class_, AU_FETCHMODE fetchmode)
int do_alter_user(const PARSER_CONTEXT *parser, const PT_NODE *statement)
static void init_xasl_stream(XASL_STREAM *stream)
int do_execute_delete(PARSER_CONTEXT *parser, PT_NODE *statement)
void tp_domain_free(TP_DOMAIN *dom)
DB_CONST_C_CHAR db_get_string(const DB_VALUE *value)
int do_create_auto_increment_serial(PARSER_CONTEXT *parser, MOP *serial_object, const char *class_name, PT_NODE *att)
int do_delete(PARSER_CONTEXT *parser, PT_NODE *statement)
#define PT_ERRORmf(parser, node, setNo, msgNo, arg1)
static int check_for_cons(PARSER_CONTEXT *parser, int *has_unique, PT_NODE **non_null_attrs, const PT_NODE *attr_list, DB_OBJECT *class_obj)
static int do_evaluate_insert_values(PARSER_CONTEXT *parser, PT_NODE *insert_statement)
#define SERIAL_ATTR_MIN_VAL
CLIENT_UPDATE_INFO * next
int cursor_get_tuple_value_list(CURSOR_ID *cursor_id_p, int size, DB_VALUE *value_list_p)
int tr_execute_deferred_activities(DB_OBJECT *trigger_object, DB_OBJECT *target)
#define PT_NODE_SR_NO_CACHE(node)
#define TM_TRAN_ISOLATION()
const char * rel_major_release_string(void)
int pt_copy_upddel_hints_to_select(PARSER_CONTEXT *parser, PT_NODE *node, PT_NODE *select_stmt)
PT_INSERT_VALUE_INFO insert_value
int db_value_domain_init(DB_VALUE *value, const DB_TYPE type, const int precision, const int scale)
#define ER_REPLACE_ODKU_NOT_ALLOWED
static XASL_NODE * statement_to_update_xasl(PARSER_CONTEXT *parser, PT_NODE *statement, PT_NODE **non_null_attrs)
FILE * port_open_memstream(char **ptr, size_t *sizeloc)
#define ER_QPROC_CANNOT_UPDATE_SERIAL
int jsp_drop_stored_procedure(PARSER_CONTEXT *parser, PT_NODE *statement)