28 #include <unordered_map> 62 #define PT_NAMES_HASH_SIZE 50 135 const char *json_table_alias);
161 bool discard_no_match);
170 short *scope_location);
263 short *level_p =
NULL;
271 level_p = (
short *) spec->
etc;
276 if (level_p ==
NULL || *level_p > 0)
322 short *level_p =
NULL;
329 level_p = (
short *) spec->
etc;
579 const char *name =
NULL;
626 reserved_name = in_node;
648 return reserved_name;
680 short scope_location;
681 bool error_saved =
false;
705 for (scope = scopes; scope !=
NULL; scope = scope->
next)
748 while (level > 0 && scope)
907 if (cte->info.cte.as_attr_list ==
NULL)
927 for (; col !=
NULL && attr !=
NULL; col = col->next, attr = attr->next)
937 col->data_type =
NULL;
969 bool save_donot_fold;
971 spec = scopes->
specs;
1025 prev_spec->
next = spec;
1029 scopes->
specs = spec;
1032 spec = prev_spec->
next;
1076 short *location = (
short *) arg;
1165 for (temp = assignments; temp && error ==
NO_ERROR; temp = temp->
next)
1203 int is_function = 0;
1257 memset (&(node->
info), 0, sizeof (node->
info));
1314 PT_INTERNAL_ERROR (parser,
"Hint argument should be the name of a" "valid index");
1326 if (key_domain ==
NULL)
1535 for (crt_list = values_list; crt_list !=
NULL; crt_list = crt_list->
next)
1555 for (crt_attr = attrs_list; crt_attr !=
NULL; crt_attr = crt_attr->
next)
1559 if (crt_value ==
NULL)
1561 if (crt_value_list !=
NULL)
1565 PT_ERROR (parser, node,
"allocation error");
1575 if (crt_value_list !=
NULL)
1579 PT_ERROR (parser, node,
"allocation error");
1585 if (crt_value_list ==
NULL)
1587 crt_value_list = crt_value;
1600 crt_attr = crt_attr->
next, crt_value = crt_value->
next)
1617 if (crt_arg ==
NULL)
1619 PT_ERROR (parser, node,
"allocation error");
1647 bool do_resolve =
true;
1653 short i, k, lhs_location, rhs_location, level;
1655 void *save_etc =
NULL;
1659 if (!node || !parser)
1685 bind_arg->
scopes = &scopestack;
1814 while (attr && do_resolve)
1838 if (do_resolve ==
true)
1861 range_var = spec->info.spec.range_var;
1862 if (
pt_str_compare (attr->info.name.original, range_var->info.name.original,
1887 for (as_attr = spec->info.spec.as_attr_list; as_attr; as_attr = as_attr->next)
1889 as_attr->info.name.resolved = range_var->info.name.original;
1896 if (prev_attr ==
NULL)
1915 next_attr = attr->next;
1921 for (prev_attr = resolved_attrs; prev_attr->
next != attr; prev_attr = prev_attr->
next)
1994 PT_ERROR (parser, node,
"can not specify '(+)' with ANSI join syntax");
2004 PT_ERROR (parser, node,
"Oracle outer join conversion not supported");
2019 for (k = 1; k <= 2; k++)
2083 i++, spec = spec->
next)
2119 while (lhs_spec ==
NULL && i > 0);
2131 if (rhs->node_type ==
PT_DOT_)
2145 if (spec->info.spec.id == rhs->info.name.spec_id)
2160 i++, spec = spec->
next)
2196 while (rhs_spec ==
NULL && i > 0);
2203 if (lhs_spec && rhs_spec && lhs_spec->info.spec.id != rhs_spec->info.spec.id)
2206 if (lhs_location < rhs_location)
2228 spec = (lhs_location < rhs_location) ? rhs_spec : lhs_spec;
2245 PT_NODE *tmp, *p_end, *s_end, *start, *end, *s_start;
2251 for (tmp = p_end; tmp->
next != spec; tmp = tmp->
next)
2264 for (tmp = p_end; tmp->
next != spec; tmp = tmp->
next)
2271 for (tmp = spec; tmp->
next; tmp = tmp->
next)
2283 for (tmp = p_spec->
next; tmp != spec; tmp = tmp->
next)
2301 for (tmp = start; tmp->
next != end; tmp = tmp->
next)
2321 while (s_start ==
NULL);
2323 for (tmp = spec; tmp->
next; tmp = tmp->
next)
2344 PT_ERROR (parser, node,
"a class may be outer joined to" " at most one other class");
2355 || spec->info.spec.join_type ==
PT_JOIN_RIGHT_OUTER) && spec->info.spec.join_type != join_type)
2358 PT_ERROR (parser, node,
"two classes cannot be " "outer-joined to each other");
2363 spec->info.spec.join_type = join_type;
2404 if (spec->info.spec.on_cond)
2410 PT_ERROR (parser, node,
"a class may be outer joined to " "at most one other class");
2419 if (save->next == spec)
2423 PT_ERROR (parser, node,
"a class may be outer joined to " "at most one other class");
2448 if (spec->info.spec.join_type ==
PT_JOIN_NONE && spec->info.spec.on_cond)
2454 spec->info.spec.on_cond =
NULL;
2472 int arg1_corr, arg2_corr, corr;
2475 int index_of_order_by_link = -1;
2478 bind_arg->
scopes = &scopestack;
2487 index_of_order_by_link = 0;
2517 index_of_order_by_link++;
2519 while (order_by_link->next)
2521 order_by_link = order_by_link->
next;
2522 index_of_order_by_link++;
2546 if (arg2_corr < corr)
2568 if (index_of_order_by_link >= 0)
2603 bind_arg->
scopes = &scopestack;
2636 bind_arg->
scopes = &scopestack;
2659 bind_arg->
scopes = &scopestack;
2747 attr->info.name.original,
2804 bind_arg->
scopes = &scopestack;
2850 bind_arg->
scopes = &scopestack;
3036 int is_spec_attr = 0;
3044 if (top_node !=
NULL 3136 bind_arg->
scopes = &scopestack;
3268 const char *lang_str;
3270 bool has_user_format;
3305 PT_NODE *default_op_value_node;
3318 arg1 = default_op_value_node;
3383 const char *lang_str;
3385 bool has_user_format;
3443 PT_NODE *default_op_value_node;
3456 arg1 = default_op_value_node;
3506 cname = cname->
next;
3575 const char *resolved_name;
3590 if (resolved_name && range_var)
3657 if (!p || !q || !parser)
3845 const char *p_name =
NULL;
3867 const char *q_name =
NULL;
3960 if (flat_list ==
NULL)
4052 result->info.data_type.entity = entity;
4083 s->info.data_type.entity =
NULL;
4084 result_last_node->next = s;
4085 result_last_node = s;
4089 result = result_last_node = s;
4095 result_last_node =
NULL;
4104 s->info.name.spec_id = (UINTPTR) result;
4241 if (non_recursive_cte)
4286 bool class_atts_only;
4296 if (class_atts_only)
4324 if (class_atts_only)
4353 if (class_atts_only)
4401 const char *json_table_alias)
4408 if (attribs ==
NULL)
4415 std::unordered_map<size_t, PT_NODE *> sorted_attrs;
4418 for (
PT_NODE * attr = attribs; attr; attr = attr->
next)
4420 size_t index = attr->info.name.json_table_column_index;
4421 assert (strcmp (json_table_alias, attr->info.name.resolved) == 0);
4424 copy_node =
pt_name (parser, attr->info.name.original);
4427 if (attr->data_type !=
NULL)
4431 sorted_attrs[
index] = copy_node;
4434 size_t columns_nr = sorted_attrs.size ();
4436 for (
unsigned int i = 0;
i < columns_nr - 1;
i++)
4438 if (sorted_attrs[
i] ==
NULL)
4443 sorted_attrs[
i]->next = sorted_attrs[
i + 1];
4445 sorted_attrs[columns_nr - 1]->next =
NULL;
4447 return sorted_attrs[0];
4590 int col_name,
PT_NODE ** p_entity)
4635 corr_name =
pt_name (parser,
"");
4676 *p_entity = exposed_spec;
4748 PT_NODE ** p_entity,
int col_name)
4750 PT_NODE *exposed_spec, *spec, *savespec, *arg1, *arg2, *arg1_name;
4751 PT_NODE *unique_entity, *path_correlation;
4769 return reserved_name;
4826 for (savespec =
NULL, spec = scope; spec; spec = spec->
next)
4853 *p_entity = savespec;
4880 PT_NODE *class_spec, *node, *entity, *found =
NULL;
4902 class_spec->
info.
spec.
id = (UINTPTR) class_spec;
4926 *p_entity = class_spec;
5067 else if (temp->
next)
5188 root_spec = root_spec->
next;
5251 exposed_spec =
NULL;
5266 else if (temp->
next)
5299 unique_entity =
pt_insert_entity (parser, in_node, *p_entity, exposed_spec);
5300 *p_entity = unique_entity;
5356 #if defined (ENABLE_UNUSED_FUNCTION) 5357 PT_NODE *dot, *domain, *unique_entity;
5371 entity = ((*p_entity) ? (*p_entity)->info.spec.entity_name :
NULL);
5375 #if defined (ENABLE_UNUSED_FUNCTION) 5377 if (attr_obj && sm_has_text_domain (attr_obj, 0))
5404 *p_entity = unique_entity;
5461 for (specs = scope; specs; specs = specs->
next)
5509 for (spec = (
PT_NODE *) scope; spec; spec = spec->
next)
5543 for (spec = scope; spec; spec = spec->
next)
5623 if (additions ==
NULL)
5632 additions = additions->
next;
5669 if (deletions ==
NULL)
5713 const char *classname;
5716 bool ismymht =
false;
5735 if (classname ==
NULL)
5744 if (names_mht ==
NULL || !
mht_get (names_mht, classname))
5746 result =
pt_name (parser, classname);
5774 mht_put (names_mht, classname, (
void *)
true);
5788 if (names_mht ==
NULL && dbl)
5791 if (names_mht !=
NULL)
5795 mht_put (names_mht, classname, (
void *)
true);
5823 if (!partition_skip)
5844 if (ismymht && names_mht)
5882 PT_NODE *temp, *temp1, *temp2, *name;
5884 const char *class_name =
NULL;
5925 if (classop !=
NULL)
5985 result =
pt_name (parser, class_name);
6046 temp2 = temp2->
next;
6145 const char *unique_exposed_name;
6162 if (unique_exposed_name ==
NULL)
6168 r->info.name.original = unique_exposed_name;
6255 for (i = start; i <= end; i++)
6259 if (new_name ==
NULL)
6285 return reserved_names;
6305 PT_NODE *flat, *spec_att, *class_att, *attr_name, *range, *result =
NULL;
6336 for (flat = flat_list; flat; flat = flat->
next)
6341 spec_att = ((flat == flat_list) ? class_att :
pt_common_attribute (parser, spec_att, class_att));
6350 attr_name = spec_att;
6369 #if defined (ENABLE_UNUSED_FUNCTION) 6370 if (att && sm_has_text_domain (att, 0))
6376 if (!dot_arg1 || !dot_arg2)
6396 attr_name->
next = save_next;
6401 attr_name = attr_name->
next;
6408 while (attr_name->
next)
6410 attr_name = attr_name->
next;
6412 attr_name->
next = spec_att;
6452 int is_values, is_vclass = 0;
6497 if (db_attributes ==
NULL)
6507 const char *name = db_attr->header.name;
6509 if (db_attr->default_value.default_expr.default_expr_type ==
DB_DEFAULT_NONE 6510 &&
DB_IS_NULL (&db_attr->default_value.value))
6515 for (attr = attr_list; attr; attr = attr->
next)
6528 PT_ERROR (parser, statement,
"allocation error");
6532 if (attr->info.name.original ==
NULL)
6550 PT_ERROR (parser, statement,
"allocation error");
6585 if (!rest_attrs || !rest_values)
6594 for (crt_node = value_clauses; crt_node; crt_node = crt_node->
next)
6599 if (!new_rest_values)
6645 PT_NODE *arg, *spec, *range, *prev, *tmp;
6658 for (spec = spec_list; spec; spec = spec->
next)
6679 if (discard_no_match)
6769 if (hint & PT_HINT_Y)
6799 if (*index_ss ==
NULL)
6814 if (*index_ls ==
NULL)
6839 if (*ordered !=
NULL)
6843 if (*use_nl !=
NULL)
6847 if (*use_idx !=
NULL)
6851 if (index_ss !=
NULL && *index_ss !=
NULL)
6855 if (index_ls !=
NULL && *index_ls !=
NULL)
6859 if (*use_merge !=
NULL)
6903 PT_NODE *spec, *range, *entity;
6930 for (spec = from; spec; spec = spec->
next)
6994 for (spec = from; spec; spec = spec->
next)
7007 if (classop ==
NULL)
7114 snprintf (name_buf, 32,
"__t%u", i);
7147 if (node_p ==
NULL || spec_p ==
NULL)
7172 scopestack.
specs = spec;
7176 bind_arg.
scopes = &scopestack;
7203 const char *lhs_name;
7204 const char *rhs_name;
7208 lhs_name = lhs->
name;
7209 rhs_name = rhs->
name;
7211 if (lhs_name ==
NULL || rhs_name ==
NULL)
7236 while (attr_cur !=
NULL)
7238 attr_cur_next = attr_cur->
next;
7240 attr_cur = attr_cur_next;
7258 for (pt_cur = subquery_attrs_list; pt_cur !=
NULL; pt_cur = pt_cur->
next)
7273 if (attr_cur ==
NULL)
7304 if (attr_head ==
NULL)
7306 attr_head = attr_cur;
7307 attr_tail = attr_cur;
7311 attr_tail->
next = attr_cur;
7312 attr_tail = attr_cur;
7316 *attrs_p = attr_head;
7342 if (attr_cur ==
NULL)
7352 if (attr_head ==
NULL)
7354 attr_head = attr_cur;
7355 attr_tail = attr_cur;
7359 attr_tail->
next = attr_cur;
7360 attr_tail = attr_cur;
7364 *attrs_p = attr_head;
7392 natural_join_attrs =
NULL;
7404 if (db_attrs ==
NULL)
7432 subquery_attrs_list =
NULL;
7440 if (subquery_attrs_list ==
NULL)
7457 return natural_join_attrs;
7597 for (lhs_attrs_cur = lhs_attrs; lhs_attrs_cur !=
NULL; lhs_attrs_cur = lhs_attrs_cur->
next)
7599 for (rhs_attrs_cur = rhs_attrs; rhs_attrs_cur; rhs_attrs_cur = rhs_attrs_cur->
next)
7608 if (join_cond_arg1 ==
NULL)
7611 goto exit_on_create_node_error;
7616 if (join_cond_arg2 ==
NULL)
7619 goto exit_on_create_node_error;
7624 if (join_cond_expr ==
NULL)
7627 goto exit_on_create_node_error;
7635 if (on_cond_tail ==
NULL)
7637 on_cond_tail = join_cond_expr;
7642 if (on_cond_new ==
NULL)
7645 goto exit_on_create_node_error;
7648 on_cond_tail = on_cond_new;
7655 if (lhs_attrs !=
NULL)
7660 if (rhs_attrs !=
NULL)
7667 exit_on_create_node_error:
7668 if (lhs_attrs !=
NULL)
7673 if (rhs_attrs !=
NULL)
7702 join_rhs = node->
next;
7845 for (col = select_list; col !=
NULL; col = col->
next)
7851 if ((*node_p) !=
NULL)
7853 (*node_p)->next =
NULL;
7938 switch ((*node_p)->node_type)
7979 while (pt_cur !=
NULL)
7982 pt_cur = pt_cur->
next;
7987 while (pt_cur !=
NULL)
7990 pt_cur = pt_cur->
next;
7997 while (pt_cur !=
NULL)
8000 pt_cur = pt_cur->
next;
8105 for (; node !=
NULL; node = node->
next)
8158 for (cte = cte_defs; cte !=
NULL; cte = cte->
next)
8213 node->
etc = malloc (
sizeof (
char));
8214 *((
char *) node->
etc) = 1;
8229 int *cnt = (
int *) arg;
8258 PT_NODE *curr_cte, *previous_cte;
8260 int nested_with_count = 0;
8294 if (cte_list ==
NULL)
8301 for (previous_cte = cte_list; previous_cte !=
NULL; previous_cte = previous_cte->
next)
8303 for (curr_cte = previous_cte->
next; curr_cte !=
NULL; curr_cte = curr_cte->
next)
8317 if (nested_with_count > 0)
8324 for (curr_cte = cte_list; curr_cte !=
NULL; curr_cte = curr_cte->
next)
8332 int curr_cte_count = 0;
8341 saved_curr_cte_next = curr_cte->
next;
8372 if (curr_cte_count > 0)
8375 PT_NODE *tmp = non_recursive_part;
8376 non_recursive_part = recursive_part;
8377 recursive_part = tmp;
8381 if (curr_cte_count > 0)
8398 if (curr_cte ==
NULL)
8403 if (curr_cte_count > 0)
8411 curr_cte->
next = saved_curr_cte_next;
8423 for (previous_cte = cte_list, curr_cte = previous_cte->
next; curr_cte !=
NULL;
8424 previous_cte = previous_cte->
next, curr_cte = curr_cte->
next)
8430 saved_curr_cte_next = curr_cte->
next;
8435 if (curr_cte ==
NULL)
8442 previous_cte->
next = curr_cte;
8445 curr_cte->
next = saved_curr_cte_next;
8449 saved_with = *with_p;
8452 *with_p = saved_with;
8531 if (correlation_entity)
8573 for (node = res; node; node = node->
next)
8582 for (node = res1; node; node = node->
next)
8600 const char *root =
"";
8721 const char *name =
NULL, *cname;
8723 for (entity = path_entities; (entity !=
NULL && !found);)
8754 entity = entity->
next;
8814 if (class_op ==
NULL)
8865 const char *method_name;
8952 if (new_node ==
NULL)
9080 for (scope = scopes; scope !=
NULL; scope = scope->
next)
9112 for (spec = scopes->
specs; spec; spec = spec->
next)
9130 *scope_location = location;
9160 for (node = res_list; node; node = node->
next)
9167 for (node = flat_list; node !=
NULL; node = node->
next)
9233 char *serial_name, *t;
9234 DB_OBJECT *serial_class_mop, *serial_mop;
9243 t = strchr (serial_name,
'.');
9244 serial_name = (t !=
NULL) ? (t + 1) : serial_name;
9248 if (serial_mop ==
NULL)
9286 for (scope = bind_arg->
scopes; scope; scope = scope->
next)
9289 for (spec = scope->
specs; spec; spec = spec->
next)
9297 if (*is_spec_attr == 1)
9326 char *expr_str =
NULL;
9335 for (scope = bind_arg->
scopes; scope; scope = scope->
next)
9338 for (spec = scope->
specs; spec; spec = spec->
next)
9361 while (constraints !=
NULL)
9365 if (expr_str ==
NULL)
9376 constraints = constraints->
next;
9399 PT_NODE *temp_node, *node_list, *save_next, *prev_node =
NULL;
9406 bind_arg->
scopes = scopestack;
9420 for (temp_node = node_list, is_first_node =
true; temp_node !=
NULL;
9421 temp_node = temp_node->
next, is_first_node =
false)
9426 bind_arg->
scopes = scopestack;
9432 save_next = temp_node->
next;
9435 temp_node->
next = save_next;
9443 prev_node->
next = temp_node;
9446 prev_node = temp_node;
9456 bind_arg->
scopes = scopestack;
9472 bind_arg->
scopes = scopestack;
9499 bind_arg->
scopes = scopestack;
9533 bind_arg->
scopes = scopestack;
9563 const char *partition_suffix =
NULL;
9564 const char *partition_name =
NULL;
9568 const char *root_name =
NULL;
9581 if (partition_name ==
NULL)
9587 partition_node->info.name.original = partition_name;
9600 if (root_op ==
NULL)
9607 if (partition_op ==
NULL)
9652 if (entity_name !=
NULL)
9743 curr_cte->
next = save_next_cte;
9766 bool save_donot_fold;
9770 if (non_recursive_cte ==
NULL)
9789 if (non_recursive_cte ==
NULL)
9810 if (recursive_cte !=
NULL)
9813 if (recursive_cte ==
NULL)
9823 save_next_cte_def = cte_def->
next;
9832 cte_def->
next = save_next_cte_def;
9889 switch (derived_table_type)
9907 if (as_attr_list ==
NULL)
9925 for (att = select_list, i = 0; att; att = att->
next, i++)
9978 return as_attr_list;
9995 PT_NODE *elt_type, *select_list;
9998 switch (derived_table_type)
10028 for (p = elt_type->
next; p; p = p->
next)
10089 if (col_cnt != attr_cnt)
10099 for (col = as_attr_list, att = select_list; col && att; col = col->
next, att = att->
next)
10102 if (att->data_type)
10138 int *cnt = (
int *) arg;
DB_OBJECT * db_find_class(const char *name)
#define MSGCAT_SEMANTIC_USING_INDEX_ERR_1
#define PT_NAME_INFO_SET_FLAG(e, f)
int pt_check_unique_names(PARSER_CONTEXT *parser, const PT_NODE *p)
PT_NODE * pt_name(PARSER_CONTEXT *parser_ptr, const char *name)
PT_NODE * pt_resolve_using_index(PARSER_CONTEXT *parser, PT_NODE *index, PT_NODE *from)
DB_OBJECT * pt_resolve_serial(PARSER_CONTEXT *parser, PT_NODE *serial_name_node)
#define MSGCAT_SEMANTIC_IS_NOT_DEFINED
static PT_NODE * pt_json_table_gather_attribs(PARSER_CONTEXT *parser, PT_NODE *json_table_node, void *args, int *continue_walk)
static void pt_resolve_group_having_alias_pt_expr(PARSER_CONTEXT *parser, PT_NODE *node, PT_NODE *select_list)
PT_NODE * pt_insert_entity(PARSER_CONTEXT *parser, PT_NODE *path, PT_NODE *prev_entity, PT_NODE *correlation_entity)
#define DB_GET_ENUM_ELEM_STRING(elem)
int pt_quick_resolve_names(PARSER_CONTEXT *parser, PT_NODE **spec_p, PT_NODE **node_p, SEMANTIC_CHK_INFO *sc_info)
PT_METHOD_CALL_INFO method_call
#define PT_SELECT_INFO_IS_FLAGED(s, f)
#define MSGCAT_SEMANTIC_NO_DERIVED_COL_NAM
static const char * pt_get_unique_exposed_name(PARSER_CONTEXT *parser, PT_NODE *first_spec)
#define MSGCAT_SEMANTIC_NO_ATTRIBUTES_IN_CLS
#define PT_IS_CHAR_STRING_TYPE(t)
#define PT_ERRORm(parser, node, setNo, msgNo)
#define MSGCAT_SEMANTIC_INCONSISTENT_PATH
const char * db_get_class_name(DB_OBJECT *class_)
int pt_resolve_default_value(PARSER_CONTEXT *parser, PT_NODE *name)
unsigned int mht_4strhash(const void *key, const unsigned int ht_size)
int db_domain_scale(const DB_DOMAIN *domain)
enum au_fetchmode AU_FETCHMODE
static int pt_must_have_exposed_name(PARSER_CONTEXT *parser, PT_NODE *p)
PT_NODE * pt_expression_0(PARSER_CONTEXT *parser_ptr, PT_OP_TYPE op)
DB_ATTRIBUTE * db_get_attributes(DB_OBJECT *obj)
#define MSGCAT_SEMANTIC_MUST_BE_SET_MSET_SEQ
int pt_instnum_compatibility(PT_NODE *expr)
static PT_NODE * pt_resolve_group_having_alias(PARSER_CONTEXT *parser, PT_NODE *node, void *chk_parent, int *continue_walk)
PT_MISC_TYPE call_or_expr
static void pt_bind_type_of_host_var(PARSER_CONTEXT *parser, PT_NODE *hv)
DB_OBJECT * pt_find_users_class(PARSER_CONTEXT *parser, PT_NODE *name)
PT_JSON_TABLE_COLUMN_INFO json_table_column_info
size_t json_table_column_index
DB_ATTRIBUTE * db_get_class_attribute(DB_OBJECT *obj, const char *name)
#define MSGCAT_SEMANTIC_DUPLICATE_CLASS_OR_ALIAS
static int pt_function_name_is_spec_attr(PARSER_CONTEXT *parser, PT_NODE *name, PT_BIND_NAMES_ARG *bind_arg, int *is_spec_attr)
int db_domain_precision(const DB_DOMAIN *domain)
DB_DOMAIN * pt_type_enum_to_db_domain(const PT_TYPE_ENUM t)
static bool is_pt_name_in_group_having(PT_NODE *node)
#define PT_ERROR(parser, node, msg)
#define PT_NODE_INIT_OUTERLINK(n)
static PT_NODE * pt_name_list_diff(PARSER_CONTEXT *parser, PT_NODE *list, PT_NODE *deletions)
int db_is_vclass(DB_OBJECT *op)
PT_NODE * Oracle_outerjoin_spec
static void pt_resolve_natural_join_internal(PARSER_CONTEXT *parser, PT_NODE *join_lhs, PT_NODE *join_rhs)
static PT_NODE * pt_bind_reserved_name(PARSER_CONTEXT *parser, PT_NODE *in_node, PT_NODE *spec)
#define PT_NAME_INFO_FILL_DEFAULT
PT_RESERVED_NAME pt_Reserved_name_table[]
static int generate_natural_join_attrs_from_db_attrs(DB_ATTRIBUTE *db_attrs, NATURAL_JOIN_ATTR_INFO **attrs_p)
#define MSGCAT_SEMANTIC_OUT_OF_MEMORY
#define PT_EXPR_INFO_SET_FLAG(e, f)
static PT_NODE * pt_common_attribute(PARSER_CONTEXT *parser, PT_NODE *p, PT_NODE *q)
#define MSGCAT_SEMANTIC_PREFIX_IN_FUNC_INDX_NOT_ALLOWED
unsigned short correlation_level
static int generate_natural_join_attrs_from_subquery(PT_NODE *subquery_attrs_list, NATURAL_JOIN_ATTR_INFO **attrs_p)
#define DB_GET_ENUMERATION(v)
PT_NODE * pt_get_select_list(PARSER_CONTEXT *parser, PT_NODE *query)
PT_EXTRA_SPECS_FRAME * spec_frames
static PT_NODE * pt_resolve_natural_join(PARSER_CONTEXT *parser, PT_NODE *node, void *chk_parent, int *continue_walk)
SM_ATTRIBUTE * attributes
const void * mht_put(MHT_TABLE *ht, const void *key, void *data)
enum pt_type_enum PT_TYPE_ENUM
static PT_NODE * pt_get_attr_list_of_derived_table(PARSER_CONTEXT *parser, PT_MISC_TYPE derived_table_type, PT_NODE *derived_table, PT_NODE *derived_name)
DB_DOMAIN * db_domain_next(const DB_DOMAIN *domain)
#define PT_IS_SPEC_FLAG_SET(spec_, flags_)
static int pt_find_name_in_spec(PARSER_CONTEXT *parser, PT_NODE *spec, PT_NODE *name)
static PT_NODE * pt_resolve_correlation(PARSER_CONTEXT *parser, PT_NODE *in_node, PT_NODE *scope, PT_NODE *exposed_spec, int col_name, PT_NODE **p_entity)
static void pt_bind_spec_attrs(PARSER_CONTEXT *parser, PT_NODE *spec)
DB_ATTRIBUTE * db_get_attribute_force(DB_OBJECT *obj, const char *name)
int db_domain_collation_id(const DB_DOMAIN *domain)
PT_TYPE_ENUM pt_db_to_type_enum(const DB_TYPE t)
DB_VALUE * pt_host_var_db_value(PARSER_CONTEXT *parser, PT_NODE *hv)
SM_DEFAULT_VALUE default_value
PT_NODE * pt_bind_type_from_dbval(PARSER_CONTEXT *parser, PT_NODE *node, DB_VALUE *val)
PT_NODE * path_correlation
PARSER_VARCHAR * pt_append_bytes(const PARSER_CONTEXT *parser, PARSER_VARCHAR *old_string, const char *new_tail, const int new_tail_length)
#define MSGCAT_SEMANTIC_SPEC_EXCLUDES_ALL
unsigned int custom_print
#define PT_SHOULD_BIND_RESERVED_NAME(spec_)
struct sm_component * next
union pt_query_info::@124 q
#define MSGCAT_SEMANTIC_INVALID_PARTITION_REQUEST
static PT_NODE * pt_resolve_spec_to_cte(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
static int pt_find_class_attribute(PARSER_CONTEXT *parser, PT_NODE *cls, PT_NODE *attr)
struct pt_merge_info::@125 update
SM_FUNCTION_INFO * func_index_info
#define PT_IS_DOT_NODE(n)
unsigned int custom_print
PT_NODE * pt_bind_values_to_hostvars(PARSER_CONTEXT *parser, PT_NODE *node)
#define PT_IS_NULL_NODE(e)
#define MSGCAT_SEMANTIC_CLASS_DOES_NOT_HAVE
PT_NODE * pt_flat_spec_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
struct sm_class_constraint * next
PT_NODE * pt_append_query_select_list(PARSER_CONTEXT *parser, PT_NODE *query, PT_NODE *attrs)
#define PT_NAME_INFO_IS_FLAGED(e, f)
PT_NODE_LIST_INFO node_list
NATURAL_JOIN_ATTR_INFO * next
static PT_NODE * pt_bind_parameter(PARSER_CONTEXT *parser, PT_NODE *parameter)
#define MSGCAT_SEMANTIC_ARG_IS_NOT_AN_OBJECT
static PT_NODE * pt_copy_data_type_entity(PARSER_CONTEXT *parser, PT_NODE *data_type)
static PT_NODE * pt_resolve_spec_to_cte_and_count(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
static PT_NODE * pt_count_ctes_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
void pt_set_fill_default_in_path_expression(PT_NODE *node)
static PT_NODE * pt_mark_location(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
static PT_NODE * pt_bind_parameter_path(PARSER_CONTEXT *parser, PT_NODE *path)
#define MSGCAT_SEMANTIC_AMBIGUOUS_REF_TO
PT_WITH_CLAUSE_INFO with_clause
const char * db_attribute_name(DB_ATTRIBUTE *attribute)
#define MSGCAT_SEMANTIC_CYCLIC_SELECTOR
int db_attribute_is_shared(DB_ATTRIBUTE *attribute)
PT_NODE * pt_eval_value_path(PARSER_CONTEXT *parser, PT_NODE *path)
DB_ATTRIBUTE * db_get_attribute_by_name(const char *class_name, const char *attribute_name)
size_t json_table_column_count
static PT_NODE * pt_get_all_showstmt_attributes_and_types(PARSER_CONTEXT *parser, PT_NODE *derived_table)
SM_CLASS_CONSTRAINT * sm_class_constraints(MOP classop)
static void fill_in_insert_default_function_arguments(PARSER_CONTEXT *parser, PT_NODE *const node)
#define PT_NODE_COPY_NUMBER_OUTERLINK(t, s)
PT_JSON_TABLE_INFO json_table_info
#define REINTERPRET_CAST(dest_type, expr)
#define MSGCAT_SEMANTIC_AMBIGUOUS_EXPOSED_NM
#define MSGCAT_SEMANTIC_GT_1_DERIVED_COL_NAM
int jsp_is_exist_stored_procedure(const char *name)
int Oracle_outerjoin_attr_num
DB_DEFAULT_EXPR_TYPE default_expr_type
static int pt_spec_in_domain(PT_NODE *cls, PT_NODE *lst)
static PT_NODE * pt_make_flat_list_from_data_types(PARSER_CONTEXT *parser, PT_NODE *res_list, PT_NODE *entity)
const char * mq_generate_name(PARSER_CONTEXT *parser, const char *root, int *version)
PT_NODE * pt_resolve_star(PARSER_CONTEXT *parser, PT_NODE *from, PT_NODE *attr)
PT_NODE * mq_regenerate_if_ambiguous(PARSER_CONTEXT *parser, PT_NODE *spec, PT_NODE *statement, PT_NODE *from)
#define PT_ERRORmf3(parser, node, setNo, msgNo, arg1, arg2, arg3)
#define MSGCAT_SEMANTIC_EXCEPTSPEC_NOT_HEIR
void mht_destroy(MHT_TABLE *ht)
static void free_natural_join_attrs(NATURAL_JOIN_ATTR_INFO *attrs)
PT_MISC_TYPE class_or_inst
static PT_NODE * pt_resolve_vclass_args(PARSER_CONTEXT *parser, PT_NODE *statement)
DB_DEFAULT_EXPR default_expr
char * parser_print_function_index_expr(PARSER_CONTEXT *parser, const PT_NODE *expr)
static PT_NODE * pt_is_correlation_name(PARSER_CONTEXT *parser, PT_NODE *scope, PT_NODE *nam)
#define MSGCAT_SEMANTIC_OUTERJOIN_PATH_EXPR
static PT_NODE * pt_mark_group_having_pt_name(PARSER_CONTEXT *parser, PT_NODE *node, void *chk_parent, int *continue_walk)
void * pt_node_etc(const PT_NODE *col)
#define PT_NAME_DEFAULTF_ACCEPTS
PT_MISC_TYPE derived_table_type
DB_ATTRIBUTE * db_get_attribute(DB_OBJECT *obj, const char *name)
static int pt_resolve_hint_args(PARSER_CONTEXT *parser, PT_NODE **arg_list, PT_NODE *spec_list, bool discard_no_match)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
static PT_NODE * pt_make_subclass_list(PARSER_CONTEXT *parser, DB_OBJECT *db, int line_num, int col_num, UINTPTR id, PT_MISC_TYPE meta_class, MHT_TABLE *names_mht)
static void pt_bind_scope(PARSER_CONTEXT *parser, PT_BIND_NAMES_ARG *bind_arg)
#define PT_EXPR_INFO_RIGHT_OUTER
PT_NODE * cte_definition_list
PT_FUNCTION_INFO function
#define MSGCAT_SEMANTIC_IS_NOT_OBJECT_TYPE
#define ER_QPROC_SERIAL_NOT_FOUND
static PT_NODE * pt_count_with_clauses(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define NULL_DEFAULT_EXPRESSION_OPERATOR
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 void pt_resolve_group_having_alias_pt_name(PARSER_CONTEXT *parser, PT_NODE **node_p, PT_NODE *select_list)
int Oracle_outerjoin_subq_num
PT_NODE * pt_find_spec(PARSER_CONTEXT *parser, const PT_NODE *from, const PT_NODE *name)
#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)
#define PT_SPEC_IS_ENTITY(spec_)
int au_fetch_class(MOP op, SM_CLASS **class_ptr, AU_FETCHMODE fetchmode, DB_AUTH type)
PT_TYPE_ENUM virt_type_enum
static int pt_find_attr_in_class_list(PARSER_CONTEXT *parser, PT_NODE *flat, PT_NODE *attr)
PT_NODE * odku_assignments
#define MSGCAT_SEMANTIC_INCORRECT_UNION_IN_CTE
#define PT_NAME_ALLOW_REUSABLE_OID
const char * pt_show_type_enum(PT_TYPE_ENUM t)
#define ER_OUT_OF_VIRTUAL_MEMORY
static PT_NODE * pt_resolve_partition_spec(PARSER_CONTEXT *parser, PT_NODE *partition_spec, PT_NODE *spec_parent, bool fo_update)
bool pt_eval_path_expr(PARSER_CONTEXT *parser, PT_NODE *tree, DB_VALUE *val)
const char * db_json_get_schema_raw_from_validator(JSON_VALIDATOR *val)
static void pt_get_attr_data_type(PARSER_CONTEXT *parser, DB_ATTRIBUTE *att, PT_NODE *attr)
DB_DOMAIN * db_method_arg_domain(DB_METHOD *method, int arg)
PT_NODE * flat_entity_list
PT_MISC_TYPE all_distinct
int intl_identifier_cmp(const char *str1, const char *str2)
static FUNC_TYPE pt_find_function_type(const char *name)
static void pt_set_attr_list_types(PARSER_CONTEXT *parser, PT_NODE *as_attr_list, PT_MISC_TYPE derived_table_type, PT_NODE *derived_table, PT_NODE *parent_spec)
int intl_identifier_casecmp(const char *str1, const char *str2)
#define PT_NAME_INFO_STAR
PT_NODE * pt_make_string_value(PARSER_CONTEXT *parser, const char *value_string)
#define PT_NAME_INFO_DOT_STAR
#define DOM_GET_ENUM_ELEM(dom, idx)
int pt_name_occurs_in_from_list(PARSER_CONTEXT *parser, const char *name, PT_NODE *from_list)
#define TP_DOMAIN_COLLATION(dom)
#define PT_GET_RESERVED_NAME_FIRST_AND_LAST(type, first, last)
static PT_NODE * pt_set_reserved_name_key_type(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
const char * db_error_string(int level)
DB_OBJECT * db_domain_class(const DB_DOMAIN *domain)
PT_NODE * parser_copy_tree(PARSER_CONTEXT *parser, const PT_NODE *tree)
#define DOM_GET_ENUM_ELEMS_COUNT(dom)
PT_NODE * pt_semantic_type(PARSER_CONTEXT *parser, PT_NODE *tree, SEMANTIC_CHK_INFO *sc_info)
static PT_NODE * pt_object_to_data_type(PARSER_CONTEXT *parser, PT_NODE *class_list)
PT_NODE * pt_sm_attribute_default_value_to_node(PARSER_CONTEXT *parser, const SM_ATTRIBUTE *sm_attr)
DB_ATTRIBUTE * db_attribute_next(DB_ATTRIBUTE *attribute)
PT_SHOWSTMT_INFO showstmt
DB_OBJECT * db_get_object(const DB_VALUE *value)
#define PT_SELECT_INFO_COLS_SCHEMA
#define PT_IS_SPEC_REAL_TABLE(spec_)
#define TP_DOMAIN_TYPE(dom)
static PT_NODE * pt_expand_external_path(PARSER_CONTEXT *parser, PT_NODE *in_node, PT_NODE **p_entity)
PT_DATA_TYPE_INFO data_type
void * mht_get(MHT_TABLE *ht, const void *key)
int pt_str_compare(const char *p, const char *q, CASE_SENSITIVENESS case_flag)
PT_NODE * pt_find_entity(PARSER_CONTEXT *parser, const PT_NODE *scope, UINTPTR id)
static NATURAL_JOIN_ATTR_INFO * get_natural_join_attrs_from_pt_spec(PARSER_CONTEXT *parser, PT_NODE *node)
SEMANTIC_CHK_INFO * sc_info
int db_domain_codeset(const DB_DOMAIN *domain)
static PT_NODE * pt_find_outer_entity_in_scopes(PARSER_CONTEXT *parser, SCOPES *scopes, UINTPTR spec_id, short *scope_location)
#define MSGCAT_SEMANTIC_NESTED_WITH
static int pt_check_unique_exposed(PARSER_CONTEXT *parser, const PT_NODE *p)
const char * er_msg(void)
#define DB_IS_DATETIME_DEFAULT_EXPR(v)
DB_OBJECT * db_get_class(MOP obj)
static PT_NODE * pt_create_pt_name(PARSER_CONTEXT *parser, PT_NODE *spec, NATURAL_JOIN_ATTR_INFO *attr)
#define PT_NAMES_HASH_SIZE
#define MSGCAT_SEMANTIC_UNDEFINED_ARGUMENT
#define PT_SPEC_IS_DERIVED(spec_)
char * pt_append_string(const PARSER_CONTEXT *parser, const char *old_string, const char *new_tail)
TP_DOMAIN * tp_domain_cache(TP_DOMAIN *transient)
PARSER_VARCHAR * pt_print_bytes(PARSER_CONTEXT *parser, const PT_NODE *node)
#define PT_ERRORc(parser, node, msg)
static PT_NODE * pt_check_Oracle_outerjoin(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
static PT_NODE * pt_insert_conjunct(PARSER_CONTEXT *parser, PT_NODE *path_dot, PT_NODE *prev_entity)
#define MSGCAT_SEMANTIC_CLASS_DOES_NOT_EXIST
#define MSGCAT_SEMANTIC_SELECTOR_TO_NON_CLS
#define MSGCAT_SEMANTIC_INVALID_INTERNAL_FUNCTION
#define MSGCAT_SEMANTIC_WANT_NO_DERIVED_COLS
MHT_TABLE * mht_create(const char *name, int est_size, unsigned int(*hash_func)(const void *key, unsigned int ht_size), int(*cmp_func)(const void *key1, const void *key2))
static PT_NODE * pt_get_all_json_table_attributes_and_types(PARSER_CONTEXT *parser, PT_NODE *json_table_node, const char *json_table_alias)
void pt_null_etc(PT_NODE *node)
#define MSGCAT_SEMANTIC_WANT_NO_REF_TO_DRVTB
#define PT_SPEC_IS_CTE(spec_)
PT_NODE * pt_continue_walk(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
int pt_check_same_datatype(const PARSER_CONTEXT *parser, const PT_NODE *p, const PT_NODE *q)
int db_is_system_class(MOP op)
static PT_NODE * pt_bind_cte_self_references_types(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
static PT_NODE * pt_make_flat_name_list(PARSER_CONTEXT *parser, PT_NODE *spec, PT_NODE *spec_parent, bool for_update)
static void pt_mark_function_index_expression(PARSER_CONTEXT *parser, PT_NODE *expr, PT_BIND_NAMES_ARG *bind_arg)
int btree_get_index_key_type(BTID btid, TP_DOMAIN **key_type_p)
int pr_clear_value(DB_VALUE *value)
#define MSGCAT_CATALOG_CUBRID
#define MSGCAT_SEMANTIC_PARTITION_DOES_NOT_EXIST
#define PT_NAME_INFO_EXTERNAL
PT_NODE * pt_add_class_to_entity_list(PARSER_CONTEXT *parser, DB_OBJECT *class_, PT_NODE *entity, const PT_NODE *parent, UINTPTR id, PT_MISC_TYPE meta_class)
DB_DOMAIN * db_attribute_domain(DB_ATTRIBUTE *attribute)
#define MSGCAT_SEMANTIC_OUTERJOIN_SCOPE
DB_VALUE * pt_find_value_of_label(const char *label)
int pt_resolved(const PT_NODE *expr)
DB_METHOD * db_get_method(DB_OBJECT *obj, const char *name)
PT_NODE * parser_append_node(PT_NODE *node, PT_NODE *list)
char * pt_short_print(PARSER_CONTEXT *parser, const PT_NODE *node)
TP_DOMAIN_COLL_ACTION collation_flag
const char * generic_name
PT_NODE * parser_new_node(PARSER_CONTEXT *parser, PT_NODE_TYPE node_type)
static void error(const char *msg)
static PT_NODE * pt_find_path_entity(PARSER_CONTEXT *parser, PT_NODE *scope, PT_NODE *match)
#define PT_NODE_MOVE_NUMBER_OUTERLINK(t, s)
static PT_NODE * pt_bind_name_to_spec(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_CTE_NAME_AMBIGUITY
void parser_free_node(const PARSER_CONTEXT *parser, PT_NODE *node)
static const char * CPTR_PT_NAME_IN_GROUP_HAVING
#define MSGCAT_SEMANTIC_CLASSES_HAVE_NO_ATTR
SM_CLASS_CONSTRAINT * classobj_find_class_index(SM_CLASS *class_, const char *name)
int locator_does_exist_object(MOP mop, DB_FETCH_MODE purpose)
PT_SORT_SPEC_INFO sort_spec
bool pt_name_equal(PARSER_CONTEXT *parser, const PT_NODE *name1, const PT_NODE *name2)
const char * pt_partition_name(PARSER_CONTEXT *parser, const char *class_name, const char *partition)
void parser_free_tree(PARSER_CONTEXT *parser, PT_NODE *tree)
const char * default_expr_format
static PT_NODE * pt_get_all_attributes_and_types(PARSER_CONTEXT *parser, PT_NODE *cls, PT_NODE *from)
#define PT_NAME_INFO_GENERATED_OID
#define ER_AU_SELECT_FAILURE
DB_ATTRIBUTE * db_get_attributes_force(DB_OBJECT *obj)
static int pt_resolve_hint(PARSER_CONTEXT *parser, PT_NODE *node)
PT_NODE * pt_resolve_names(PARSER_CONTEXT *parser, PT_NODE *statement, SEMANTIC_CHK_INFO *sc_info)
PT_NODE * pt_resolve_cte_specs(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SET_PARSER_SEMANTIC
PT_NODE * pt_set_is_view_spec(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_UNKNOWN_FUNCTION
static PT_NODE * pt_find_entity_in_scopes(PARSER_CONTEXT *parser, SCOPES *scopes, UINTPTR spec_id)
#define PT_SELECT_INFO_ANSI_JOIN
static PT_NODE * pt_make_method_call(PARSER_CONTEXT *parser, PT_NODE *node, PT_BIND_NAMES_ARG *bind_arg)
static PT_NODE * pt_bind_value_to_hostvar_local(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_SELECTOR_DEFINE_SELF
#define DB_SET_ENUM_ELEM_CODESET(elem, cs)
static PT_NODE * pt_unwhacked_spec(PARSER_CONTEXT *parser, PT_NODE *scope, PT_NODE *spec)
struct pt_merge_info::@126 insert
int Oracle_outerjoin_path_num
char * prm_get_string_value(PARAM_ID prm_id)
void pt_no_double_insert_assignments(PARSER_CONTEXT *parser, PT_NODE *stmt)
static void pt_bind_names_in_with_clause(PARSER_CONTEXT *parser, PT_NODE *node, PT_BIND_NAMES_ARG *bind_arg)
DB_METHOD * db_get_class_method(DB_OBJECT *obj, const char *name)
PT_NODE * pt_point(PARSER_CONTEXT *parser, const PT_NODE *in_tree)
PT_NODE * non_recursive_part
static PT_NODE * pt_mark_pt_name(PARSER_CONTEXT *parser, PT_NODE *node, void *chk_parent, int *continue_walk)
#define PT_SELECT_INFO_ORACLE_OUTER
#define MSGCAT_SEMANTIC_WANT_SINGLE_TABLE_IN
static void pt_bind_names_in_cte(PARSER_CONTEXT *parser, PT_NODE *node, PT_BIND_NAMES_ARG *bind_arg)
static void pt_bind_names_merge_insert(PARSER_CONTEXT *parser, PT_NODE *node, PT_BIND_NAMES_ARG *bind_arg, SCOPES *scopestack, PT_EXTRA_SPECS_FRAME *specs_frame)
#define PT_SELECT_FULL_INFO_COLS_SCHEMA
void pt_resolve_object(PARSER_CONTEXT *parser, PT_NODE *node)
#define PT_NAME_FOR_UPDATE
int lang_set_flag_from_lang(const char *lang_str, bool has_user_format, bool has_user_lang, int *flag)
bool prm_get_bool_value(PARAM_ID prm_id)
int jsp_get_return_type(const char *name)
JSON_VALIDATOR * json_validator
int intl_mbs_casecmp(const char *mbs1, const char *mbs2)
int pt_is_attr(PT_NODE *node)
PT_RESERVED_NAME_ID reserved_id
#define MSGCAT_SEMANTIC_ATT_CNT_NE_DERIVED_C
#define PT_EXPR_INFO_FUNCTION_INDEX
#define PT_IS_N_COLUMN_UPDATE_EXPR(n)
static PT_NODE * pt_create_pt_expr_and_node(PARSER_CONTEXT *parser, PT_NODE *arg1, PT_NODE *arg2)
static PT_NODE * pt_is_on_list(PARSER_CONTEXT *parser, const PT_NODE *p, const PT_NODE *list)
static PT_NODE * pt_lookup_entity(PARSER_CONTEXT *parser, PT_NODE *path_entities, PT_NODE *expr)
#define MSGCAT_SEMANTIC_USING_INDEX_ERR_2
DB_TYPE db_attribute_type(DB_ATTRIBUTE *attribute)
#define MSGCAT_SEMANTIC_SELECTOR_UNRESOLVED
#define MSGCAT_SEMANTIC_OUTERJOIN_JOIN_COND_SUBQ
#define PT_CHECK_RESERVED_NAME_BIND(spec_, reserved_id)
#define DB_VALUE_TYPE(value)
DB_ATTRIBUTE * db_get_class_attributes(DB_OBJECT *obj)
int pt_length_of_select_list(PT_NODE *list, int hidden_col)
int db_make_null(DB_VALUE *value)
char * msgcat_message(int cat_id, int set_id, int msg_id)
static PT_NODE * pt_create_pt_expr_equal_node(PARSER_CONTEXT *parser, PT_NODE *arg1, PT_NODE *arg2)
static PT_NODE * pt_bind_names(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define DB_IS_NULL(value)
#define MSGCAT_SEMANTIC_USING_INDEX_ERR_3
unsigned short correlation_level
#define pt_is_set_type(n)
static WHEN_DESC on_error
#define PT_SPEC_SPECIAL_INDEX_SCAN(spec_)
#define MSGCAT_SEMANTIC_SELECTOR_REDEFINED
TP_DOMAIN * tp_domain_resolve(DB_TYPE domain_type, DB_OBJECT *class_obj, int precision, int scale, TP_DOMAIN *setdomain, int collation)
PT_NODE * parser_reinit_node(PT_NODE *node)
SM_INDEX_STATUS index_status
#define PT_EXPR_INFO_LEFT_OUTER
#define MSGCAT_SEMANTIC_DOM_OBJ_HASNO_ATT_X
#define PT_INTERNAL_ERROR(parser, what)
#define MSGCAT_SEMANTIC_PATH_CORR_OUTSIDE
PT_NODE * pt_cnf(PARSER_CONTEXT *parser, PT_NODE *node)
#define ER_AU_AUTHORIZATION_FAILURE
#define pt_has_error(parser)
MOP sm_find_class(const char *name)
PT_NODE * pt_domain_to_data_type(PARSER_CONTEXT *parser, DB_DOMAIN *domain)
static bool pt_resolve_method_type(PARSER_CONTEXT *parser, PT_NODE *node)
#define MSGCAT_SEMANTIC_GT_1_SET_ELEM_TYPE
#define PT_SELECT_INFO_FOR_UPDATE
static PT_NODE * pt_undef_names_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_METH_DOESNT_EXIST
#define TP_DOMAIN_CODESET(dom)
static PT_NODE * pt_get_resolution(PARSER_CONTEXT *parser, PT_BIND_NAMES_ARG *bind_arg, PT_NODE *scope, PT_NODE *in_node, PT_NODE **p_entity, int col_name)
int pt_type_generic_func(PARSER_CONTEXT *parser, PT_NODE *node)
PT_NODE * pt_bind_param_node(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
static PT_NODE * pt_undef_names_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
static void pt_resolve_group_having_alias_internal(PARSER_CONTEXT *parser, PT_NODE **node_p, PT_NODE *select_list)
static PT_NODE * pt_clear_Oracle_outerjoin_spec_id(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_NODE * pt_dbval_to_value(PARSER_CONTEXT *parser, const DB_VALUE *val)
#define DB_GET_ENUM_ELEM_CODESET(elem)
static void pt_bind_names_merge_update(PARSER_CONTEXT *parser, PT_NODE *node, PT_BIND_NAMES_ARG *bind_arg, SCOPES *scopestack, PT_EXTRA_SPECS_FRAME *specs_frame)
#define MSGCAT_SEMANTIC_SELECTOR_NOT_SUBCLASS
int pt_length_of_list(const PT_NODE *list)
struct parser_node::@132 flag
static bool natural_join_equal_attr(NATURAL_JOIN_ATTR_INFO *lhs, NATURAL_JOIN_ATTR_INFO *rhs)
#define MSGCAT_SEMANTIC_METH_NOT_TYPED
PT_NODE * object_parameter
MOP do_get_serial_obj_id(DB_IDENTIFIER *serial_obj_id, DB_OBJECT *serial_class_mop, const char *serial_name)
DB_VALUE * pt_value_to_db(PARSER_CONTEXT *parser, PT_NODE *value)
int mht_compare_strings_are_equal(const void *key1, const void *key2)
#define PT_SPEC_GET_RESERVED_NAME_TYPE(spec_)
PT_HOST_VAR_INFO host_var
#define PT_NAME_INFO_DOT_NAME
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 PT_ERRORf(parser, node, msg, arg1)
#define PT_IS_NAME_NODE(n)
#define ER_OBJ_INVALID_METHOD
static void pt_resolve_group_having_alias_pt_sort_spec(PARSER_CONTEXT *parser, PT_NODE *node, PT_NODE *select_list)
PT_NODE * parser_copy_tree_list(PARSER_CONTEXT *parser, PT_NODE *tree)
int au_fetch_class_force(MOP op, SM_CLASS **class_, AU_FETCHMODE fetchmode)
static PT_NODE * pt_resolve_star_reserved_names(PARSER_CONTEXT *parser, PT_NODE *from)
cubxasl::json_table::column json_table_column
#define PT_ERRORmf(parser, node, setNo, msgNo, arg1)
DB_DOMAIN * db_domain_set(const DB_DOMAIN *domain)
static PT_NODE * pt_name_list_union(PARSER_CONTEXT *parser, PT_NODE *list, PT_NODE *additions)
DB_OBJECT * db_find_class_with_purpose(const char *name, bool for_update)
#define MSGCAT_SEMANTIC_NOT_ATTRIBUTE_OF
static PT_NODE * pt_bind_names_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_INCORRECT_RECURSIVE_CTE
static PT_NODE * pt_bind_name_or_path_in_scope(PARSER_CONTEXT *parser, PT_BIND_NAMES_ARG *bind_arg, PT_NODE *in_node)
char * pt_short_print_l(PARSER_CONTEXT *parser, const PT_NODE *node)
#define MSGCAT_SEMANTIC_CLASS_HAS_NO_ATTR
DB_OBJLIST * db_get_subclasses(DB_OBJECT *obj)