49 #define PT_CHAIN_LENGTH 10 104 bool view_definition_context);
108 bool view_definition_context);
110 bool view_definition_context,
bool * is_object_type);
112 bool * is_cast_allowed);
119 PT_NODE * stmt_node,
const char *class_name,
120 const char *attr_name,
PT_NODE * attr);
121 #if defined (ENABLE_UNUSED_FUNCTION) 123 PT_NODE * stmt_node,
const char *class_name,
124 const char *attr_name,
PT_NODE * value);
126 const char *class_name_list);
135 PT_NODE * select_list2,
bool * need_cast);
141 #if defined (ENABLE_UNUSED_FUNCTION) 146 const char *attr_name,
const char *alias_name,
PT_NODE * value,
149 const char *attr_name,
const char *alias_name,
PT_NODE ** where_ptr);
165 const char *
self,
const bool reuse_oid,
PT_NODE *
stmt);
187 const bool do_semantic_check);
281 bool is_compatible =
false;
287 if (cinfo1->
idx == -1 && cinfo2->
idx == -1)
292 if (cinfo1->
idx == -1)
298 if (cinfo2->
idx == -1)
307 return is_compatible;
320 bool is_compatible =
false;
333 is_compatible =
true;
355 if (cinfo->
prec == 0)
363 is_compatible =
true;
373 if (cinfo->
scale < 0)
385 is_compatible =
true;
388 is_compatible =
false;
392 is_compatible =
true;
397 return is_compatible;
410 PT_NODE *node_list, *result = node;
417 bool is_select_data_type_set =
false;
425 for (; node_list; node_list = node_list->
next)
428 attrs = cur_node_list_info->
list;
431 for (att = attrs, i = 0; i < num_cinfo && att !=
NULL; ++
i, att = next_att)
433 bool is_cast_allowed =
true;
435 new_cast_added =
false;
436 next_att = att->
next;
437 need_to_cast =
false;
438 if (cinfo[i].
idx == i)
444 && att->data_type ==
NULL)
454 if (!is_cast_allowed)
471 if (prev_att ==
NULL)
473 cur_node_list_info->
list = att;
474 if (is_select_data_type_set ==
false)
482 is_select_data_type_set =
true;
487 prev_att->
next = att;
523 bool need_cast_tmp =
false;
558 for (i = 0, att1 = select_list1, att2 = select_list2; i < cnt1; ++
i, att1 = att1->
next, att2 = att2->
next)
572 for (k = 0; k < cnt1; ++k)
591 *need_cast |= need_cast_tmp;
607 if (result != cinfo && cinfo !=
NULL)
637 *new_cast_added =
false;
673 if (new_att ==
NULL || new_dt ==
NULL)
703 temp_data_type = &new_dt->info.data_type;
716 temp_expr->
arg1 = att;
717 new_att->
next = next_att;
718 new_att->
etc = cinfo;
724 *new_cast_added =
true;
746 PT_NODE *attrs1, *attrs2, *att1, *att2, *node_list, *next_node_list;
749 bool is_compatible, need_cast_cond =
false;
761 if (node_list ==
NULL)
767 next_node_list = node_list->
next;
769 if (next_node_list ==
NULL)
778 while (next_node_list !=
NULL)
781 if (cinfo_cur ==
NULL && need_cast_cond)
789 *need_cast = need_cast_cond;
797 is_compatible =
true;
798 for (i = 0, att1 = attrs1, att2 = attrs2; i <
count; ++
i, att1 = att1->
next, att2 = att2->
next)
800 if (cinfo_cur[i].
idx == -1)
805 if (cinfo[i].
idx == -1)
807 cinfo[
i] = cinfo_cur[
i];
841 node_list = next_node_list;
842 next_node_list = next_node_list->
next;
843 if (next_node_list !=
NULL)
856 if (cinfo_cur !=
NULL)
860 if (result != cinfo && cinfo !=
NULL)
1294 switch (cast_is_valid)
1444 const char *class_name;
1445 PT_NODE *i_attr, *name, *typ, *types, *list =
NULL;
1512 dom = attributes->
domain;
1599 for (crt_attr = *attrs; crt_attr !=
NULL; crt_attr = crt_attr->
next)
1608 inherited_attrs =
NULL;
1626 if (new_name ==
NULL)
1631 for (i_attr = inherited_attrs; i_attr !=
NULL; t_attr = i_attr, i_attr = i_attr->
next)
1656 for (i_attr = inherited_attrs; i_attr !=
NULL; i_attr = i_attr->
next)
1674 if (i_attr == inherited_attrs)
1676 inherited_attrs = i_attr->
next;
1697 for (i_attr = inherited_attrs; i_attr; i_attr = i_attr->
next)
1708 if (i_attr == inherited_attrs)
1710 inherited_attrs = i_attr->
next;
1726 for (i_attr = inherited_attrs, next_node = i_attr ? i_attr->
next :
NULL; i_attr !=
NULL;
1727 i_attr = next_node, next_node = i_attr ? i_attr->
next :
NULL)
1729 for (r = i_attr->
next; r != NULL; r = r->
next)
1739 if (r == i_attr->
next)
1753 if (inherited_attrs != NULL)
1878 bool view_definition_context)
1885 if (view_definition_context)
1906 PT_NODE *entity, *qcol_entity, *qcol_typ;
1908 const char *clsnam =
NULL, *qcol_typnam =
NULL, *spec, *qs_clsnam;
1989 if (!dest_type || !src_type)
2096 bool view_definition_context)
2103 if (view_definition_context)
2134 bool * is_object_type)
2142 *is_object_type =
false;
2157 if (!view_definition_context)
2197 if (view_definition_context)
2222 if (data_type ==
NULL)
2253 *is_object_type =
true;
2286 bool * is_cast_allowed)
2292 *is_cast_allowed =
true;
2314 *is_cast_allowed =
false;
2373 bool new_cast_added;
2398 for (att = attrs, i = 0; i < num_cinfo && att; att = next_att, i++)
2400 bool is_cast_allowed =
true;
2402 new_cast_added =
false;
2404 next_att = att->
next;
2406 need_to_cast =
false;
2408 if (cinfo[i].
idx == i)
2412 need_to_cast =
true;
2419 if (att->data_type ==
NULL)
2433 if (!is_cast_allowed)
2438 memcpy (&att_cinfo, &(cinfo[i]),
sizeof (att_cinfo));
2448 if (new_att ==
NULL)
2458 if (prev_att ==
NULL)
2470 prev_att->
next = att;
2578 int idx,
bool * need_cast)
2582 bool is_compatible =
false;
2640 PT_NODE *attrs1, *attrs2, *result = node;
2688 if (cinfo ==
NULL && need_cast)
2694 if (result && need_cast ==
true)
2735 PT_NODE *node_list, *result = node;
2737 bool need_cast =
false;
2749 if (node_list ==
NULL)
2755 node_list = node_list->
next;
2757 if (node_list ==
NULL)
2767 if (cinfo ==
NULL && need_cast)
2774 if (need_cast && cinfo !=
NULL)
2802 PT_NODE *attrs1, *attrs2, *att1, *att2, *result = node;
2849 if (cinfo_arg1 ==
NULL && need_cast)
2857 if (cinfo_arg2 ==
NULL && need_cast)
2864 if (cinfo_arg1 !=
NULL && cinfo_arg2 !=
NULL)
2866 is_compatible =
true;
2868 for (i = 0, att1 = attrs1, att2 = attrs2; i < cnt1; ++
i, att1 = att1->
next, att2 = att2->
next)
2878 else if (cinfo_arg2 !=
NULL)
2880 cinfo_arg1 = cinfo_arg2;
2886 if (cinfo_arg3 ==
NULL && need_cast)
2894 if (cinfo_arg1 !=
NULL)
2896 is_compatible =
true;
2897 for (i = 0, att1 = attrs1, att2 = attrs2; i < cnt1; ++
i, att1 = att1->
next, att2 = att2->
next)
2909 cinfo_arg1 = cinfo_arg3;
2929 if (cinfo_arg1 ==
NULL && need_cast)
2939 if (cinfo_arg2 ==
NULL && need_cast)
2948 if (cinfo_arg1 !=
NULL)
2950 is_compatible =
true;
2951 for (i = 0, att1 = attrs1, att2 = attrs2; i < cnt1; ++
i, att1 = att1->
next, att2 = att2->
next)
2963 cinfo_arg1 = cinfo_arg2;
3002 #if defined (ENABLE_UNUSED_FUNCTION) 3011 pt_make_default_value (
PARSER_CONTEXT * parser,
const char *class_name,
const char *attr_name)
3045 pt_make_parameter (
PARSER_CONTEXT * parser,
const char *name,
int is_out_parameter)
3054 if (is_out_parameter)
3085 const char *class_name,
const char *attr_name,
PT_NODE * attr)
3089 char *constraint_name =
NULL;
3159 s2->
etc = stmt_node;
3160 s3->
etc = stmt_node;
3167 s4->
next = statement_list;
3169 statement_list = s1;
3171 return statement_list;
3192 const char *class_name,
const char *attr_name,
PT_NODE * value)
3214 save_next = value->
next;
3218 value->
next = save_next;
3224 s1->
next = statement_list;
3226 statement_list = s1;
3228 return statement_list;
3249 pt_append_statements_on_drop_attributes (
PARSER_CONTEXT * parser,
PT_NODE * statement_list,
const char *class_name_list)
3262 s1->
next = statement_list;
3264 statement_list = s1;
3266 return statement_list;
3288 pt_append_statements_on_insert (
PARSER_CONTEXT * parser,
PT_NODE * stmt_node,
const char *class_name,
3294 char param1_name[256], param2_name[256];
3295 char alias1_name[256];
3296 unsigned int save_custom;
3314 sprintf (param1_name,
"%s_%p",
"p1", stmt_node);
3316 sprintf (param2_name,
"%s_%p",
"p2", stmt_node);
3317 sprintf (alias1_name,
"%s_%p",
"c1", stmt_node);
3350 save_next = value->
next;
3355 value->
next = save_next;
3357 s1->
etc = stmt_node;
3358 s2->
etc = stmt_node;
3403 pt_append_statements_on_update (
PARSER_CONTEXT * parser,
PT_NODE * stmt_node,
const char *class_name,
3404 const char *attr_name,
const char *alias_name,
PT_NODE * value,
PT_NODE ** where_ptr)
3410 char param1_name[256];
3411 char alias1_name[256];
3412 unsigned int save_custom;
3424 sprintf (param1_name,
"%s_%p",
"p1", attr_name);
3425 sprintf (alias1_name,
"%s_%p",
"c1", attr_name);
3448 if (param1_dbvalp ==
NULL)
3485 if ((*where_ptr) ==
NULL || (*where_ptr)->etc != (*where_ptr))
3492 if (*where_ptr ==
NULL)
3496 (*where_ptr)->info.expr.op =
PT_IS_IN;
3497 (*where_ptr)->info.expr.arg1 =
pt_name (parser, attr_name);
3498 (*where_ptr)->info.expr.arg2 = pt_make_parameter (parser, param1_name, 0);
3499 (*where_ptr)->etc = (*where_ptr);
3504 save_next = value->
next;
3510 value->
next = save_next;
3556 pt_append_statements_on_delete (
PARSER_CONTEXT * parser,
PT_NODE * stmt_node,
const char *class_name,
3557 const char *attr_name,
const char *alias_name,
PT_NODE ** where_ptr)
3562 char param1_name[256];
3563 char alias1_name[256];
3564 unsigned int save_custom;
3576 sprintf (param1_name,
"%s_%p",
"p1", attr_name);
3577 sprintf (alias1_name,
"%s_%p",
"c1", attr_name);
3602 if (param1_dbvalp ==
NULL)
3630 if ((*where_ptr) ==
NULL || (*where_ptr)->etc != (*where_ptr))
3640 (*where_ptr)->info.expr.op =
PT_IS_IN;
3641 (*where_ptr)->info.expr.arg1 =
pt_name (parser, attr_name);
3642 (*where_ptr)->info.expr.arg2 = pt_make_parameter (parser, param1_name, 0);
3643 (*where_ptr)->etc = (*where_ptr);
3678 PT_NODE *a, *v, *lhs, *rhs, *save_next;
3679 PT_NODE *spec, *entity, *value;
3680 const char *class_name, *attr_name;
3681 char *text_class_name =
NULL, param1_name[256];
3686 if (class_name ==
NULL)
3711 save_next = a->
next;
3715 a->
next = save_next;
3726 if ((value = pt_make_default_value (parser, text_class_name,
"tdata")) ==
NULL)
3733 sprintf (param1_name,
"p1_%p", insert);
3736 if (pt_append_statements_on_insert (parser, insert, class_name, attr_name, value,
3752 save_next = a->
next;
3756 a->
next = save_next;
3767 sprintf (param1_name,
"p1_%p", insert);
3770 if (pt_append_statements_on_insert (parser, insert, class_name, attr_name, v,
3799 PT_NODE *spec, *entity, *alias;
3802 const char *class_name, *attr_name, *alias_name;
3821 if (db_att && sm_has_text_domain (db_att, 0))
3824 if (pt_append_statements_on_update (parser, update, class_name, attr_name, alias_name, rhs,
3853 PT_NODE *spec, *entity, *alias;
3856 const char *class_name, *alias_name;
3869 if (sm_has_text_domain (db_att, 0))
3871 if (pt_append_statements_on_delete (parser,
delete, class_name,
db_attribute_name (db_att), alias_name,
3872 &delete->info.delete_.search_cond) ==
NULL)
3900 PT_NODE *attr_name_list, *data_default_list, *stmt_list;
3905 const char *class_name;
3915 for (a = attr_name_list, v = data_default_list; a !=
NULL && v !=
NULL; a = a->
next, v = v->
next)
3918 #if defined (ENABLE_UNUSED_FUNCTION) 3919 if (attr && sm_has_text_domain (attr, 0))
3922 pt_append_statements_on_change_default (parser, stmt_list, alter, class_name, a->
info.
name.
original, v);
3923 if (stmt_list ==
NULL)
3957 return data_default_list;
3963 return data_default_list;
3968 for (data_default = data_default_list; data_default; data_default = data_default->
next)
3970 save_next = data_default->
next;
3990 prev->
next = result;
3994 data_default_list = result;
3996 data_default = result;
4006 if (node_ptr !=
NULL && node_ptr != default_value)
4024 else if (node_ptr ==
NULL)
4040 if (node_ptr !=
NULL)
4051 data_default->
next = save_next;
4052 prev = data_default;
4055 return data_default_list;
4078 assert (default_coll >= 0);
4097 attr_coll = default_coll;
4098 if (default_cs == -1)
4106 attr_cs = default_cs;
4116 while (elem !=
NULL)
4182 bool *has_query = (
bool *) arg;
4226 switch (node->info.expr.op)
4239 *default_expr = tree;
4272 *agg_function = tree;
4480 PT_NODE *def, *att, *dtyp, *sdtyp;
4482 const char *att_nam, *typ_nam, *styp_nam;
4605 #if defined (ENABLE_UNUSED_FUNCTION) 4630 const char *cls_nam;
4660 const char *att_nam, *cls_nam;
4702 PT_NODE *name, *sup, *att, *qry, *attr;
4703 const char *cls_nam, *sup_nam, *att_nam;
4707 int is_partitioned = 0, ss_partition, trigger_involved = 0;
4709 #if defined (ENABLE_UNUSED_FUNCTION) 4711 char *drop_name_list =
NULL;
4713 bool reuse_oid =
false;
4714 int collation_id = -1;
4905 if (is_partitioned && keyattr[0])
4914 #if defined (ENABLE_UNUSED_FUNCTION) 4916 if (sm_has_text_domain (db_att, 0))
4919 if (drop_name_list !=
NULL)
4948 #if defined (ENABLE_UNUSED_FUNCTION) 4954 drop_name_list)) ==
NULL)
4974 if (trigger_involved)
4997 if (!is_partitioned)
5068 #if defined (ENABLE_UNUSED_FUNCTION) 5251 while (f_arg !=
NULL)
5266 f_arg = f_arg->
next;
5576 for (blks = ptl->
next; blks; blks = blks->
next)
5583 goto duplicate_error;
5590 goto duplicate_error;
5625 const char *value_text =
NULL;
5635 bool has_different_collation =
false;
5636 bool has_different_codeset =
false;
5652 has_different_codeset =
true;
5659 has_different_collation =
true;
5663 if (has_different_codeset ==
true)
5730 PT_NODE *pinfo, *pcol, *attr, *pattr, *parts;
5731 int name_count, valchk, parts_cnt;
5738 bool chkflag =
false;
5785 else if (name_count == 0)
5790 else if (name_count > 1)
5857 assert (column->domain != NULL);
5864 if (query_columns != NULL)
5867 query_columns =
NULL;
5869 assert (NULL == query_columns);
6153 else if (rst ==
DB_EQ)
6190 if (tmp_vallist ==
NULL)
6197 *ptail = tmp_vallist;
6201 (*ptail)->
next = tmp_vallist;
6202 *ptail = tmp_vallist;
6276 for (tmp = *phead; tmp; tmp = tmp->
next)
6316 PT_NODE *name_list, *part_list;
6322 int orig_cnt = 0, name_cnt = 0, parts_cnt = 0, chkflag = 0;
6324 char *class_name, *part_name;
6336 const char *expr_sql =
NULL;
6390 if (name_list ==
NULL)
6398 if (part_list ==
NULL)
6411 if (name_list ==
NULL || part_list ==
NULL)
6441 if (tmp_parser ==
NULL)
6453 if (statements ==
NULL)
6463 statements[0] =
pt_compile (tmp_parser, statements[0]);
6464 if (statements[0] ==
NULL)
6474 assert (statements[0]->node_type ==
PT_SELECT && statements[0]->info.query.q.select.list !=
NULL);
6527 for (objs = smclass->
users; objs; objs = objs->
next)
6550 goto invalid_partition_info_fail;
6558 goto invalid_partition_info_fail;
6562 goto invalid_partition_info_fail;
6572 for (names = name_list, chkflag = 0; names; names = names->
next)
6590 for (i = 0; i < setsize; i++)
6594 goto invalid_partition_info_fail;
6599 goto out_of_mem_fail;
6602 if (inlist_head ==
NULL)
6604 inlist_head = inlist_tail;
6616 for (i = 0; i < setsize; i++)
6620 goto invalid_partition_info_fail;
6625 goto out_of_mem_fail;
6628 if (outlist_head ==
NULL)
6630 outlist_head = outlist_tail;
6639 goto out_of_mem_fail;
6642 if (minmax_head ==
NULL)
6644 minmax_head = minmax_tail;
6649 goto out_of_mem_fail;
6655 for (parts = part_list; parts; parts = parts->
next)
6668 for (names = name_list; names; names = names->
next)
6682 for (parts = part_list; parts; parts = parts->
next)
6692 next_parts = parts->
next;
6741 if (parts_val ==
NULL)
6743 parts_val = &null_val;
6758 if (inlist_head ==
NULL)
6760 inlist_head = inlist_tail;
6783 if (parts_val ==
NULL)
6785 parts_val = &null_val;
6801 if (minmax_head ==
NULL)
6803 minmax_head = minmax_tail;
6820 for (next_parts = parts->
next; next_parts; next_parts = next_parts->
next)
6835 for (names = name_list; names; names = names->
next)
6857 orig_cnt = orig_cnt - name_cnt + parts_cnt;
6888 if (partmin ==
NULL)
6900 range_invalid_error:
6913 for (min_list = minmax_head, max_list = (min_list) ? min_list->
next :
NULL; (min_list && max_list);
6914 min_list = max_list->
next, max_list = (min_list) ? min_list->
next :
NULL)
6920 goto range_invalid_error;
6929 goto range_invalid_error;
6938 goto range_invalid_error;
6952 goto range_invalid_error;
6970 orig_cnt += psize->
data.
i;
6974 orig_cnt -= psize->
data.
i;
6977 if (orig_cnt < 1 || psize->data.i < 1 || orig_cnt >
MAX_PARTITIONS)
6985 if (tmp_parser !=
NULL)
6991 if (column_dt !=
NULL)
7014 for (p = minmax_head;
p; p =
next)
7020 for (p = inlist_head;
p; p =
next)
7026 for (p = outlist_head;
p; p =
next)
7039 invalid_partition_info_fail:
7078 if (self_obj && attr_obj &&
db_is_subclass (attr_obj, self_obj) > 0)
7096 bool is_compatible =
false;
7097 if (arg1_type == arg2_type)
7099 is_compatible =
true;
7121 is_compatible =
true;
7133 is_compatible =
true;
7145 is_compatible =
true;
7157 is_compatible =
true;
7167 return is_compatible;
7180 bool is_object_type;
7242 for (attrd = attrds, att1 = attrs1, att2 = attrs2;
7293 const char *spec_name =
NULL;
7299 const char *query_spec_string;
7300 const char *
self = (
const char *) arg;
7313 if (entity_name ==
NULL)
7337 if (query_cache ==
NULL)
7343 while (db_query_spec)
7350 query_spec = *result;
7391 const bool do_semantic_check)
7393 PT_NODE *columns, *col, *attr;
7394 int col_count, attr_count;
7407 if (do_semantic_check)
7427 if (attr_count != col_count)
7440 for (attr = attrs, col = columns; attr !=
NULL && col !=
NULL; attr = attr->
next, col = col->
next)
7517 bool is_object_type;
7519 PT_NODE *new_col, *new_dt, *next_col;
7536 next_col = col->
next;
7538 new_col = new_dt =
NULL;
7541 if (new_col ==
NULL)
7575 new_col->
next = next_col;
7594 PT_NODE *columns, *col, *attr;
7630 while (attr !=
NULL && col !=
NULL)
7642 if (prev_col ==
NULL)
7654 prev_col->
next = new_col;
7688 if (prev_col ==
NULL)
7700 prev_col->
next = new_col;
7742 const char *lang_str;
7744 bool has_user_format;
7748 for (attr = attrs, col = columns; attr && col; attr = attr->
next, col = col->
next)
7755 if (col->node_type !=
PT_NAME)
7759 if (col->info.name.spec_id == 0)
7778 if (col_attr ==
NULL)
7801 if (default_value ==
NULL)
7808 if (default_data ==
NULL)
7821 if (default_op_value ==
NULL)
7827 default_op_value->info.expr.op =
7832 default_value = default_op_value;
7838 arg1 = default_op_value;
7860 if (default_value ==
NULL)
7871 if (default_data ==
NULL)
7929 const char *name =
NULL;
7978 for (crt_qry = *qry_specs_ptr, prev_qry_link_ptr = qry_specs_ptr; crt_qry !=
NULL;
7979 prev_qry_link_ptr = &crt_qry->
next, crt_qry = crt_qry->
next)
7988 if (result_stmt ==
NULL)
7994 crt_qry = result_stmt;
8002 prev_qry->
next = save_next;
8005 (*prev_qry_link_ptr) = crt_qry;
8009 if (result_stmt ==
NULL)
8022 crt_qry = result_stmt;
8024 crt_qry->
next = save_next;
8025 (*prev_qry_link_ptr) = crt_qry;
8032 if (attr_count <= 0)
8037 assert (attr_count == 0);
8040 for (crt_attr = qspec_attr; crt_attr !=
NULL; crt_attr = crt_attr->
next)
8076 if (derived_attr ==
NULL)
8088 assert (attr_count >= 0);
8091 for (crt_qry = *qry_specs_ptr, prev_qry_link_ptr = qry_specs_ptr; crt_qry !=
NULL;
8092 prev_qry_link_ptr = &crt_qry->
next, crt_qry = crt_qry->
next)
8103 if (result_stmt ==
NULL)
8108 crt_qry = result_stmt;
8115 if (all_attrs ==
NULL)
8126 if (result_stmt ==
NULL)
8132 crt_qry = result_stmt;
8134 crt_qry->
next = save_next;
8135 (*prev_qry_link_ptr) = crt_qry;
8150 int name_upper_size;
8189 PT_NODE *parent, *qry_specs, *name, *create_like;
8190 PT_NODE *all_attrs, *r, *resolv_class, *attr;
8191 PT_NODE *tbl_opt_charset, *cs_node, *tbl_opt_coll, *coll_node;
8196 int collation_id, charset;
8197 bool found_reuse_oid_option =
false, reuse_oid =
false;
8198 bool found_auto_increment =
false;
8199 bool found_tbl_comment =
false;
8200 bool found_tbl_encrypt =
false;
8212 tbl_opt_charset = tbl_opt_coll =
NULL;
8221 if (found_reuse_oid_option)
8229 found_reuse_oid_option =
true;
8237 if (found_reuse_oid_option)
8245 found_reuse_oid_option =
true;
8253 if (found_auto_increment)
8263 found_auto_increment =
true;
8273 if (tbl_opt_charset !=
NULL)
8281 tbl_opt_charset = tbl_opt;
8288 if (tbl_opt_coll !=
NULL)
8296 tbl_opt_coll = tbl_opt;
8302 if (found_tbl_comment)
8310 found_tbl_comment =
true;
8316 if (found_tbl_encrypt)
8324 found_tbl_encrypt =
true;
8336 if (!found_reuse_oid_option && entity_type ==
PT_CLASS)
8355 if ((cs_node !=
NULL || coll_node !=
NULL)
8364 if (existing_entity !=
NULL)
8430 #if defined (ENABLE_UNUSED_FUNCTION) 8488 for (attr = all_attrs; attr; attr = attr->
next)
8514 for (crt_attr = qspec_attr; crt_attr !=
NULL; crt_attr = crt_attr->
next)
8564 if (found_auto_increment)
8570 if (create_like !=
NULL)
8610 PT_NODE *name, *prefix_length, *col, *col_expr;
8654 if (col_expr ==
NULL)
8775 #if defined (ENABLE_UNUSED_FUNCTION) 8777 char *drop_name_list =
NULL;
8787 const char *cls_name;
8796 prev_node = free_node->
next;
8804 free_node = prev_node->
next;
8810 free_node = free_node->
next;
8827 const char *cls_name1, *cls_name2;
8839 if ((db_obj1 == db_obj2)
8867 prev_node = free_node->
next;
8875 free_node = prev_node->
next;
8881 free_node = free_node->
next;
8894 const char *cls_nam;
8928 const char *cls_nam;
8938 #if defined (ENABLE_UNUSED_FUNCTION) 8939 if (sm_has_text_domain (attributes, 0))
8942 if (drop_name_list !=
NULL)
8956 #if defined (ENABLE_UNUSED_FUNCTION) 8981 const char *username;
9012 const char *method_name;
9142 const char *cls_nam;
9192 PT_NODE *spec, *arg2, *group, *expr;
9271 if (info->
depth == 0)
9280 if (info->
depth == 0)
9282 for (group = info->
group_by; group; group = group->
next)
9299 unsigned int save_custom;
9306 for (group = info->
group_by; group; group = group->
next)
9363 int tgt_cnt, col_cnt;
9383 if (tgt_cnt != col_cnt)
9392 std::string normalized_path;
9399 char *normalized = (
char *)
parser_alloc (parser, (
int) (normalized_path.length () + 1) *
sizeof (
char));
9400 strcpy (normalized, normalized_path.c_str ());
9535 PT_NODE *entity, *derived_table;
9599 t_node = t_node->
next;
9769 for (k = 0; k < cnt; ++k)
9835 for (t_node = info.
group_by; t_node; t_node = t_node->
next)
9879 if (referred_node !=
NULL)
9910 bool has_gbynum =
false;
9924 bool has_level_greater, has_level_lesser;
9925 int disallow_ops[] = {
9935 if (has_level_lesser)
9958 if (check_func !=
NULL)
9960 node = (*check_func) (
parser, node);
10014 if (entity ==
NULL)
10082 "INST_NUM() or ROWNUM",
"INST_NUM() or ROWNUM");
10095 PT_NODE *derived_table, *a, *b, *select_list;
10096 int attr_cnt, col_cnt,
i, j;
10119 if (col_cnt - attr_cnt > 0)
10122 for (i = attr_cnt, j = attr_cnt; i < col_cnt; i++)
10185 if (entity ==
NULL)
10307 PT_NODE *disj, *arg1, *next_spec, *conj, *new_path, *new_expr;
10309 UINTPTR next_spec_id;
10396 if (new_pred ==
NULL)
10404 if (new_expr ==
NULL)
10417 new_pred = new_expr;
10422 if (new_expr ==
NULL)
10654 int *check = (
int *) arg;
10780 bool save_donot_fold =
false;
10793 if (sc_info_ptr ==
NULL)
10795 sc_info_ptr = &sc_info;
10845 pt_resolve_delete_external (parser, node);
10849 pt_resolve_update_external (parser, node);
10941 if (db_obj ==
NULL)
11238 for (p = att;
p; p = p->
next)
11377 bool is_cast_allowed =
true;
11400 if (!is_cast_allowed)
11497 bool rhs_is_collection_with_str =
false;
11509 while (dt_element != NULL)
11513 rhs_is_collection_with_str =
true;
11516 dt_element = dt_element->
next;
11521 && lhs->
data_type == NULL && rhs_is_collection_with_str ==
true)
11528 dt_element = cast_dt;
11530 while (dt_element != NULL)
11538 dt_element = dt_element->
next;
11547 if (cast_dt != NULL && cast_dt != lhs->
data_type)
11580 if (assignment_list ==
NULL)
11585 for (a = assignment_list; a; a =
next)
11624 PT_NODE *e1, *e1_next, *e2, *tmp;
11646 for (; e1; e1 = e1_next)
11648 e1_next = e1->
next;
11692 for (; list && rhs_list; rhs_list = rhs_list->
next)
11694 if (rhs_list->flag.is_hidden_column)
11748 if (update ==
NULL)
11759 if (prev->next ==
NULL)
11765 for (node = prev->
next; node !=
NULL; prev = node, node = node->
next)
11835 if (assignments ==
NULL)
11842 for (assignment = assignments; assignment !=
NULL; assignment = assignment->
next)
11856 if (assignment ==
NULL)
11890 bool has_attrib =
false, has_meta_attrib =
false;
11895 if (assignments ==
NULL)
11905 has_meta_attrib =
true;
11912 if (has_attrib && has_meta_attrib)
11939 if (entity_name ==
NULL)
11943 "The parse tree of the insert statement is incorrect." " entity_name of spec must be set.");
11958 for (attr2 = attr->
next; attr2 !=
NULL; attr2 = attr2->
next)
11981 PT_NODE *a, *b, *att_a, *att_b;
11987 if (assignment_list ==
NULL)
11992 for (a = assignment_list; a; a = a->
next)
11996 goto exit_on_error;
12007 goto exit_on_error;
12011 for (; att_a; att_a = att_a->
next)
12014 for (att_b = att_a->
next; att_b; att_b = att_b->
next)
12018 goto exit_on_error;
12035 goto exit_on_error;
12046 goto exit_on_error;
12050 for (; att_b; att_b = att_b->
next)
12054 goto exit_on_error;
12103 int result_isnull = 0;
12138 if (!result_isnull)
12497 if (!result_isnull)
12575 while (temp && temp->
next != node)
12604 match = (
PT_NODE *) order_list;
12621 match = match->
next;
12648 PT_NODE *select_list, *order_by, *col, *r, *temp, *order, *match;
12649 int n,
i, select_list_len, select_list_full_len;
12650 bool ordbynum_flag;
12651 char *r_str =
NULL;
12653 bool skip_orderby_num =
false;
12657 select_list = order_by =
NULL;
12708 if (select_list ==
NULL)
12727 while (order_by !=
NULL)
12736 skip_orderby_num =
true;
12741 last->
next = order_by;
12789 if (order_by ==
NULL)
12794 goto check_select_list;
12802 select_list_len = 0;
12804 #if !defined (NDEBUG) 12808 for (order = order_by; order; order = order->
next)
12824 if (select_list_full_len < n || n < 1)
12833 for (col = select_list, i = 1; i < n; i++)
12839 assert (n <= select_list_len || col->
flag.is_hidden_column);
12872 for (col = select_list; col; col = col->
next)
12975 for (order = order_by; order; order = order->
next)
13001 for (col = select_list; col; col = col->
next)
13011 if (!order_by && !skip_orderby_num)
13023 ordbynum_flag =
false;
13184 int a_cnt = 0, v_cnt = 0;
13196 pt_resolve_insert_external (parser, ins);
13212 for (crt_list = value_clauses; crt_list !=
NULL; crt_list = crt_list->next)
13223 if (a_cnt != v_cnt)
13236 if (a_cnt != v_cnt)
13242 for (a = attr_list; v !=
NULL && a !=
NULL; prev = v, v = v->
next, a = a->
next)
13248 if (new_node ==
NULL)
13276 v->expected_domain = d;
13322 if (value_clauses->next)
13377 num_markers = (
int *) arg;
13381 if (*num_markers < node->info.host_var.index + 1)
13405 num_markers = (
int *) arg;
13409 if (*num_markers < node->info.host_var.index + 1)
13429 bool *found = (
bool *) arg;
13544 int num_iso_nodes = 0;
13545 int num_time_nodes = 0;
13551 if (num_iso_nodes > 1)
13556 if (num_time_nodes > 1)
13574 int *cnt = (
int *) arg;
13595 int *cnt = (
int *) arg;
13695 #if defined (ENABLE_UNUSED_FUNCTION) 13705 pt_find_attr_def (
const PT_NODE * attr_def_list,
const PT_NODE * name)
13728 pt_find_cnstr_def (
const PT_NODE * cnstr_def_list,
const PT_NODE * name)
13789 return (
PT_NODE *) constraint;
13794 return (
PT_NODE *) constraint;
13839 if (class_ ==
NULL)
13943 if (auto_inc_attr !=
NULL)
13949 auto_inc_attr = attr;
13953 if (auto_inc_attr ==
NULL)
13972 prev_tbl_opt =
NULL;
13974 while (tbl_opt !=
NULL)
13979 if (prev_tbl_opt !=
NULL)
13981 prev_tbl_opt->
next = tbl_opt->
next;
13994 prev_tbl_opt = tbl_opt;
13995 tbl_opt = tbl_opt->
next;
14001 if (start_val ==
NULL || increment_val ==
NULL)
14042 int n,
i, arg_list_len;
14050 if (order_by ==
NULL)
14056 if (arg_list ==
NULL)
14068 for (order = order_by; order !=
NULL; order = order->
next)
14091 if (n > arg_list_len || n < 1)
14100 for (arg = arg_list, i = 1; i < n; i++)
14115 char *r_str =
NULL;
14124 for (arg = arg_list; arg !=
NULL; arg = arg->
next)
14183 assert (n > 0 && n <= arg_list_len);
14198 if (group_concat_sep_node_save !=
NULL)
14236 int i, arg_list_len, order_by_list_len;
14238 const char *func_name;
14243 func_name =
"CUME_DIST";
14247 func_name =
"PERCENT_RANK";
14262 if (arg_list !=
NULL || order_by !=
NULL)
14271 if (arg_list ==
NULL || order_by ==
NULL)
14281 if (arg_list_len != order_by_list_len)
14289 for (i = 0; i < arg_list_len; i++)
14342 order = order->
next;
14360 bool has_paramenters =
false;
14364 return has_paramenters;
14378 bool *is_parameter = (
bool *) arg;
14391 *is_parameter =
true;
14410 if (parser ==
NULL || sort_spec ==
NULL)
14445 if (resolved !=
NULL)
14516 if (parser ==
NULL || spec ==
NULL || spec_list ==
NULL)
14524 if (spec_expr ==
NULL)
14547 spec_list = spec_list->
next;
14566 PT_NODE *item, *expr, *save_next;
14569 if (parser ==
NULL)
14586 save_next = item->
next;
14632 PT_NODE *arg_list, *partition_by, *order_by, *select_list;
14673 if (new_order ==
NULL)
14702 if (order_by !=
NULL && partition_by !=
NULL)
14707 for (part = partition_by; part; part = part->
next)
14721 for (link = partition_by; link && link->
next; link = link->
next)
14727 order_list = partition_by;
14728 link->
next = order_by;
14732 order_list = order_by;
14744 for (order = order_list; order; order = order->
next)
14757 for (col = select_list, index = 1; col; col = col->
next, index++)
14780 col->
next = save_next;
14788 col->
next = save_next;
14817 for (order = order_list; order; order = order->
next)
14833 if (link && match == link)
14836 while (temp->
next != match)
14844 if (link && match == link->
next)
14912 else if (fnc_cnt > 0 && rem)
14918 for (arg = list; arg !=
NULL; arg = arg->
next)
14980 int atts_count = 0,
i = 0;
14996 info.
is_null_atts = (
bool *) malloc (atts_count *
sizeof (
bool));
15002 for (
i = 0;
i < atts_count;
i++)
15022 bool has_not_null_constraint;
15026 has_not_null_constraint =
false;
15027 for (attr = info.
atts; attr !=
NULL && has_not_null_constraint ==
false; attr = attr->
next, i++)
15038 if (p_nam ==
NULL || p_nam->node_type !=
PT_NAME)
15043 if (smclass ==
NULL)
15059 has_not_null_constraint =
true;
15066 if (has_not_null_constraint ==
false)
15353 else if (info->
has_not ==
false)
15380 for (attr = info->
atts; attr !=
NULL; attr = attr->
next, i++)
15391 if (p_nam ==
NULL || p_nam->node_type !=
PT_NAME)
15495 for (attr = info->
atts; attr !=
NULL; attr = attr->
next, i++)
15506 if (p_nam ==
NULL || p_nam->node_type !=
PT_NAME)
15522 if (info->
depth == 0)
15592 PT_NODE *assignment, *spec, *lhs;
15691 for (att = attrs, i = 0; i < num_cinfo && att !=
NULL; ++
i, att = att->
next)
15705 memcpy (&(cinfo[i]), &cinfo_att,
sizeof (cinfo_att));
15759 PT_NODE *attrs, *att, *prev_att, *next_att, *new_att;
15774 for (att = attrs, i = 0; i < num_cinfo && att !=
NULL; ++
i, prev_att = att, att = next_att)
15778 next_att = att->
next;
15791 bool new_cast_added =
false;
15802 if (new_att ==
NULL)
15811 if (new_cast_added)
15813 if (prev_att ==
NULL)
15826 prev_att->next = att;
15918 if (
function !=
NULL)
15969 if (part_next !=
NULL)
15973 if (db_val1 ==
NULL)
15984 db_val1 = &null_val;
15990 if (pt_val2 !=
NULL && column_dt !=
NULL)
16006 if (db_val2 ==
NULL)
16018 db_val2 = &null_val;
16034 if (compare_result !=
DB_LT)
16138 bool arg1_is_null, arg2_is_null;
16156 if (!arg1_is_null && !arg2_is_null)
16161 else if (arg1_is_null && arg2_is_null)
16166 else if (arg1_is_null && !arg2_is_null)
16179 assert (!arg1_is_null && arg2_is_null);
16220 const char *alias_print;
16228 next = union_node->
next;
16241 PT_NODE *union_orderby, *union_orderby_for, *union_limit, *union_with_clause;
16242 unsigned int union_rewrite_limit;
16268 if (derived ==
NULL)
16274 new_node = derived;
16286 if (union_orderby !=
NULL)
16291 if (union_limit !=
NULL)
16296 if (union_with_clause)
16310 new_node = union_node;
DB_OBJECT * db_find_class(const char *name)
#define PT_NAME_INFO_SET_FLAG(e, f)
#define MSGCAT_SEMANTIC_NO_LTZ_IN_FUNCTION_FILTER_INDEX
#define MSGCAT_SEMANTIC_DATA_LOSS_IS_NOT_ALLOWED
PT_NODE * pt_name(PARSER_CONTEXT *parser_ptr, const char *name)
#define MSGCAT_SEMANTIC_INVALID_ORDERBY_WITH_DISTINCT
#define ER_LK_UNILATERALLY_ABORTED
static PT_NODE * pt_check_with_info(PARSER_CONTEXT *parser, PT_NODE *node, SEMANTIC_CHK_INFO *info)
#define pt_is_output_hostvar(n)
PT_NODE * pt_compile(PARSER_CONTEXT *parser, PT_NODE *volatile statement)
#define MSGCAT_SEMANTIC_TRANSACTION_ID_WANT_INTEGER
#define MSGCAT_SEMANTIC_IS_NOT_DEFINED
#define MSGCAT_SEMANTIC_ALREADY_SUBCLASS
#define RESET_HOST_VARIABLES_IF_INTERNAL_STATEMENT(parser_)
#define MSGCAT_SEMANTIC_INVALID_PARTITION_INFO
DB_OBJECT * db_attribute_class(DB_ATTRIBUTE *attribute)
QFILE_TUPLE_VALUE_POSITION pos_descr
PT_NODE * pt_find_spec_in_statement(PARSER_CONTEXT *parser, const PT_NODE *stmt, const PT_NODE *name)
#define MSGCAT_SEMANTIC_FUNCTION_CANNOT_BE_USED_FOR_FILTER_INDEX
struct pt_alter_info::@111::@115 rename
static PT_NODE * pt_check_vclass_query_spec(PARSER_CONTEXT *parser, PT_NODE *qry, PT_NODE *attrs, const char *self, const bool do_semantic_check)
int db_value_coerce(const DB_VALUE *src, DB_VALUE *dest, const DB_DOMAIN *desired_domain)
int set_get_element_nocopy(DB_COLLECTION *set, int index, DB_VALUE *value)
#define MSGCAT_SEMANTIC_INS_EXPR_IN_INSERT
int pt_quick_resolve_names(PARSER_CONTEXT *parser, PT_NODE **spec_p, PT_NODE **node_p, SEMANTIC_CHK_INFO *sc_info)
PT_NODE * resolution_list
#define PT_EXPR_INFO_CAST_SHOULD_FOLD
PT_METHOD_CALL_INFO method_call
static PT_NODE * pt_count_iso_nodes(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_NON_REFERABLE_VIOLATION
#define LANG_SYS_COLLATION
bool pt_is_aggregate_function(PARSER_CONTEXT *parser, const PT_NODE *node)
#define LANG_GET_BINARY_COLLATION(c)
PT_NODE * pt_find_order_value_in_list(PARSER_CONTEXT *parser, const PT_NODE *sort_value, const PT_NODE *order_list)
struct seman_compatible_info SEMAN_COMPATIBLE_INFO
#define MSGCAT_SEMANTIC_QSPEC_COL_NOT_NA
static SEMAN_COMPATIBLE_INFO * pt_get_values_query_compatible_info(PARSER_CONTEXT *parser, PT_NODE *node, bool *need_cast)
static void pt_check_method(PARSER_CONTEXT *parser, PT_NODE *node)
#define MSGCAT_SEMANTIC_ONLYONE_PARTITION_COLUMN
static void pt_check_alter_partition(PARSER_CONTEXT *parser, PT_NODE *stmt, MOP dbobj)
#define PT_WARNINGmf(parser, node, setNo, msgNo, arg1)
PT_NODE ** parser_parse_string_use_sys_charset(PARSER_CONTEXT *parser, const char *buffer)
PT_NODE * pt_check_orderbynum_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_CANNOT_USE_GROUPBYNUM_WITH_ROLLUP
#define PT_IS_CHAR_STRING_TYPE(t)
TP_DOMAIN * expected_domain
void db_get_tran_settings(int *lock_wait, DB_TRAN_ISOLATION *tran_isolation)
#define PT_ERRORm(parser, node, setNo, msgNo)
#define MSGCAT_SEMANTIC_CONSTANT_TYPE_MISMATCH
enum json_table_column_function func
#define MSGCAT_SEMANTIC_COLLATE_NOT_ALLOWED
const char * db_get_class_name(DB_OBJECT *class_)
#define MSGCAT_SEMANTIC_USER_IS_NOT_IN_DB
#define MSGCAT_SEMANTIC_PREFIX_LENGTH_COLLATION
void * parser_alloc(const PARSER_CONTEXT *parser, const int length)
#define MSGCAT_SEMANTIC_NOT_CLASS_ATTR_MTHD
PT_NODE * table_option_list
static PT_NODE * pt_derive_attribute(PARSER_CONTEXT *parser, PT_NODE *c)
#define pt_is_input_hostvar(n)
static bool pt_has_parameters(PARSER_CONTEXT *parser, PT_NODE *stmt)
DB_ATTRIBUTE * db_get_attributes(DB_OBJECT *obj)
struct db_value * m_default_value
#define MSGCAT_SEMANTIC_NONEXISTENT_SUPCLASS
int pt_check_enum_data_type(PARSER_CONTEXT *parser, PT_NODE *dt)
PT_MISC_TYPE call_or_expr
DB_OBJECT * db_get_owner(DB_OBJECT *class_obj)
#define MSGCAT_SEMANTIC_ILLEGAL_RHS
#define MSGCAT_SEMANTIC_IS_NOT_PARTITIONED_CLASS
#define MSGCAT_SEMANTIC_ORDERBYNUM_SELECT_LIST_ERR
static int pt_normalize_path(PARSER_CONTEXT *parser, REFPTR(char, c))
STATEMENT_SET_FOLD pt_check_union_is_foldable(PARSER_CONTEXT *parser, PT_NODE *union_node)
bool pt_is_analytic_function(PARSER_CONTEXT *parser, const PT_NODE *node)
DB_ATTRIBUTE * db_get_class_attribute(DB_OBJECT *obj, const char *name)
static bool pt_is_compatible_without_cast(PARSER_CONTEXT *parser, SEMAN_COMPATIBLE_INFO *dest_sci, PT_NODE *src, bool *is_cast_allowed)
#define TP_IS_SET_TYPE(typenum)
static int pt_class_compatible(PARSER_CONTEXT *parser, const PT_NODE *class1, const PT_NODE *class2, bool view_definition_context)
#define MSGCAT_SEMANTIC_VARIABLE_NOT_ALLOWED
static PT_NODE * pt_to_compatible_cast(PARSER_CONTEXT *parser, PT_NODE *node, SEMAN_COMPATIBLE_INFO *cinfo, int num_cinfo)
DB_DOMAIN * pt_type_enum_to_db_domain(const PT_TYPE_ENUM t)
#define PT_ERROR(parser, node, msg)
static PT_NODE * pt_check_and_replace_hostvar(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
int db_get_int(const DB_VALUE *value)
int db_is_vclass(DB_OBJECT *op)
static PT_NODE * pt_find_matching_sort_spec(PARSER_CONTEXT *parser, PT_NODE *spec, PT_NODE *spec_list, PT_NODE *select_list)
#define PT_NAME_INFO_FILL_DEFAULT
static PT_NODE * pt_expand_isnull_preds_helper(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
int pt_get_select_query_columns(PARSER_CONTEXT *parser, PT_NODE *create_select, DB_QUERY_TYPE **query_columns)
int db_json_normalize_path_string(const char *pointer_path, std::string &output)
#define MSGCAT_SEMANTIC_OUT_OF_MEMORY
static PT_NODE * pt_find_aggregate_analytic_pre(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
#define PT_EXPR_INFO_SET_FLAG(e, f)
int db_method_arg_count(DB_METHOD *method)
static PT_NODE * pt_count_time_nodes(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
struct json_table_column_behavior on_empty
PT_NODE * chain[PT_CHAIN_LENGTH]
static PT_NODE * pt_check_filter_index_expr_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_NODE * pt_get_select_list(PARSER_CONTEXT *parser, PT_NODE *query)
static const char * attribute_name(PARSER_CONTEXT *parser, PT_NODE *att)
#define MSGCAT_SEMANTIC_SORT_SPEC_WANT_NUM
#define MSGCAT_SEMANTIC_DUPLICATE_TABLE_OPTION
static void pt_get_compatible_info_from_node(const PT_NODE *att, SEMAN_COMPATIBLE_INFO *cinfo)
#define PT_SELECT_INFO_DISABLE_LOOSE_SCAN
static int pt_check_json_table_node(PARSER_CONTEXT *parser, PT_NODE *node)
int db_is_instance(MOP obj)
struct PT_VALUE_LINKS * next
static bool pt_is_compatible_type(const PT_TYPE_ENUM arg1_type, const PT_TYPE_ENUM arg2_type)
#define MSGCAT_SEMANTIC_DEFAULT_NESTED_EXPR_NOT_ALLOWED
SM_ATTRIBUTE * attributes
PT_TABLE_OPTION_INFO table_option
enum pt_type_enum PT_TYPE_ENUM
DB_DOMAIN * db_domain_next(const DB_DOMAIN *domain)
static int pt_check_auto_increment_table_option(PARSER_CONTEXT *parser, PT_NODE *create)
#define assert_release(e)
static PT_UNION_COMPATIBLE pt_get_select_list_coll_compat(PARSER_CONTEXT *parser, PT_NODE *query, SEMAN_COMPATIBLE_INFO *cinfo, int num_cinfo)
void pt_move_node(REFPTR(PT_NODE, destp), REFPTR(PT_NODE, srcp))
static int pt_check_partition_values(PARSER_CONTEXT *parser, PT_TYPE_ENUM desired_type, PT_NODE *data_type, PT_VALUE_LINKS *ptl, PT_NODE *parts)
void pt_check_level_expr(PARSER_CONTEXT *parser, PT_NODE *expr, bool *has_greater, bool *has_lesser)
static PT_NODE * pt_make_cast_with_compatible_info(PARSER_CONTEXT *parser, PT_NODE *att, PT_NODE *next_att, SEMAN_COMPATIBLE_INFO *cinfo, bool *new_cast_added)
static PT_NODE * pt_find_aggregate_analytic_in_where(PARSER_CONTEXT *parser, PT_NODE *node)
#define MSGCAT_SEMANTIC_INVALID_INDEX_COLUMN
PT_NODE * pt_check_odku_assignments(PARSER_CONTEXT *parser, PT_NODE *insert)
PARSER_CONTEXT * parser_create_parser(void)
#define MSGCAT_SEMANTIC_CYCLIC_REFERENCE_VIEW_SPEC
int db_value_compare(const DB_VALUE *value1, const DB_VALUE *value2)
#define MSGCAT_SEMANTIC_CS_MATCH_COLLATE
DB_ATTRIBUTE * db_get_attribute_force(DB_OBJECT *obj, const char *name)
static int class_type(DB_OBJECT *class_obj)
PT_TYPE_ENUM pt_db_to_type_enum(const DB_TYPE t)
int intl_identifier_upper_string_size(const char *src)
int mq_is_real_class_of_vclass(PARSER_CONTEXT *parser, const PT_NODE *s_class, const PT_NODE *d_class)
static int pt_check_cume_dist_percent_rank_order_by(PARSER_CONTEXT *parser, PT_NODE *func)
#define pt_is_input_parameter(n)
#define PT_IS_LOB_TYPE(t)
struct pt_query_info::@123 flag
static int pt_value_links_add(PARSER_CONTEXT *parser, PT_NODE *val, PT_NODE *parts, PT_VALUE_LINKS *ptl)
PT_NODE * pt_get_end_path_node(PT_NODE *node)
bool pt_is_json_doc_type(PT_TYPE_ENUM type)
SM_DEFAULT_VALUE default_value
#define MSGCAT_SEMANTIC_NOT_METHOD_OR_ATTR
#define PT_EXPR_INFO_INSTNUM_NC
DB_OBJECT * db_find_user(const char *name)
static PT_NODE * pt_get_common_type_for_union(PARSER_CONTEXT *parser, PT_NODE *att1, PT_NODE *att2, SEMAN_COMPATIBLE_INFO *cinfo, int idx, bool *need_cast)
#define MSGCAT_SEMANTIC_NO_ORDERBY_ALLOWED
#define PT_IS_DATE_TIME_TYPE(t)
struct sm_component * next
void pt_no_double_updates(PARSER_CONTEXT *parser, PT_NODE *stmt)
#define MSGCAT_SEMANTIC_INSTNUM_COMPATIBILITY_ERR
union pt_query_info::@124 q
#define MSGCAT_SEMANTIC_INVALID_PARTITION_REQUEST
#define MSGCAT_SEMANTIC_PARTITION_KEY_COLUMN
PT_NODE * pt_check_cyclic_reference_in_view_spec(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_NODE * as_attr_mthd_name
PT_NODE * pt_has_using_index_clause(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_INVALID_CONSTANT_PARAMETER
static void pt_check_function_index_expr(PARSER_CONTEXT *parser, PT_NODE *node)
DB_OBJLIST * db_get_superclasses(DB_OBJECT *obj)
#define MSGCAT_SEMANTIC_WANT_NO_AGGREGATE
struct pt_merge_info::@125 update
#define PT_IS_DOT_NODE(n)
bool pt_false_search_condition(PARSER_CONTEXT *parser, const PT_NODE *statement)
unsigned int custom_print
TP_DOMAIN * tp_domain_copy(const TP_DOMAIN *domain, bool check_cache)
#define MSGCAT_SEMANTIC_GT_1_TIMEOUT_CLAUSES
DB_DOMAIN * pt_node_to_db_domain(PARSER_CONTEXT *parser, PT_NODE *node, const char *class_name)
#define PT_IS_ASSIGN_NODE(n)
PT_NODE * pt_flat_spec_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
void pt_fixup_column_type(PT_NODE *col)
#define MSGCAT_SEMANTIC_INVALID_PARTITION_COLUMN_TYPE
PT_NODE * pt_find_class_of_index(PARSER_CONTEXT *parser, const char *const index_name, const DB_CONSTRAINT_TYPE index_type)
static int pt_assignment_class_compatible(PARSER_CONTEXT *parser, PT_NODE *lhs, PT_NODE *rhs)
#define PT_IS_STRING_TYPE(t)
static PT_NODE * pt_check_single_valued_node(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
int db_is_subclass(MOP classmop, MOP supermop)
#define MSGCAT_SEMANTIC_SORT_SPEC_NOT_EXIST
static void pt_check_kill(PARSER_CONTEXT *parser, PT_NODE *node)
#define PT_NAME_INFO_IS_FLAGED(e, f)
PT_NODE_LIST_INFO node_list
static void pt_check_assignments(PARSER_CONTEXT *parser, PT_NODE *stmt)
#define MSGCAT_SEMANTIC_WANT_SUBCLASS_CLAUSE
static void pt_check_alter(PARSER_CONTEXT *parser, PT_NODE *alter)
#define MSGCAT_SEMANTIC_USER_NAME_TOO_LONG
int set_size(DB_COLLECTION *set)
#define MSGCAT_SEMANTIC_INVALID_PARTITION_DEFINITION
#define MSGCAT_SEMANTIC_INVALID_AUTO_INCREMENT_ON_DEFAULT_SHARED
#define MSGCAT_SEMANTIC_DEFAULT_JUST_COLUMN_NAME
#define MSGCAT_SEMANTIC_DUPLICATE_PARTITION_DEF
#define MSGCAT_SEMANTIC_NOT_ALLOWED_HERE
static int pt_is_real_class_of_vclass(PARSER_CONTEXT *parser, const PT_NODE *s_class, const PT_NODE *d_class)
#define MSGCAT_SEMANTIC_SELECT_INTO_IN_SUBQUERY
#define MSGCAT_SEMANTIC_SORT_SPEC_NAN_PATH
enum tp_domain_status TP_DOMAIN_STATUS
const char * pt_show_misc_type(PT_MISC_TYPE p)
static void pt_check_grant_revoke(PARSER_CONTEXT *parser, PT_NODE *node)
unsigned partition_pruned
static PT_MISC_TYPE pt_get_class_type(PARSER_CONTEXT *parser, const DB_OBJECT *cls)
#define MSGCAT_SEMANTIC_AMBIGUOUS_REF_TO
#define MSGCAT_SEMANTIC_UPDATE_DERIVED_TABLE
bool ws_is_same_object(MOP mop1, MOP mop2)
PT_WITH_CLAUSE_INFO with_clause
const char * db_attribute_name(DB_ATTRIBUTE *attribute)
#define MSGCAT_SEMANTIC_SUBQUERY_NOT_ALLOWED_IN_DEFAULT_CLAUSE
int db_attribute_is_shared(DB_ATTRIBUTE *attribute)
static PT_NODE * pt_check_where(PARSER_CONTEXT *parser, PT_NODE *node)
static int pt_objects_assignable(PARSER_CONTEXT *parser, const PT_NODE *d_class_dt, const PT_NODE *s_class)
#define SET_HOST_VARIABLES_IF_INTERNAL_STATEMENT(parser_)
#define MSGCAT_SEMANTIC_IS_NOT_A
int db_attribute_is_non_null(DB_ATTRIBUTE *attribute)
#define PT_IS_OID_NAME(n)
const char * pt_get_name(PT_NODE *nam)
DB_ATTRIBUTE * db_get_attribute_by_name(const char *class_name, const char *attribute_name)
#define MSGCAT_SEMANTIC_ATT_INCOMPATIBLE_COL
struct parser_context::@134 flag
#define MSGCAT_SEMANTIC_PARTITION_RANGE_ERROR
#define pt_is_dot_node(n)
static PT_NODE * pt_get_assignments(PT_NODE *node)
DB_DEFAULT_EXPR_TYPE default_expr_type
static void pt_check_drop(PARSER_CONTEXT *parser, PT_NODE *node)
#define MSGCAT_SEMANTIC_ORDERBY_IS_NOT_INT
#define MSGCAT_SEMANTIC_WANT_TYPE
PT_NODE * pt_wrap_with_cast_op(PARSER_CONTEXT *parser, PT_NODE *arg, PT_TYPE_ENUM new_type, int p, int s, PT_NODE *desired_dt)
TP_DOMAIN * pt_xasl_node_to_domain(PARSER_CONTEXT *parser, const PT_NODE *node)
bool pt_false_where(PARSER_CONTEXT *parser, PT_NODE *statement)
unsigned has_system_class
#define MSGCAT_SEMANTIC_NESTED_ANALYTIC_FUNCTIONS
#define MSGCAT_SEMANTIC_CANT_COERCE_TO
PT_JSON_TABLE_INFO json_table_info
DB_QUERY_TYPE * db_query_format_next(DB_QUERY_TYPE *query_type)
void parser_free_parser(PARSER_CONTEXT *parser)
static int db_value_list_finddel(DB_VALUE_PLIST **phead, DB_VALUE *val)
static PT_NODE * pt_values_query_to_compatible_cast(PARSER_CONTEXT *parser, PT_NODE *node, SEMAN_COMPATIBLE_INFO *cinfo, int num_cinfo)
#define MSGCAT_SEMANTIC_HOSTVAR_IN_DDL
#define MSGCAT_SEMANTIC_PARTITION_VAL_CODESET
int jsp_is_exist_stored_procedure(const char *name)
DB_DEFAULT_EXPR_TYPE default_expr_type
const char * pt_get_proxy_spec_name(const char *qspec)
PT_KILLSTMT_INFO killstmt
int er_get_severity(void)
int pr_free_ext_value(DB_VALUE *value)
void pt_report_to_ersys(const PARSER_CONTEXT *parser, const PT_ERROR_TYPE error_type)
const char * mq_generate_name(PARSER_CONTEXT *parser, const char *root, int *version)
DB_TYPE pt_type_enum_to_db(const PT_TYPE_ENUM t)
int db_make_string(DB_VALUE *value, DB_CONST_C_CHAR str)
int db_is_superclass(MOP supermop, MOP classmop)
#define MSGCAT_SEMANTIC_UPDATE_MIX_CLASS_NON_CLASS
bool pr_is_set_type(DB_TYPE type)
#define MSGCAT_SEMANTIC_CAN_NOT_BE_VCLASS
INTL_CODESET lang_charset(void)
const char TEXT_CONSTRAINT_PREFIX[]
PT_NODE * pt_semantic_check(PARSER_CONTEXT *parser, PT_NODE *node)
DB_DEFAULT_EXPR default_expr
#define MSGCAT_SEMANTIC_INVALID_CREATE_INDEX
static PT_NODE * pt_is_parameter_node(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_MISC_TYPE derived_table_type
#define PT_NAME_DEFAULTF_ACCEPTS
#define MSGCAT_SEMANTIC_NO_PARTITION_COLUMN
DB_ATTRIBUTE * db_get_attribute(DB_OBJECT *obj, const char *name)
union pt_alter_info::@111 alter_clause
#define MSGCAT_SEMANTIC_RESOLUTION_FAILED
int pt_check_grammar_charset_collation(PARSER_CONTEXT *parser, PT_NODE *charset_node, PT_NODE *coll_node, int *charset, int *coll_id)
PT_NODE * pt_expr_to_sort_spec(PARSER_CONTEXT *parser, PT_NODE *expr)
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 MSGCAT_SEMANTIC_WANT_NO_VOBJ_IN_SETS
void pt_no_attr_and_meta_attr_updates(PARSER_CONTEXT *parser, PT_NODE *statement)
LANG_COLLATION * lang_get_collation(const int coll_id)
PT_NODE * del_search_cond
PT_NODE * cte_definition_list
PT_FUNCTION_INFO function
PT_CONNECT_BY_CHECK_CYCLES check_cycles
#define NUM_F_GENERIC_ARGS
#define MSGCAT_SEMANTIC_NONVCLASS_PARENT
#define PT_IS_VACUUM_NODE(n)
#define DB_MAX_NUMERIC_PRECISION
PT_OP_TYPE pt_op_type_from_default_expr_type(DB_DEFAULT_EXPR_TYPE expr_type)
PARSER_VARCHAR * json_schema
PT_NODE * parser_make_expression(PARSER_CONTEXT *parser, PT_OP_TYPE OP, PT_NODE *arg1, PT_NODE *arg2, PT_NODE *arg3)
#define PT_ERRORmf2(parser, node, setNo, msgNo, arg1, arg2)
static PT_NODE * pt_check_function_index_expr_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_PARTITION_RANGE_INVALID
static PT_NODE * pt_check_data_default(PARSER_CONTEXT *parser, PT_NODE *data_default_list)
PT_NODE * constraint_list
static bool pt_update_compatible_info(PARSER_CONTEXT *parser, SEMAN_COMPATIBLE_INFO *cinfo, PT_TYPE_ENUM common_type, SEMAN_COMPATIBLE_INFO *att1_info, SEMAN_COMPATIBLE_INFO *att2_info)
static void pt_check_truncate(PARSER_CONTEXT *parser, PT_NODE *node)
PT_NODE * pt_find_spec(PARSER_CONTEXT *parser, const PT_NODE *from, const PT_NODE *name)
PT_NODE * pt_check_groupbynum_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
struct pt_alter_info::@111::@113 attr_mthd
#define ER_LC_UNKNOWN_CLASSNAME
#define PT_IS_QUERY_NODE_TYPE(x)
PT_NODE * parser_walk_leaves(PARSER_CONTEXT *parser, PT_NODE *node, PT_NODE_WALK_FUNCTION pre_function, void *pre_argument, PT_NODE_WALK_FUNCTION post_function, void *post_argument)
int pt_check_order_by(PARSER_CONTEXT *parser, PT_NODE *query)
int pt_validate_query_spec(PARSER_CONTEXT *parser, PT_NODE *s, DB_OBJECT *c)
int db_make_set(DB_VALUE *value, DB_C_SET *set)
#define MSGCAT_SEMANTIC_NOT_SINGLE_VALUED
bool pt_check_cast_op(PARSER_CONTEXT *parser, PT_NODE *node)
int au_fetch_class(MOP op, SM_CLASS **class_ptr, AU_FETCHMODE fetchmode, DB_AUTH type)
static void pt_resolve_default_external(PARSER_CONTEXT *parser, PT_NODE *alter)
int sm_class_has_triggers(DB_OBJECT *classop, int *status_ptr, DB_TRIGGER_EVENT event_type)
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)
static PT_NODE * pt_find_query(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
PT_NODE * odku_assignments
static void pt_check_vacuum(PARSER_CONTEXT *parser, PT_NODE *node)
PT_NODE * pt_find_op_type_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define PT_IS_CLASSOID_NAME(x)
PT_NODE * of_sup_class_name
#define MSGCAT_SEMANTIC_METH_TARGET_NOT_OBJ
#define PT_NAME_ALLOW_REUSABLE_OID
static int db_value_list_add(DB_VALUE_PLIST **ptail, DB_VALUE *val)
const char * pt_show_type_enum(PT_TYPE_ENUM t)
#define PT_GET_COLLATION_MODIFIER(p)
PT_SET_XACTION_INFO set_xaction
#define MSGCAT_SET_PARSER_RUNTIME
PT_NODE * pt_check_orderbynum_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PARSER_CONTEXT * parent_parser
PT_INCLUDE_OID_TYPE oid_included
int db_attribute_is_primary_key(DB_ATTRIBUTE *attribute)
bool pt_eval_path_expr(PARSER_CONTEXT *parser, PT_NODE *tree, DB_VALUE *val)
DB_TYPE db_value_type(const DB_VALUE *value)
#define MSGCAT_SEMANTIC_NO_ISOLATION_LVL_MSG
#define MSGCAT_SEMANTIC_USER_DOESNT_OWN_CLS
DB_OBJECT * pt_check_user_owns_class(PARSER_CONTEXT *parser, PT_NODE *cls_ref)
PT_NODE * flat_entity_list
PT_NODE ** parser_parse_string(PARSER_CONTEXT *parser, const char *buffer)
static PT_NODE * pt_check_filter_index_expr_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_WANT_NO_INTO_CLAUSE
PT_NODE * pt_check_type_compatibility_of_values_query(PARSER_CONTEXT *parser, PT_NODE *node)
PT_MISC_TYPE all_distinct
bool pt_has_analytic(PARSER_CONTEXT *parser, PT_NODE *node)
static int pt_json_str_codeset_normalization(PARSER_CONTEXT *parser, REFPTR(char, c))
static PT_UNION_COMPATIBLE pt_union_compatible(PARSER_CONTEXT *parser, PT_NODE *item1, PT_NODE *item2, bool view_definition_context, bool *is_object_type)
#define PT_ERRORmf4(parser, node, setNo, msgNo, arg1, arg2, arg3, arg4)
#define PT_IS_PARAMETERIZED_TYPE(t)
PT_NODE * pt_semantic_quick_check_node(PARSER_CONTEXT *parser, PT_NODE **spec_p, PT_NODE **node_p)
PT_MISC_TYPE nulls_first_or_last
int intl_identifier_casecmp(const char *str1, const char *str2)
PT_NODE * pt_make_string_value(PARSER_CONTEXT *parser, const char *value_string)
PT_PARTITION_INFO partition
#define MSGCAT_SEMANTIC_MERGE_CANT_AFFECT_SOURCE_TABLE
struct json_table_column_behavior on_error
#define DB_MAX_IDENTIFIER_LENGTH
static PT_NODE * pt_replace_referenced_attributes(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
static PT_NODE * pt_check_isolation_lvl(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
static PT_NODE * pt_check_default_vclass_query_spec(PARSER_CONTEXT *parser, PT_NODE *qry, PT_NODE *attrs)
#define DB_IS_STRING(value)
bool is_constant_expression
static void pt_check_mutable_attributes(PARSER_CONTEXT *parser, DB_OBJECT *cls, PT_NODE *attr_defs)
#define PT_IS_NATIONAL_CHAR_STRING_TYPE(t)
const char * db_error_string(int level)
#define MSGCAT_SEMANTIC_NOT_SINGLE_COL
DB_OBJECT * db_domain_class(const DB_DOMAIN *domain)
PT_NODE * parser_copy_tree(PARSER_CONTEXT *parser, const PT_NODE *tree)
#define PT_IS_VALUE_QUERY(n)
PT_NODE * pt_expr_disallow_op_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_NODE * pt_semantic_type(PARSER_CONTEXT *parser, PT_NODE *tree, SEMANTIC_CHK_INFO *sc_info)
#define MSGCAT_SEMANTIC_SORT_SPEC_RANGE_ERR
#define MSGCAT_SEMANTIC_VIEW_CASCADE_CONSTRAINTS_NOT_ALLOWED
DB_ATTRIBUTE * db_attribute_next(DB_ATTRIBUTE *attribute)
PT_SHOWSTMT_INFO showstmt
const char * db_query_spec_string(DB_QUERY_SPEC *query_spec)
DB_DOMAIN * pt_data_type_to_db_domain(PARSER_CONTEXT *parser, PT_NODE *dt, const char *class_name)
DB_OBJECT * db_get_object(const DB_VALUE *value)
static void pt_check_into_clause(PARSER_CONTEXT *parser, PT_NODE *qry)
const char * pt_show_binopcode(PT_OP_TYPE n)
#define MSGCAT_SEMANTIC_HOSTVAR_NOT_ALLOWED_ON_QUERY_SPEC
PT_ISOLATION_LVL_INFO isolation_lvl
void parser_free_subtrees(PARSER_CONTEXT *parser, PT_NODE *tree)
static int pt_coerce_partition_value_with_data_type(PARSER_CONTEXT *parser, PT_NODE *value, PT_NODE *data_type)
static PT_NODE * pt_find_aggregate_function(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
DB_VALUE * db_value_copy(DB_VALUE *value)
#define MSGCAT_SEMANTIC_PARTITION_TYPE_MISMATCH
int pt_check_path_eq(PARSER_CONTEXT *parser, const PT_NODE *p, const PT_NODE *q)
TP_DOMAIN_STATUS tp_value_cast(const DB_VALUE *src, DB_VALUE *dest, const TP_DOMAIN *desired_domain, bool implicit_coercion)
#define MSGCAT_SEMANTIC_NOT_SUPERCLASS_OF
static void pt_check_xaction_list(PARSER_CONTEXT *parser, PT_NODE *node)
#define TP_DOMAIN_TYPE(dom)
#define MSGCAT_SEMANTIC_ATT_CNT_COL_CNT_NE
PT_DATA_TYPE_INFO data_type
static PT_NODE * pt_check_analytic_function(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
DB_VALUE * db_value_create(void)
#define MSGCAT_SEMANTIC_SORT_DIR_CONFLICT
static int partition_range_min_max(DB_VALUE **dest, DB_VALUE *inval, int min_max)
static PT_NODE * pt_coerce_insert_values(PARSER_CONTEXT *parser, PT_NODE *stmt)
int pt_str_compare(const char *p, const char *q, CASE_SENSITIVENESS case_flag)
static PT_NODE * pt_find_default_expression(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_INVALID_AUTO_INCREMENT_DOMAIN
PT_ATTR_DEF_INFO attr_def
#define MSGCAT_SEMANTIC_MISSING_ATTR_NAME
const char * er_msg(void)
bool pt_is_const_expr_node(PT_NODE *node)
#define MSGCAT_SEMANTIC_GT_1_ISOLATION_LVL
PT_NODE * pt_check_groupbynum_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define ER_OBJ_ATTRIBUTE_CANT_BE_NULL
PT_NODE * pt_count_input_markers(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define ER_REGU_NOT_IMPLEMENTED
PT_JSON_TABLE_NODE_INFO json_table_node_info
static void pt_check_unique_attr(PARSER_CONTEXT *parser, const char *entity_name, PT_NODE *att, PT_NODE_TYPE att_type)
PT_TABLE_OPTION_TYPE option
unsigned do_not_replace_orderby
#define MSGCAT_SEMANTIC_UNION_INCOMPATIBLE
#define MSGCAT_RUNTIME_NOT_ALLOWED_ACCESS_TO_PARTITION
char * pt_append_string(const PARSER_CONTEXT *parser, const char *old_string, const char *new_tail)
PT_CREATE_ENTITY_INFO create_entity
TP_DOMAIN * tp_domain_cache(TP_DOMAIN *transient)
#define PT_ERRORc(parser, node, msg)
#define MSGCAT_SEMANTIC_METH_MIX_CLASS_INST
PT_ZZ_ERROR_MSG_INFO error_msg
static DB_OBJECT * pt_find_class(PARSER_CONTEXT *parser, PT_NODE *p, bool for_update)
#define MSGCAT_SEMANTIC_CLASS_DOES_NOT_EXIST
struct pt_alter_info::@110 super
static PT_UNION_COMPATIBLE pt_apply_union_select_list_collation(PARSER_CONTEXT *parser, PT_NODE *query, SEMAN_COMPATIBLE_INFO *cinfo, int num_cinfo)
static PT_NODE * pt_type_cast_vclass_query_spec(PARSER_CONTEXT *parser, PT_NODE *qry, PT_NODE *attrs)
#define MSGCAT_SEMANTIC_INVALID_INTERNAL_FUNCTION
#define MSGCAT_SEMANTIC_HEIR_CANT_CHANGE_IT
DB_SET * db_set_create_basic(MOP classop, const char *name)
int db_attribute_is_auto_increment(DB_ATTRIBUTE *attribute)
static SEMAN_COMPATIBLE_INFO * pt_get_compatible_info(PARSER_CONTEXT *parser, PT_NODE *node, PT_NODE *select_list1, PT_NODE *select_list2, bool *need_cast)
#define PT_IS_COLLECTION_TYPE(t)
#define MSGCAT_SEMANTIC_WANT_NO_CONSTRAINTS
#define PT_SPEC_IS_CTE(spec_)
PT_NODE * pt_continue_walk(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
static bool pt_compare_sort_spec_expr(PARSER_CONTEXT *parser, PT_NODE *expr1, PT_NODE *expr2)
static int pt_collection_compatible(PARSER_CONTEXT *parser, const PT_NODE *col1, const PT_NODE *col2, bool view_definition_context)
#define MSGCAT_SEMANTIC_ALREADY_SUPERCLASS
int pt_find_attribute(PARSER_CONTEXT *parser, const PT_NODE *name, const PT_NODE *attributes)
struct db_value_plist * next
PT_NODE * pt_get_next_assignment(PT_ASSIGNMENTS_HELPER *ea)
static PT_NODE * pt_check_vclass_union_spec(PARSER_CONTEXT *parser, PT_NODE *qry, PT_NODE *attrds)
#define MSGCAT_SEMANTIC_ARITY_OF_VALUES_CLAUSE_MISMATCH
static PT_NODE * pt_mark_union_leaf_nodes(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
bool pt_has_aggregate(PARSER_CONTEXT *parser, PT_NODE *node)
#define PT_IS_DIFFERENCE(n)
#define MSGCAT_SEMANTIC_METH_MIX_INST_CLASS
PT_AUTO_INCREMENT_INFO auto_increment
#define MSGCAT_SEMANTIC_GT_1_ASSIGNMENT_TO
static bool pt_vclass_compatible(PARSER_CONTEXT *parser, const PT_NODE *att, const PT_NODE *qcol)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
int pr_clear_value(DB_VALUE *value)
void db_free_query_format(DB_QUERY_TYPE *q)
#define MSGCAT_SEMANTIC_INVALID_FUNCTION_INDEX
DB_TYPE pt_node_to_db_type(PT_NODE *node)
bool pt_get_collation_info(const PT_NODE *node, PT_COLL_INFER *coll_infer)
#define MSGCAT_SEMANTIC_PARTITION_DOES_NOT_EXIST
#define PT_NAME_INFO_EXTERNAL
TP_DOMAIN ** host_var_expected_domains
#define MSGCAT_SEMANTIC_ATT_CNT_VAL_CNT_NE
DB_DOMAIN * db_attribute_domain(DB_ATTRIBUTE *attribute)
#define MSGCAT_SEMANTIC_IS_NOT_A_CLASS
static PT_NODE * pt_check_constraints(PARSER_CONTEXT *parser, const PT_NODE *create)
void pt_preset_hostvar(PARSER_CONTEXT *parser, PT_NODE *hv_node)
DB_OBJECT * db_find_class_of_index(const char *const index_name, const DB_CONSTRAINT_TYPE index_type)
PT_NODE * pt_make_integer_value(PARSER_CONTEXT *parser, const int value_int)
bool is_cascade_constraints
static DB_OBJECT * pt_check_user_exists(PARSER_CONTEXT *parser, PT_NODE *cls_ref)
#define MSGCAT_SEMANTIC_NO_GROUPBY_ALLOWED
DB_METHOD * db_get_method(DB_OBJECT *obj, const char *name)
DB_DEFAULT_EXPR_TYPE on_update
PT_NODE * parser_append_node(PT_NODE *node, PT_NODE *list)
char * pt_short_print(PARSER_CONTEXT *parser, const PT_NODE *node)
#define ER_DO_INSERT_TOO_MANY
const char * generic_name
PT_NODE * parser_new_node(PARSER_CONTEXT *parser, PT_NODE_TYPE node_type)
static void error(const char *msg)
#define MSGCAT_SEMANTIC_COERCE_UNSUPPORTED
PT_NODE * pt_table_option(PARSER_CONTEXT *parser, const PT_TABLE_OPTION_TYPE option, PT_NODE *val)
#define PT_NODE_MOVE_NUMBER_OUTERLINK(t, s)
DB_DEFAULT_EXPR_TYPE on_update_default_expr
void parser_free_node(const PARSER_CONTEXT *parser, PT_NODE *node)
#define MSGCAT_SEMANTIC_INCOMP_TYPE_ON_ATTR
PT_NODE * pt_get_node_from_list(PT_NODE *list, int index)
#define DB_DEFAULT_PRECISION
void pt_no_double_insert_assignments(PARSER_CONTEXT *parser, PT_NODE *stmt)
#define PT_IS_SIMPLE_CHAR_STRING_TYPE(t)
#define TP_TYPE_HAS_COLLATION(typeid)
int pt_find_var(PT_NODE *p, PT_NODE **result)
#define MSGCAT_SEMANTIC_ALREADY_PARTITIONED_CLASS
short db_value_is_initialized
static PT_NODE * pt_path_chain(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
static int pt_number_of_attributes(PARSER_CONTEXT *parser, PT_NODE *stmt, PT_NODE **attrs)
PT_SORT_SPEC_INFO sort_spec
#define MSGCAT_SEMANTIC_NULL_NOT_ALLOWED_ON_QUERY_SPEC
static int pt_check_range_partition_strict_increasing(PARSER_CONTEXT *parser, PT_NODE *stmt, PT_NODE *part, PT_NODE *part_next, PT_NODE *column_dt)
static void pt_check_create_view(PARSER_CONTEXT *parser, PT_NODE *stmt)
int sm_partitioned_class_type(DB_OBJECT *classop, int *partition_type, char *keyattr, MOP **partitions)
const char * lang_get_codeset_name(int codeset_id)
bool pt_name_equal(PARSER_CONTEXT *parser, const PT_NODE *name1, const PT_NODE *name2)
void parser_free_tree(PARSER_CONTEXT *parser, PT_NODE *tree)
const char * default_expr_format
#define PT_NAME_INFO_GENERATED_OID
static void warning(const char *cptr, const char *msg)
#define MSGCAT_SEMANTIC_NOT_IN_SUBCLASS_LIST
DB_ATTRIBUTE * db_get_attributes_force(DB_OBJECT *obj)
static void pt_check_create_user(PARSER_CONTEXT *parser, PT_NODE *node)
int pt_attr_check_default_cs_coll(PARSER_CONTEXT *parser, PT_NODE *attr, int default_cs, int default_coll)
const char * fcode_get_lowercase_name(FUNC_TYPE ftype)
PT_COLL_COERC_LEV coerc_level
PT_NODE * pt_resolve_names(PARSER_CONTEXT *parser, PT_NODE *statement, SEMANTIC_CHK_INFO *sc_info)
#define MSGCAT_SET_PARSER_SEMANTIC
void pt_try_remove_order_by(PARSER_CONTEXT *parser, PT_NODE *query)
PT_NODE * pt_remove_from_list(PARSER_CONTEXT *parser, PT_NODE *node, PT_NODE *list)
PT_NODE * pt_set_is_view_spec(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_MEDIAN_FUNC_NOT_ALLOW_ORDER_BY
PT_NODE * pt_check_union_compatibility(PARSER_CONTEXT *parser, PT_NODE *node)
#define free_and_init(ptr)
struct pt_merge_info::@126 insert
#define PT_IS_EXPR_NODE(n)
struct db_value_plist DB_VALUE_PLIST
PT_RESOLUTION_INFO resolution
enum json_table_column_behavior_type m_behavior
char * prm_get_string_value(PARAM_ID prm_id)
bool sm_is_reuse_oid_class(MOP op)
static PT_NODE * pt_expand_isnull_preds(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
static PT_NODE * pt_gen_isnull_preds(PARSER_CONTEXT *parser, PT_NODE *pred, PT_CHAIN_INFO *chain)
DB_METHOD * db_get_class_method(DB_OBJECT *obj, const char *name)
#define MSGCAT_SEMANTIC_INVALID_AGGREGATE
#define MSGCAT_SEMANTIC_INVALID_PARTITION_INHERITED_ATTR
PT_NODE * non_recursive_part
#define MSGCAT_SEMANTIC_CLASS_EXISTS
bool pt_is_function_index_expr(PARSER_CONTEXT *parser, PT_NODE *expr, bool report_error)
#define ER_OBJ_INVALID_ARGUMENTS
void pt_register_orphan(PARSER_CONTEXT *parser, const PT_NODE *orphan)
#define MSGCAT_SEMANTIC_VCLASS_ATT_CANT_BE_AUTOINC
#define PT_IS_LTZ_TYPE(t)
static bool pt_combine_compatible_info(PARSER_CONTEXT *parser, SEMAN_COMPATIBLE_INFO *cinfo1, SEMAN_COMPATIBLE_INFO *cinfo2, PT_NODE *att1, PT_NODE *att2, int index)
#define PT_SELECT_INFO_SET_FLAG(s, f)
static void free_node(T_NODE_INFO *node)
#define MSGCAT_SEMANTIC_INDEX_ATTR_DUPLICATED
#define ER_AUTO_INCREMENT_SINGLE_COL_AMBIGUITY
#define MSGCAT_SEMANTIC_HAVE_NO_QUERY_SPEC
#define PT_IS_FUNCTION(n)
int db_string_convert_to(const DB_VALUE *src_str_dbval, DB_VALUE *dest_str_dbval, INTL_CODESET dest_codeset, int dest_col)
#define MSGCAT_SEMANTIC_GROUP_CONCAT_ORDERBY_SAME_EXPR
#define MSGCAT_SEMANTIC_SELECT_AUTH_FAILURE
void pt_resolve_object(PARSER_CONTEXT *parser, PT_NODE *node)
enum intl_codeset INTL_CODESET
void pt_init_assignments_helper(PARSER_CONTEXT *parser, PT_ASSIGNMENTS_HELPER *helper, PT_NODE *assignment)
struct pt_function_info::@122 analytic
#define MSGCAT_SEMANTIC_IS_NOT_END_OF_PARTITION
static int db_value_list_find(const DB_VALUE_PLIST *phead, const DB_VALUE *val)
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
bool prm_get_bool_value(PARAM_ID prm_id)
static PT_NODE * pt_semantic_check_local(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_CANNOT_DROP_ALL_PARTITIONS
int pt_is_attr(PT_NODE *node)
int db_get_string_size(const DB_VALUE *value)
int pt_is_single_tuple(PARSER_CONTEXT *parser, PT_NODE *select_node)
static PT_NODE * pt_check_with_clause(PARSER_CONTEXT *parser, PT_NODE *node)
PT_TYPE_ENUM pt_common_type(PT_TYPE_ENUM arg1_type, PT_TYPE_ENUM arg2_type)
DB_VALUE * db_attribute_default(DB_ATTRIBUTE *attribute)
#define MSGCAT_SEMANTIC_MERGE_DERIVED_TABLE
#define PT_IS_N_COLUMN_UPDATE_EXPR(n)
int pt_common_collation(PT_COLL_INFER *arg1_coll_infer, PT_COLL_INFER *arg2_coll_infer, PT_COLL_INFER *arg3_coll_infer, const int args_w_coll, bool op_has_3_args, int *common_coll, INTL_CODESET *common_cs)
static PT_NODE * pt_remove_unusable_sort_specs(PARSER_CONTEXT *parser, PT_NODE *list)
void pt_set_expected_domain(PT_NODE *node, TP_DOMAIN *domain)
static PT_NODE * pt_replace_names_in_update_values(PARSER_CONTEXT *parser, PT_NODE *update)
static PT_NODE * pt_assignment_compatible(PARSER_CONTEXT *parser, PT_NODE *lhs, PT_NODE *rhs)
#define MSGCAT_SEMANTIC_INVALID_FILTER_INDEX
DB_TYPE db_attribute_type(DB_ATTRIBUTE *attribute)
static PT_NODE * pt_check_sub_insert(PARSER_CONTEXT *parser, PT_NODE *node, void *void_arg, int *continue_walk)
#define MSGCAT_SEMANTIC_UNIMPLEMENTED_CONSTRAINT
char * parser_print_tree(PARSER_CONTEXT *parser, const PT_NODE *node)
#define DB_VALUE_TYPE(value)
#define MSGCAT_SEMANTIC_ARITY_MISMATCH
bool pt_check_compatible_node_for_orderby(PARSER_CONTEXT *parser, PT_NODE *order, PT_NODE *column)
int pt_length_of_select_list(PT_NODE *list, int hidden_col)
int db_make_null(DB_VALUE *value)
PT_NODE * pt_fold_union(PARSER_CONTEXT *parser, PT_NODE *union_node, STATEMENT_SET_FOLD fold_as)
int sm_get_class_collation(MOP classop, int *collation_id)
#define DB_IS_NULL(value)
DB_QUERY_SPEC * db_get_query_specs(DB_OBJECT *obj)
static int pt_find_partition_column_count(PT_NODE *expr, PT_NODE **name_node)
int do_is_partitioned_subclass(int *is_partitioned, const char *classname, char *keyattr)
struct pt_alter_info::@111::@114 ch_attr_def
char * au_get_user_name(MOP obj)
#define pt_is_set_type(n)
TP_DOMAIN * tp_domain_resolve(DB_TYPE domain_type, DB_OBJECT *class_obj, int precision, int scale, TP_DOMAIN *setdomain, int collation)
bool has_keys_in_expression
#define MSGCAT_SEMANTIC_INVALID_PREFIX_LENGTH
PT_NODE * parser_reinit_node(PT_NODE *node)
PT_TRUNCATE_INFO truncate
const char * lang_charset_introducer(const INTL_CODESET codeset)
#define MSGCAT_SEMANTIC_ALTER_VIEW_IN_HIERARCHY
#define PT_INTERNAL_ERROR(parser, what)
#define PT_IS_NUMERIC_TYPE(t)
static int pt_associate_label_with_value(const char *label, DB_VALUE *val)
void pt_to_pos_descr(PARSER_CONTEXT *parser, QFILE_TUPLE_VALUE_POSITION *pos_p, PT_NODE *node, PT_NODE *root, PT_NODE **referred_node)
int pt_coerce_value(PARSER_CONTEXT *parser, PT_NODE *src, PT_NODE *dest, PT_TYPE_ENUM desired_type, PT_NODE *elem_type_list)
#define pt_has_error(parser)
PT_SAVEPOINT_INFO savepoint
#define MSGCAT_SEMANTIC_GEN_FUNC_TOO_MANY_ARGS
enum pt_node_type PT_NODE_TYPE
static void pt_check_create_index(PARSER_CONTEXT *parser, PT_NODE *node)
#define MSGCAT_SEMANTIC_ALTER_CHANGE_ONLY_TABLE
PT_NODE * pt_domain_to_data_type(PARSER_CONTEXT *parser, DB_DOMAIN *domain)
#define MSGCAT_SEMANTIC_UPDATE_NO_AGGREGATE
SORT_NULLS pt_to_null_ordering(PT_NODE *sort_spec)
#define MSGCAT_SEMANTIC_CLASS_NO_QUERY_SPEC
#define MSGCAT_SEMANTIC_METH_DOESNT_EXIST
#define PT_HAS_COLLATION(t)
PT_CONSTRAINT_INFO constraint
static void pt_check_attribute_domain(PARSER_CONTEXT *parser, PT_NODE *attr_defs, PT_MISC_TYPE class_type, const char *self, const bool reuse_oid, PT_NODE *stmt)
static PT_NODE * pt_resolve_sort_spec_expr(PARSER_CONTEXT *parser, PT_NODE *sort_spec, PT_NODE *select_list)
struct PT_VALUE_LINKS PT_VALUE_LINKS
int pt_check_class_eq(PARSER_CONTEXT *parser, PT_NODE *p, PT_NODE *q)
#define INTL_CAN_COERCE_CS(cs_from, cs_to)
static PT_NODE * pt_get_attributes(PARSER_CONTEXT *parser, const DB_OBJECT *c)
static int is_shared_attribute(PARSER_CONTEXT *parser, PT_NODE *att)
PT_NODE * pt_check_union_type_compatibility_of_values_query(PARSER_CONTEXT *parser, PT_NODE *node)
PT_NODE * pt_dbval_to_value(PARSER_CONTEXT *parser, const DB_VALUE *val)
#define MSGCAT_SEMANTIC_SUPERCLASS_CYCLE
PT_SET_SESSION_VARIABLE_INFO set_variables
int pt_is_method_call(PT_NODE *node)
PT_NODE * pt_invert(PARSER_CONTEXT *parser, PT_NODE *name_expr, PT_NODE *result)
int pt_length_of_list(const PT_NODE *list)
struct parser_node::@132 flag
#define MSGCAT_SEMANTIC_UPDATE_SUBVCLASS_NOT_ALLOWED
#define PT_IS_INTERSECTION(n)
PT_NODE * object_parameter
static PT_NODE * pt_check_single_valued_node_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
static PT_UNION_COMPATIBLE pt_check_vclass_attr_qspec_compatible(PARSER_CONTEXT *parser, PT_NODE *attr, PT_NODE *col)
static PT_NODE * pt_append_statements_on_add_attribute(PARSER_CONTEXT *parser, PT_NODE *statement_list, PT_NODE *stmt_node, const char *class_name, const char *attr_name, PT_NODE *attr)
DB_VALUE * pt_value_to_db(PARSER_CONTEXT *parser, PT_NODE *value)
#define DB_MAX_USER_LENGTH
#define MSGCAT_SEMANTIC_COL_CNT_NE_INTO_CNT
PT_DATA_DEFAULT_INFO data_default
struct pt_alter_info::@111::@116 partition
int pt_class_assignable(PARSER_CONTEXT *parser, const PT_NODE *d_class_dt, const PT_NODE *s_class)
#define MSGCAT_SEMANTIC_CANT_PARTITION_MNG_TRIGGERS
PT_NODE * pt_count_output_markers(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_HOST_VAR_INFO host_var
#define MSGCAT_SEMANTIC_NONCLASS_PARENT
#define MSGCAT_SEMANTIC_INVALID_FUNCTION_ORDERBY
int db_json_convert_to_utf8(DB_VALUE *dbval)
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)
TP_DOMAIN_COLL_ACTION collation_flag
#define PT_EXPR_INFO_IS_FLAGED(e, f)
#define MSGCAT_SEMANTIC_METH_ARG_NE_DEFINED
static PT_NODE * pt_find_aggregate_analytic_post(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
#define PT_IS_NAME_NODE(n)
#define ER_OBJ_INVALID_METHOD
PT_NODE * pt_type_cast_vclass_query_spec_column(PARSER_CONTEXT *parser, PT_NODE *attr, PT_NODE *col)
#define MSGCAT_SEMANTIC_ILLEGAL_LHS
#define MSGCAT_SEMANTIC_FUNCTION_NO_ARGS
#define MSGCAT_SEMANTIC_ATT_CNT_NE_COL_CNT
#define MSGCAT_SEMANTIC_DEFAULT_EXPR_NOT_ALLOWED
PT_NODE * parser_copy_tree_list(PARSER_CONTEXT *parser, PT_NODE *tree)
static void pt_check_create_entity(PARSER_CONTEXT *parser, PT_NODE *node)
#define MSGCAT_SEMANTIC_DELETE_DERIVED_TABLE
static int pt_type_assignable(PARSER_CONTEXT *parser, const PT_NODE *d_type, const PT_NODE *s_type)
static bool pt_attr_refers_to_self(PARSER_CONTEXT *parser, PT_NODE *attr, const char *self)
DB_CONST_C_CHAR db_get_string(const DB_VALUE *value)
#define PT_ERRORmf(parser, node, setNo, msgNo, arg1)
unsigned is_hidden_column
static void pt_check_filter_index_expr(PARSER_CONTEXT *parser, PT_NODE *atts, PT_NODE *node, MOP db_obj)
static int pt_collection_assignable(PARSER_CONTEXT *parser, const PT_NODE *d_col, const PT_NODE *s_col)
static PT_NODE * pt_check_constraint(PARSER_CONTEXT *parser, const PT_NODE *create, const PT_NODE *constraint)
PT_CREATE_USER_INFO create_user
#define MSGCAT_SEMANTIC_CLASS_ATTR_DUPLICATED
DB_DOMAIN * db_domain_set(const DB_DOMAIN *domain)
static int pt_check_defaultf(PARSER_CONTEXT *parser, PT_NODE *node)
const char * rel_major_release_string(void)
DB_OBJECT * db_find_class_with_purpose(const char *name, bool for_update)
#define PT_EXPR_INFO_CAST_COLL_MODIFIER
#define MSGCAT_SEMANTIC_METH_NO_TARGET
#define MSGCAT_SEMANTIC_NOT_ATTRIBUTE_OF
#define MSGCAT_SEMANTIC_UNMACHTED_ARG_ORDER
static void pt_check_partitions(PARSER_CONTEXT *parser, PT_NODE *stmt, MOP dbobj)
static int pt_find_partition_column_count_func(PT_NODE *func, PT_NODE **name_node)
char * pt_short_print_l(PARSER_CONTEXT *parser, const PT_NODE *node)
static int pt_check_group_concat_order_by(PARSER_CONTEXT *parser, PT_NODE *func)
DB_QUERY_SPEC * db_query_spec_next(DB_QUERY_SPEC *query_spec)
DB_OBJLIST * db_get_subclasses(DB_OBJECT *obj)
#define MSGCAT_SEMANTIC_INVALID_PARTITION_SIZE
#define MSGCAT_SEMANTIC_NO_INDEX_ON_VCLASS