64 #if defined (SUPPRESS_STRLEN_WARNING) 65 #define strlen(s1) ((int) strlen(s1)) 68 #define DEFAULT_VAR "." 78 #define COMPATIBLE_WITH_INSTNUM(node) \ 79 (pt_is_expr_node (node) && PT_EXPR_INFO_IS_FLAGED (node, PT_EXPR_INFO_INSTNUM_C)) 81 #define NOT_COMPATIBLE_WITH_INSTNUM(node) \ 82 (pt_is_dot_node (node) || pt_is_attr (node) || pt_is_correlated_subquery (node) \ 83 || (pt_is_expr_node (node) && PT_EXPR_INFO_IS_FLAGED (node, PT_EXPR_INFO_INSTNUM_NC))) 85 #define COMPATIBLE_WITH_GROUPBYNUM(node) \ 86 ((pt_is_function (node) && node->info.function.function_type == PT_GROUPBY_NUM) \ 87 || (pt_is_expr_node (node) && PT_EXPR_INFO_IS_FLAGED (node, PT_EXPR_INFO_GROUPBYNUM_C))) 89 #define NOT_COMPATIBLE_WITH_GROUPBYNUM(node) \ 90 (pt_is_dot_node (node) || pt_is_attr (node) || pt_is_query (node) \ 91 || (pt_is_expr_node (node) && PT_EXPR_INFO_IS_FLAGED (node, PT_EXPR_INFO_GROUPBYNUM_NC))) 96 #define DB_ENUM_ELEMENTS_MAX_AGG_SIZE (DB_PAGESIZE / 2) 122 const char *col_alias);
124 const char *col_alias);
126 const int int_value);
128 const char *str_value);
130 const char *rhs_identifier);
134 const char *string2,
const char *alias);
137 const char *select_alias);
160 int arg_info_count,
PT_NODE * args);
162 int arg_info_count,
PT_NODE * args);
163 #define NULL_ATTRID -1 200 if (value_string ==
NULL)
249 int arg1_corr = 0, arg2_corr = 0, corr;
274 if (arg2_corr && arg2_corr < corr)
469 if (insert_val !=
NULL)
526 if (!name1 || !name2)
683 || function_type ==
F_ELT 802 bool max_level_has_gby =
false;
833 while (select_stack !=
NULL)
851 select_stack = select_stack->next;
858 if (!max_level_has_gby)
882 PT_NODE *stack_top = select_stack;
892 stack_top = stack_top->
next;
907 if (select_stack ==
NULL)
912 else if (select_stack->
next ==
NULL)
954 if (select_stack ==
NULL)
958 else if (select_stack->
next ==
NULL)
1037 stack_top = stack_top->
next;
1063 bool *has_analytic = (
bool *) arg;
1088 bool *has_analytic = (
bool *) arg;
1092 *has_analytic =
true;
1124 int *mark = (
int *) arg;
1156 bool *has_inst_orderby_num = (
bool *) arg;
1158 if (*has_inst_orderby_num)
1181 bool *has_inst_orderby_num = (
bool *) arg;
1185 *has_inst_orderby_num =
true;
1188 if (*has_inst_orderby_num)
1319 int *found = (
int *) arg;
1560 bool *inst_num = (
bool *) arg;
1605 bool *grby_num = (
bool *) arg;
1650 bool *ordby_num = (
bool *) arg;
1695 bool *has_subquery = (
bool *) arg;
1701 *has_subquery =
true;
1727 int *op_list = (
int *) arg;
1742 for (i = 1; i <= op_list[0]; i++)
1798 *has_greater = has_lesser_1;
1799 *has_lesser = has_greater_1;
1806 *has_greater = has_greater_1 && has_greater_2;
1807 *has_lesser = has_lesser_1 && has_lesser_2;
1814 *has_greater = has_greater_1 || has_greater_2;
1815 *has_lesser = has_lesser_1 || has_lesser_2;
1825 if ((lhs_level && rhs_level) || (!lhs_level && !rhs_level))
1833 *has_greater =
true;
1839 *has_greater =
true;
1854 *has_greater =
true;
1866 *has_greater =
true;
1875 #if defined (ENABLE_UNUSED_FUNCTION) 1882 pt_arg1_part (
const PT_NODE * node)
1898 pt_arg2_part (
const PT_NODE * node)
1914 pt_select_list_part (
const PT_NODE * node)
1941 #if defined (ENABLE_UNUSED_FUNCTION) 1948 pt_where_part (
const PT_NODE * node)
1977 pt_order_by_part (
const PT_NODE * node)
1993 pt_group_by_part (
const PT_NODE * node)
2009 pt_having_part (
const PT_NODE * node)
2128 #if defined (ENABLE_UNUSED_FUNCTION) 2135 pt_operator_part (
const PT_NODE * node)
2183 #if defined (ENABLE_UNUSED_FUNCTION) 2190 pt_class_names_part (
const PT_NODE * node)
2214 pt_assignments_part (
const PT_NODE * node)
2288 return ptr_subquery;
2307 #if defined (ENABLE_UNUSED_FUNCTION) 2314 pt_qualifier_part (
const PT_NODE * node)
2330 pt_object_part (
const PT_NODE * node)
2436 bool *already_found_filtering = (
bool *) arg;
2438 if (*already_found_filtering)
2451 *already_found_filtering =
true;
2472 bool result =
false;
2475 or_next_save = expression->
or_next;
2480 expression->
or_next = or_next_save;
2494 PT_NODE *current_conj, *current_pred;
2497 for (current_conj = predicates; current_conj !=
NULL; current_conj = next_conj)
2499 bool has_filter_pred =
false;
2506 next_conj = current_conj->
next;
2509 for (current_pred = current_conj; current_pred !=
NULL; current_pred = current_pred->
or_next)
2518 has_filter_pred =
true;
2523 if (has_filter_pred)
2549 #if defined (ENABLE_UNUSED_FUNCTION) 2557 pt_set_node_etc (
PT_NODE * node,
const void *etc)
2561 node->
etc = (
void *) etc;
2651 #if defined (ENABLE_UNUSED_FUNCTION) 2662 bool updatable = (statement !=
NULL);
2664 while (updatable && statement)
2704 statement = statement->
next;
2735 PT_NODE *from_spec, *from_name;
2757 char *result =
NULL;
2760 if (from_name !=
NULL)
2787 char *result =
NULL;
2854 save_next = node->
next;
2858 node->
next = save_next;
2895 save_next = node->
next;
2899 node->
next = save_next;
2920 bool has_analytic =
false;
2921 bool has_analytic_arg1 =
false;
2922 bool has_analytic_arg2 =
false;
2934 has_analytic =
true;
2952 if (has_analytic_arg1 || has_analytic_arg2)
2954 has_analytic =
true;
2964 return has_analytic;
2977 bool has_inst_orderby_num =
false;
2982 return has_inst_orderby_num;
2996 PT_NODE *temp, *tail, *new_node;
3002 if (new_node ==
NULL)
3008 new_node->
next = list;
3023 if (new_node ==
NULL)
3029 tail->
next = new_node;
3030 new_node->
next = temp;
3283 #if defined (ENABLE_UNUSED_FUNCTION) 3341 if (!msg || (l =
strlen (msg)) <= 0)
3343 return (
char *)
"NULL message string";
3368 const char *from_name =
NULL, *result;
3372 static char tblname[256], *name;
3373 static size_t namelen = 256;
3383 if (from_name ==
NULL)
3390 newlen =
strlen (from_name) + 1;
3391 if (newlen + 1 > namelen)
3394 if (name != tblname)
3398 name = (
char *) malloc (newlen);
3405 strcpy (name, from_name);
3504 if (new_list ==
NULL)
3509 for (s1 = cur_list, s2 = new_list; s1 && s2; s1 = s1->
next, s2 = s2->
next)
3512 p2 = &(s2->info.sort_spec.pos_descr);
3538 return (s2 ==
NULL) ?
true :
false;
3686 #if defined (ENABLE_UNUSED_FUNCTION) 3696 regu_set_error_with_one_args (
int err_type,
const char *infor)
3726 PT_NODE *lhs, *sum, *part1, *part2, *node;
3736 lhs = sum = part1 = part2 = node =
NULL;
3738 if (is_gby_num ==
true)
3923 if (host_var ==
NULL)
3963 int count_to_realloc = 0;
3971 if (host_var ==
NULL)
3988 count_to_realloc = (count_to_realloc / 2) * 4;
3989 if (count_to_realloc == 0)
3991 count_to_realloc = 1;
3994 if (larger_host_variables ==
NULL)
4001 larger_host_variables =
NULL;
4021 if (host_var !=
NULL)
4139 if (name_arg_node ==
NULL)
4152 if (func_node ==
NULL)
4156 name_arg_node =
NULL;
4180 if (func_node !=
NULL)
4185 if (name_arg_node !=
NULL)
4188 name_arg_node =
NULL;
4190 if (name_node !=
NULL)
4217 int fixed_precision = 0;
4231 if (fixed_precision == 0)
4233 fixed_precision = 1;
4246 if (fixed_precision == 0)
4248 fixed_precision = 1;
4257 if (fixed_precision == 0)
4259 fixed_precision = 1;
4294 if (fixed_precision != 0)
4327 if (temp_copy ==
NULL)
4377 *query_columns = qtype;
4390 if (temp_copy !=
NULL)
4425 for (arg = arg_list; arg !=
NULL; arg = arg->
next)
4427 if (len >= array_size)
4431 arg_array[len] = arg;
4482 p_dot = (
char *) strrchr (identifier_str,
'.');
4490 int position =
CAST_BUFLEN (p_dot - identifier_str);
4491 int remaining =
strlen (identifier_str) - position - 1;
4493 assert ((remaining > 0) && (remaining <
strlen (identifier_str) - 1));
4494 assert ((position > 0) && (position <
strlen (identifier_str) - 1));
4496 strncpy (string_name1, identifier_str, position);
4497 string_name1[position] =
'\0';
4498 strncpy (string_name2, p_dot + 1, remaining);
4499 string_name2[remaining] =
'\0';
4503 name2 =
pt_name (parser, string_name2);
4504 if (name1 ==
NULL || name2 ==
NULL)
4510 if (identifier ==
NULL)
4520 identifier =
pt_name (parser, identifier_str);
4521 if (identifier ==
NULL)
4551 const char *col_alias)
4559 if (sel_item ==
NULL)
4582 const char *col_alias)
4590 if (sel_item ==
NULL)
4615 const char *table_alias,
const DB_AUTH auth_bypass)
4621 if (table_name !=
NULL)
4623 from_item =
pt_name (parser, table_name);
4624 if (from_item ==
NULL)
4629 if (table_alias !=
NULL)
4631 range_var =
pt_name (parser, table_alias);
4632 if (range_var ==
NULL)
4694 const char *str_value)
4724 const char *rhs_identifier)
4849 if (outer_node ==
NULL)
4859 alias_subquery =
pt_name (parser, select_alias);
4863 if (from_item ==
NULL)
4895 const char **query_names,
const char **query_aliases,
int names_length,
4896 int is_show_full,
PT_NODE ** outer_node)
4925 for (i = 0; i < names_length; i++)
4937 if (from_item ==
NULL)
4944 alias_subquery =
pt_name (parser, select_alias);
4951 *outer_node = query;
4982 if (sel_item ==
NULL || query ==
NULL)
5048 concat_arg =
pt_name (parser,
"scale");
5055 if (concat_node ==
NULL)
5069 val1_node = concat_node;
5073 if (if_node ==
NULL)
5088 concat_arg =
pt_name (parser,
"prec");
5092 concat_arg = if_node;
5096 if (concat_node ==
NULL)
5138 pred_for_if = cond_item1;
5140 val1_node = concat_node;
5144 if (if_node ==
NULL)
5164 if (concat_node ==
NULL)
5228 if (if_node_enum ==
NULL)
5250 pred_for_if = cond_item1;
5252 val1_node = concat_node;
5253 val2_node = if_node_enum;
5258 if (if_node_types ==
NULL)
5269 concat_arg =
pt_name (parser,
"type_name");
5273 concat_arg = if_node;
5277 concat_arg = if_node_types;
5281 if (concat_node ==
NULL)
5335 pred_for_if = cond_item1;
5339 if (if_node !=
NULL)
5452 if (sub_query ==
NULL)
5481 if (pri_key_query ==
NULL)
5488 if (from_item ==
NULL)
5492 alias_subquery =
pt_name (parser,
"constraints_pri_key");
5518 if (sub_query ==
NULL)
5547 if (uni_key_query ==
NULL)
5554 if (from_item ==
NULL)
5558 alias_subquery =
pt_name (parser,
"constraints_uni_key");
5585 if (sub_query ==
NULL)
5619 if (from_item ==
NULL)
5623 alias_subquery =
pt_name (parser,
"constraints_no_index");
5681 key_node = if_node1;
5708 if (group_by_node ==
NULL)
5717 return group_by_node;
5743 if (sort_spec_node ==
NULL)
5752 return sort_spec_node;
5808 if (sel_item ==
NULL)
5855 if (group_by_node ==
NULL)
5941 const char *
const col_header =
"Tables_in_";
5943 if (db_name ==
NULL)
5948 strcpy (tables_col_name, col_header);
5956 if (sub_query ==
NULL)
6008 if (like_or_where_expr !=
NULL)
6010 if (like_where_syntax == 1)
6018 assert (like_where_syntax == 2);
6019 where_item = like_or_where_expr;
6026 assert (like_where_syntax == 0);
6046 switch (arg_meta->
type)
6062 "positive integer value", arg_num);
6128 if (arg_info_count == 0)
6137 for (; i < arg_info_count && arg !=
NULL; i++, arg = arg->
next)
6148 if (id_string ==
NULL)
6176 if (i < arg_info_count)
6206 PT_NODE *name_node, *value_node;
6210 if (arg_info_count == 0)
6215 for (i = 0; i < arg_info_count; i++)
6220 for (arg = args; arg !=
NULL; arg = arg->
next)
6306 PT_NODE *value, *from_item, *showstmt_info;
6342 if (showstmt_info ==
NULL)
6368 if (from_item ==
NULL)
6377 if (like_or_where_expr !=
NULL)
6381 if (like_where_syntax == 1)
6389 assert (like_where_syntax == 2);
6390 where_item = like_or_where_expr;
6397 assert (like_where_syntax == 0);
6400 for (i = 0; i < num_orderby; i++)
6403 if (order_by_item ==
NULL)
6464 PT_NODE * like_or_where_expr,
int is_show_full)
6473 const char **psubquery_aliases =
NULL, **pquery_names =
NULL, **pquery_aliases =
NULL;
6474 int subquery_list_size = is_show_full ? 10 : 8;
6475 int query_list_size = subquery_list_size - 2;
6477 const char *subquery_aliases[] = {
"Attr_Type",
"Def_Order",
"Field",
"Type",
"Null",
"Key",
"Default",
6480 const char *subquery_full_aliases[] = {
"Attr_Type",
"Def_Order",
"Field",
"Type",
"Collation",
"Null",
6481 "Key",
"Default",
"Extra",
"Comment" 6484 const char *query_names[] = {
"Field",
"Type",
"Null",
"Key",
"Default",
"Extra" };
6486 const char *query_aliases[] = {
"Field",
"Type",
"Null",
"Key",
"Default",
"Extra" };
6488 const char *query_full_names[] = {
"Field",
"Type",
"Collation",
"Null",
"Key",
"Default",
"Extra",
6492 const char *query_full_aliases[] = {
"Field",
"Type",
"Collation",
"Null",
"Key",
"Default",
"Extra",
6502 if (sub_query ==
NULL)
6520 for (i = 2; i < subquery_list_size; i++)
6526 psubquery_aliases = is_show_full ? subquery_full_aliases : subquery_aliases;
6527 pquery_names = is_show_full ? query_full_names : query_names;
6528 pquery_aliases = is_show_full ? query_full_aliases : query_aliases;
6530 for (i = 0; i < subquery_list_size; i++)
6545 if (from_item ==
NULL)
6551 is_show_full, &outer_query) !=
NO_ERROR)
6557 if (order_by_item ==
NULL)
6564 if (order_by_item ==
NULL)
6572 if (like_or_where_expr !=
NULL)
6576 if (like_where_syntax == 1)
6584 assert (like_where_syntax == 2);
6585 where_item = like_or_where_expr;
6592 assert (like_where_syntax == 0);
6629 if (class_op ==
NULL)
6656 if (strbuf.
len () == 0)
6697 if (strbuf.
len () == 0)
6833 "(SELECT 'data_page_fetches' as [variable] , exec_stats('Num_data_page_fetches') as [value])" 6834 "UNION ALL (SELECT 'data_page_dirties' as [variable] , exec_stats('Num_data_page_dirties') as [value])" 6835 "UNION ALL (SELECT 'data_page_ioreads' as [variable] , exec_stats('Num_data_page_ioreads') as [value])" 6836 "UNION ALL (SELECT 'data_page_iowrites' as [variable] , exec_stats('Num_data_page_iowrites') as [value]);";
6850 show_node =
pt_pop (parser);
6851 assert (show_node == node[0]);
6862 "(SELECT 'file_creates' as [variable] , exec_stats('Num_file_creates') as [value])" 6863 "UNION ALL (SELECT 'file_removes' as [variable] , exec_stats('Num_file_removes') as [value])" 6864 "UNION ALL (SELECT 'file_ioreads' as [variable] , exec_stats('Num_file_ioreads') as [value])" 6865 "UNION ALL (SELECT 'file_iowrites' as [variable] , exec_stats('Num_file_iowrites') as [value])" 6866 "UNION ALL (SELECT 'file_iosynches' as [variable] , exec_stats('Num_file_iosynches') as [value])" 6867 "UNION ALL (SELECT 'data_page_fetches' as [variable] , exec_stats('Num_data_page_fetches') as [value])" 6868 "UNION ALL (SELECT 'data_page_dirties' as [variable] , exec_stats('Num_data_page_dirties') as [value])" 6869 "UNION ALL (SELECT 'data_page_ioreads' as [variable] , exec_stats('Num_data_page_ioreads') as [value])" 6870 "UNION ALL (SELECT 'data_page_iowrites' as [variable] , exec_stats('Num_data_page_iowrites') as [value])" 6871 "UNION ALL (SELECT 'log_page_ioreads' as [variable] , exec_stats('Num_log_page_ioreads') as [value])" 6872 "UNION ALL (SELECT 'log_page_iowrites' as [variable] , exec_stats('Num_log_page_iowrites') as [value])" 6873 "UNION ALL (SELECT 'log_append_records' as [variable] , exec_stats('Num_log_append_records') as [value])" 6874 "UNION ALL (SELECT 'log_archives' as [variable] , exec_stats('Num_log_archives') as [value])" 6875 "UNION ALL (SELECT 'log_start_checkpoints' as [variable] , exec_stats('Num_log_start_checkpoints') as [value])" 6876 "UNION ALL (SELECT 'log_end_checkpoints' as [variable] , exec_stats('Num_log_end_checkpoints') as [value])" 6877 "UNION ALL (SELECT 'log_wals' as [variable] , exec_stats('Num_log_wals') as [value])" 6878 "UNION ALL (SELECT 'page_locks_acquired' as [variable] , exec_stats('Num_page_locks_acquired') as [value])" 6879 "UNION ALL (SELECT 'object_locks_acquired' as [variable] , exec_stats('Num_object_locks_acquired') as [value])" 6880 "UNION ALL (SELECT 'page_locks_converted' as [variable] , exec_stats('Num_page_locks_converted') as [value])" 6881 "UNION ALL (SELECT 'object_locks_converted' as [variable] , exec_stats('Num_object_locks_converted') as [value])" 6882 "UNION ALL (SELECT 'page_locks_re-requested' as [variable] , exec_stats('Num_page_locks_re-requested') as [value])" 6883 "UNION ALL (SELECT 'object_locks_re-requested' as [variable] , exec_stats('Num_object_locks_re-requested') as [value])" 6884 "UNION ALL (SELECT 'page_locks_waits' as [variable] , exec_stats('Num_page_locks_waits') as [value])" 6885 "UNION ALL (SELECT 'object_locks_waits' as [variable] , exec_stats('Num_object_locks_waits') as [value])" 6886 "UNION ALL (SELECT 'tran_commits' as [variable] , exec_stats('Num_tran_commits') as [value])" 6887 "UNION ALL (SELECT 'tran_rollbacks' as [variable] , exec_stats('Num_tran_rollbacks') as [value])" 6888 "UNION ALL (SELECT 'tran_savepoints' as [variable] , exec_stats('Num_tran_savepoints') as [value])" 6889 "UNION ALL (SELECT 'tran_start_topops' as [variable] , exec_stats('Num_tran_start_topops') as [value])" 6890 "UNION ALL (SELECT 'tran_end_topops' as [variable] , exec_stats('Num_tran_end_topops') as [value])" 6891 "UNION ALL (SELECT 'tran_interrupts' as [variable] , exec_stats('Num_tran_interrupts') as [value])" 6892 "UNION ALL (SELECT 'btree_inserts' as [variable] , exec_stats('Num_btree_inserts') as [value])" 6893 "UNION ALL (SELECT 'btree_deletes' as [variable] , exec_stats('Num_btree_deletes') as [value])" 6894 "UNION ALL (SELECT 'btree_updates' as [variable] , exec_stats('Num_btree_updates') as [value])" 6895 "UNION ALL (SELECT 'btree_covered' as [variable] , exec_stats('Num_btree_covered') as [value])" 6896 "UNION ALL (SELECT 'btree_noncovered' as [variable] , exec_stats('Num_btree_noncovered') as [value])" 6897 "UNION ALL (SELECT 'btree_resumes' as [variable] , exec_stats('Num_btree_resumes') as [value])" 6898 "UNION ALL (SELECT 'btree_multirange_optimization' as [variable] , exec_stats('Num_btree_multirange_optimization') as [value])" 6899 "UNION ALL (SELECT 'btree_splits' as [variable] , exec_stats('Num_btree_splits') as [value])" 6900 "UNION ALL (SELECT 'btree_merges' as [variable] , exec_stats('Num_btree_merges') as [value])" 6901 "UNION ALL (SELECT 'query_selects' as [variable] , exec_stats('Num_query_selects') as [value])" 6902 "UNION ALL (SELECT 'query_inserts' as [variable] , exec_stats('Num_query_inserts') as [value])" 6903 "UNION ALL (SELECT 'query_deletes' as [variable] , exec_stats('Num_query_deletes') as [value])" 6904 "UNION ALL (SELECT 'query_updates' as [variable] , exec_stats('Num_query_updates') as [value])" 6905 "UNION ALL (SELECT 'query_sscans' as [variable] , exec_stats('Num_query_sscans') as [value])" 6906 "UNION ALL (SELECT 'query_iscans' as [variable] , exec_stats('Num_query_iscans') as [value])" 6907 "UNION ALL (SELECT 'query_lscans' as [variable] , exec_stats('Num_query_lscans') as [value])" 6908 "UNION ALL (SELECT 'query_setscans' as [variable] , exec_stats('Num_query_setscans') as [value])" 6909 "UNION ALL (SELECT 'query_methscans' as [variable] , exec_stats('Num_query_methscans') as [value])" 6910 "UNION ALL (SELECT 'query_nljoins' as [variable] , exec_stats('Num_query_nljoins') as [value])" 6911 "UNION ALL (SELECT 'query_mjoins' as [variable] , exec_stats('Num_query_mjoins') as [value])" 6912 "UNION ALL (SELECT 'query_objfetches' as [variable] , exec_stats('Num_query_objfetches') as [value])" 6913 "UNION ALL (SELECT 'query_holdable_cursors' as [variable] , exec_stats('Num_query_holdable_cursors') as [value])" 6914 "UNION ALL (SELECT 'sort_io_pages' as [variable] , exec_stats('Num_sort_io_pages') as [value])" 6915 "UNION ALL (SELECT 'sort_data_pages' as [variable] , exec_stats('Num_sort_data_pages') as [value])" 6916 "UNION ALL (SELECT 'network_requests' as [variable] , exec_stats('Num_network_requests') as [value])" 6917 "UNION ALL (SELECT 'adaptive_flush_pages' as [variable] , exec_stats('Num_adaptive_flush_pages') as [value])" 6918 "UNION ALL (SELECT 'adaptive_flush_log_pages' as [variable] , exec_stats('Num_adaptive_flush_log_pages') as [value])" 6919 "UNION ALL (SELECT 'adaptive_flush_max_pages' as [variable] , exec_stats('Num_adaptive_flush_max_pages') as [value])" 6920 "UNION ALL (SELECT 'prior_lsa_list_size' as [variable] , exec_stats('Num_prior_lsa_list_size') as [value])" 6921 "UNION ALL (SELECT 'prior_lsa_list_maxed' as [variable] , exec_stats('Num_prior_lsa_list_maxed') as [value])" 6922 "UNION ALL (SELECT 'prior_lsa_list_removed' as [variable] , exec_stats('Num_prior_lsa_list_removed') as [value])" 6923 "UNION ALL (SELECT 'heap_stats_bestspace_entries' as [variable] , exec_stats('Num_heap_stats_bestspace_entries') as [value])" 6924 "UNION ALL (SELECT 'heap_stats_bestspace_maxed' as [variable] , exec_stats('Num_heap_stats_bestspace_maxed') as [value])";
6936 show_node =
pt_pop (parser);
6937 assert (show_node == node[0]);
6979 if (set_of_group_name ==
NULL)
6987 if (sel_item ==
NULL)
7011 if (from_item ==
NULL)
7015 table_col =
pt_name (parser,
"groups");
7016 alias_table =
pt_name (parser,
"t");
7017 alias_col =
pt_name (parser,
"g");
7018 if (table_col ==
NULL || alias_table ==
NULL || alias_col ==
NULL)
7055 const char *user_name =
NULL;
7059 if (user_name ==
NULL)
7066 if (user_name !=
NULL)
7163 if (concat_arg ==
NULL)
7206 if (concat_node ==
NULL)
7213 const char *
const col_header =
"Grants for ";
7215 strcpy (col_alias, col_header);
7241 where_expr = where_item;
7269 if (set_of_grantee_name ==
NULL)
7302 group_by_item =
NULL;
7331 UINTPTR spec_id = *(UINTPTR *) void_arg;
7338 *(UINTPTR *) void_arg = 0;
7388 if (delete_stmt ==
NULL)
7420 UINTPTR spec_id = 0;
7471 if (prev_spec !=
NULL)
7473 prev_spec->next = spec;
7481 rem_name = prev_name =
NULL;
7482 while (to_delete !=
NULL)
7485 if (to_delete->info.name.spec_id == spec_id)
7488 if (rem_name !=
NULL)
7493 rem_name = to_delete;
7494 to_delete = to_delete->
next;
7496 if (prev_name !=
NULL)
7498 prev_name->
next = to_delete;
7507 prev_name = to_delete;
7508 to_delete = to_delete->
next;
7513 if (new_del_stmts ==
NULL)
7520 last_new_del_stmt = last_new_del_stmt->next;
7523 if (last_new_del_stmt ==
NULL)
7529 if (last_new_del_stmt !=
NULL)
7531 last_new_del_stmt->info.delete_.hint = delete_stmt->
info.
delete_.
hint;
7532 last_new_del_stmt->flag.recompile = delete_stmt->
flag.
recompile;
7536 last_new_del_stmt->info.delete_.waitsecs_hint =
7538 if (last_new_del_stmt->info.delete_.waitsecs_hint ==
NULL)
7557 if (new_del_stmts !=
NULL)
7644 const char *aliases[] = {
7645 "Table",
"Non_unique",
"Key_name",
"Seq_in_index",
"Column_name",
7646 "Collation",
"Cardinality",
"Sub_part",
"Packed",
"Null",
"Index_type",
7647 "Func",
"Comment",
"Visible" 7688 for (i = 0; i <
sizeof (db_valuep) /
sizeof (db_valuep[0]); i++)
7703 if (from_item ==
NULL)
7710 if (order_by_item ==
NULL)
7718 if (order_by_item ==
NULL)
7760 (void) use_parens_inside;
7761 (void) use_parens_outside;
7877 for (; list; list = list->
next)
7896 PT_NODE *s1, *s2, *save_node, *col;
7900 if (group_list ==
NULL)
7911 if (pos_descr.
pos_no > 0)
7914 for (i = 1; i < pos_descr.
pos_no && col; i++)
7947 return (s2 ==
NULL) ?
true :
false;
7966 const char *spec_name =
NULL;
7967 int upd_del_count = 0;
7977 while (spec_list !=
NULL)
7979 if (spec_list->info.spec.flag & what_for)
7981 if (upd_del_count == 0)
7983 upd_del_spec = spec_list;
7988 spec_list = spec_list->next;
7991 if (upd_del_spec ==
NULL)
7998 if (upd_del_count > 1)
8020 save_next = upd_del_spec->
next;
8022 upd_del_spec->next =
NULL;
8027 upd_del_spec->
next = save_next;
8030 if (col->data_type && col->data_type->info.data_type.virt_object)
8034 col->data_type->info.data_type.virt_type_enum =
PT_TYPE_NONE;
8040 as_attr =
pt_name (parser,
"rowoid_");
8041 as_attr->info.name.original =
8042 (
const char *)
pt_append_string (parser, (
char *) as_attr->info.name.original, spec_name);
8043 as_attr->info.name.spec_id = spec->
info.
spec.
id;
8045 as_attr->type_enum = col->type_enum;
8058 if (flat_copy->node_type ==
PT_NAME)
8060 flat_copy->info.name.spec_id = spec->
info.
spec.
id;
8062 flat_copy = flat_copy->next;
8079 PT_NODE *derived_table, *from, *ret;
8093 if (derived_table ==
NULL)
8132 PT_NODE *dt_arg1, *dt_arg2, *derived_table;
8149 if (dt_arg1 ==
NULL)
8183 while (as_attr_list !=
NULL)
8189 as_attr_list = as_attr_list->
next;
8193 if (as_attr_list ==
NULL)
8199 derived_table = dt_arg1;
8200 while (derived_table !=
NULL)
8204 for (i = 0; i < attr_idx && attr_list !=
NULL; i++)
8206 attr_list = attr_list->
next;
8208 if (attr_list ==
NULL)
8217 if (subspec ==
NULL)
8225 while (spec_list !=
NULL)
8233 spec_list = spec_list->
next;
8238 if (temp_name ==
NULL)
8243 if (derived_table == dt_arg1)
8262 derived_table = (derived_table == dt_arg1 ? dt_arg2 :
NULL);
8292 while (node !=
NULL)
8328 PT_NODE *lhs, *node_tmp, *node, *resolved;
8344 while (node !=
NULL)
8377 if (node_tmp ==
NULL)
8418 bool has_user_charset =
false;
8426 if (charset_node !=
NULL)
8428 const char *cs_name;
8443 has_user_charset =
true;
8446 if (coll_node !=
NULL)
8455 if (lang_coll !=
NULL)
8460 coll_charset = (int) lang_coll->
codeset;
8462 if (has_user_charset && coll_charset != *charset)
8470 *charset = coll_charset;
8522 for (node = select_list, index = 0; node !=
NULL; node = node->
next, index++)
8541 if (new_col ==
NULL)
8546 last_node->next = new_col;
8599 if (sub_query ==
NULL)
8746 if (from_item ==
NULL)
8767 if (like_or_where_expr !=
NULL)
8771 if (like_where_syntax == 1)
8779 assert (like_where_syntax == 2);
8780 where_item = like_or_where_expr;
8787 assert (like_where_syntax == 0);
8808 int save_set_host_var;
8916 bool has_limit =
false;
8919 if (error !=
NO_ERROR || !has_limit)
8944 int save_set_host_var;
8949 if (cannot_eval !=
NULL)
8951 *cannot_eval =
true;
8953 if (mro_candidate !=
NULL)
8955 *mro_candidate =
false;
8975 goto end_mro_candidate;
8981 *cannot_eval =
false;
8985 goto end_mro_candidate;
8996 if (mro_candidate !=
NULL)
8998 *mro_candidate =
true;
9033 if (orderby_for ==
NULL || upper_limit ==
NULL)
9051 if (orderby_for->
next)
9054 save_next = orderby_for->
next;
9057 orderby_for->
next = save_next;
9084 arg_ordby_num = arg1;
9089 arg_ordby_num = arg2;
9212 int node_type = *((
int *) arg);
9213 int *found_p = ((
int *) arg) + 1;
9242 int op_type = *((
int *) arg);
9243 int *found_p = ((
int *) arg) + 1;
9272 buf = (
char *) calloc (size + 1,
sizeof (
char));
9294 if (statement ==
NULL)
9335 int pad_size = 0, trimmed_length = 0, trimmed_size = 0;
9337 unsigned char pad[2];
9350 while (node !=
NULL)
9356 &trimmed_length, &trimmed_size,
true);
9357 if (trimmed_size < node->info.value.data_value.str->length)
9406 while (temp !=
NULL)
9408 if (!ignore_trailing_space)
9415 temp->info.value.data_value.str->length, ti) == 0)
9464 if (!(xasl_flag & limit_opt_flag))
9541 if (trace_func ==
NULL)
9582 if (node ==
NULL || groupby_p ==
NULL)
9593 for (; groupby_p; groupby_p = groupby_p->
next)
9630 if (data_default_node !=
NULL)
9665 bool *has_name_oid = (
bool *) arg;
9672 *has_name_oid =
true;
9680 *has_name_oid =
true;
#define PT_NAME_INFO_SET_FLAG(e, f)
PT_NODE * pt_check_groupbynum_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
void pt_copy_statement_flags(PT_NODE *source, PT_NODE *destination)
PT_NODE * pt_compile(PARSER_CONTEXT *parser, PT_NODE *volatile statement)
PT_NODE * pt_make_query_show_collation(PARSER_CONTEXT *parser, int like_where_syntax, PT_NODE *like_or_where_expr)
TP_DOMAIN_STATUS tp_value_coerce(const DB_VALUE *src, DB_VALUE *dest, const TP_DOMAIN *desired_domain)
static PT_NODE * pt_make_sort_spec_with_number(PARSER_CONTEXT *parser, const int number_pos, PT_MISC_TYPE sort_mode)
QFILE_TUPLE_VALUE_POSITION pos_descr
void pt_free_statement_xasl_id(PT_NODE *statement)
PT_NODE * pt_check_orderbynum_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_ENUM_AGG_STRINGS_SIZE_TOO_LARGE
void describe_class(struct db_object *class_op)
static PT_NODE * pt_is_spec_referenced(PARSER_CONTEXT *parser, PT_NODE *node, void *void_arg, int *continue_walk)
unsigned dont_collect_exec_stats
#define PT_IS_NUMBERING_AFTER_EXECUTION(op)
PT_NODE * pt_from_entity_part(const PT_NODE *node)
void qstr_trim_trailing(const unsigned char *trim_charset_ptr, int trim_charset_size, const unsigned char *src_ptr, DB_TYPE src_type, int src_length, int src_size, INTL_CODESET codeset, int *trail_trimmed_length, int *trail_trimmed_size, bool trim_ascii_spaces)
#define LANG_SYS_COLLATION
#define PT_SELECT_INFO_IS_FLAGED(s, f)
PT_NODE * pt_find_aggregate_names(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
static PT_NODE * pt_rewrite_derived_for_upd_del(PARSER_CONTEXT *parser, PT_NODE *spec, PT_SPEC_FLAG what_for, bool add_as_attr)
#define MSGCAT_SEMANTIC_UNEXPECTED_NTH_ARGUMENT
PT_NODE * pt_is_inst_or_orderby_num_node(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
static const int PACKING_MMGR_BLOCK_SIZE
int pt_check_grammar_charset_collation(PARSER_CONTEXT *parser, PT_NODE *charset_node, PT_NODE *coll_node, int *charset, int *coll_id)
#define PT_IS_SORT_SPEC_NODE(n)
PT_NODE ** parser_parse_string_use_sys_charset(PARSER_CONTEXT *parser, const char *buffer)
void regu_set_global_error(void)
#define PT_IS_CHAR_STRING_TYPE(t)
TP_DOMAIN * expected_domain
PT_NODE * pt_limit_to_numbering_expr(PARSER_CONTEXT *parser, PT_NODE *limit, PT_OP_TYPE num_op, bool is_gby_num)
#define PT_ERRORm(parser, node, setNo, msgNo)
bool pt_check_ordby_num_for_multi_range_opt(PARSER_CONTEXT *parser, PT_NODE *query, bool *mro_candidate, bool *cannot_eval)
const char * db_get_class_name(DB_OBJECT *class_)
PARSER_VARCHAR * expr_before_const_folding
#define COMPATIBLE_WITH_INSTNUM(node)
PT_NODE * parser_keyword_func(const char *name, PT_NODE *args)
const char * pt_partition_name(PARSER_CONTEXT *parser, const char *class_name, const char *partition)
PT_NODE * pt_check_orderbynum_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_HOST_VARS * pt_host_info(PARSER_CONTEXT *parser, PT_NODE *stmt)
PT_NODE * pt_node_list(PARSER_CONTEXT *parser, PT_MISC_TYPE list_type, PT_NODE *list)
#define PT_EXPR_INFO_GROUPBYNUM_C
#define PARTITIONED_SUB_CLASS_TAG
PT_NODE * pt_is_pseudocolumn_node(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
void pt_report_to_ersys_with_statement(PARSER_CONTEXT *parser, const PT_ERROR_TYPE error_type, PT_NODE *statement)
static void pt_free_packing_buf(int slot)
int db_make_bigint(DB_VALUE *value, const DB_BIGINT num)
int pt_host_var_index(const PT_NODE *hv)
#define PT_SELECT_INFO_IS_UPD_DEL_QUERY
void pt_register_orphan(PARSER_CONTEXT *parser, const PT_NODE *orphan)
int db_make_varchar(DB_VALUE *value, const int max_char_length, DB_CONST_C_CHAR str, const int char_str_byte_size, const int codeset, const int collation_id)
#define MSGCAT_SEMANTIC_OUT_OF_MEMORY
#define PT_REQUIRES_HIERARCHICAL_QUERY(op)
PT_MISC_TYPE all_or_distinct
#define PT_EXPR_INFO_SET_FLAG(e, f)
PT_NODE * pt_make_integer_value(PARSER_CONTEXT *parser, const int value_int)
PT_NODE * pt_get_subquery_of_insert_select(const PT_NODE *node)
PT_NODE * pt_check_instnum_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
int pt_is_method_call(PT_NODE *node)
int pt_get_dup_key_oid_var_index(PARSER_CONTEXT *parser, PT_NODE *update_statement)
#define MSGCAT_SEMANTIC_ONLY_ONE_UPDATE_SPEC_ALLOWED
#define PT_SELECT_INFO_DISABLE_LOOSE_SCAN
PT_TABLE_OPTION_INFO table_option
PT_NODE * pt_get_cursor(const PT_HOST_VARS *hv)
bool pt_is_expr_wrapped_function(PARSER_CONTEXT *parser, const PT_NODE *node)
const char * pt_get_select_from_name(PARSER_CONTEXT *parser, const PT_NODE *spec)
void pt_check_level_expr(PARSER_CONTEXT *parser, PT_NODE *expr, bool *has_greater, bool *has_lesser)
#define assert_release(e)
#define SM_MAX_IDENTIFIER_LENGTH
PT_NODE * pt_has_name_oid(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PARSER_CONTEXT * parser_create_parser(void)
static PT_NODE * pt_make_query_user_groups(PARSER_CONTEXT *parser, const char *user_name)
static PT_NODE * pt_must_be_filtering(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_NODE * pt_make_query_show_grants_curr_usr(PARSER_CONTEXT *parser)
#define PT_SELECT_INFO_HAS_ANALYTIC
bool au_is_dba_group_member(MOP user)
static PT_NODE * pt_make_if_with_expressions(PARSER_CONTEXT *parser, PT_NODE *pred, PT_NODE *expr1, PT_NODE *expr2, const char *alias)
void pt_get_default_expression_from_data_default_node(PARSER_CONTEXT *parser, PT_NODE *data_default_node, DB_DEFAULT_EXPR *default_expr)
#define PT_EXPR_INFO_INSTNUM_NC
static PT_NODE * pt_make_pred_with_identifiers(PARSER_CONTEXT *parser, PT_OP_TYPE op_type, const char *lhs_identifier, const char *rhs_identifier)
PARSER_VARCHAR * pt_append_bytes(const PARSER_CONTEXT *parser, PARSER_VARCHAR *old_string, const char *new_tail, const int new_tail_length)
union pt_query_info::@124 q
char * pt_alloc_packing_buf(int size)
void pt_exit_packing_buf(void)
int pt_check_enum_data_type(PARSER_CONTEXT *parser, PT_NODE *dt)
PT_NODE * pt_make_query_show_exec_stats_all(PARSER_CONTEXT *parser)
struct pt_merge_info::@125 update
PT_NODE * pt_has_non_idx_sarg_coll_pre(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
#define PT_IS_NULL_NODE(e)
#define PT_NAME_INFO_IS_FLAGED(e, f)
void db_string_free(char *string)
PT_NODE_LIST_INFO node_list
PT_NODE * pt_expression_3(PARSER_CONTEXT *parser, PT_OP_TYPE op, PT_NODE *arg1, PT_NODE *arg2, PT_NODE *arg3)
int pt_instnum_compatibility(PT_NODE *expr)
#define MSGCAT_SEMANTIC_NOT_ALLOWED_HERE
bool pt_sort_spec_cover(PT_NODE *cur_list, PT_NODE *new_list)
PT_NODE * pt_check_subquery_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
int or_packed_domain_size(struct tp_domain *domain, int include_classoids)
PT_NODE * pt_expression_2(PARSER_CONTEXT *parser, PT_OP_TYPE op, PT_NODE *arg1, PT_NODE *arg2)
const char * pt_show_misc_type(PT_MISC_TYPE p)
DB_VALUE * host_variables
int pt_node_list_to_array(PARSER_CONTEXT *parser, PT_NODE *arg_list, PT_NODE *arg_array[], const int array_size, int *num_args)
PT_NODE * pt_get_first_arg_ignore_prior(PT_NODE *node)
PT_NODE * pt_add_row_oid_name(PARSER_CONTEXT *parser, PT_NODE *statement)
void pt_final_packing_buf(void)
PT_NODE * pt_check_subquery_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define MSGCAT_SEMANTIC_IS_NOT_A
#define PT_IS_OID_NAME(n)
struct parser_context::@134 flag
PT_NODE * pt_is_inst_or_orderby_num_node_post(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
DB_DEFAULT_EXPR_TYPE default_expr_type
static PT_NODE * pt_make_like_col_expr(PARSER_CONTEXT *parser, PT_NODE *rhs_expr, const char *col_name)
PT_NODE * pt_class_part(const PT_NODE *node)
DB_QUERY_TYPE * pt_fillin_type_size(PARSER_CONTEXT *parser, PT_NODE *query, DB_QUERY_TYPE *list, const int include_oid, bool want_spec_entity_name, bool fixup_columns_type)
PT_NODE * pt_find_node_type_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_NODE * pt_is_analytic_node_post(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
unsigned force_auto_parameterize
static int pt_add_name_col_to_sel_list(PARSER_CONTEXT *parser, PT_NODE *select, const char *identifier_str, const char *col_alias)
void parser_free_parser(PARSER_CONTEXT *parser)
DB_DEFAULT_EXPR_TYPE default_expr_type
int intl_identifier_lower(const char *src, char *dst)
static DB_OBJECT * is_class(OID *obj_oid, OID *class_oid)
#define NOT_COMPATIBLE_WITH_GROUPBYNUM(node)
PT_NODE * pt_expr_disallow_op_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_NODE * pt_find_spec_in_statement(PARSER_CONTEXT *parser, const PT_NODE *stmt, const PT_NODE *name)
PT_NODE * pt_expression_0(PARSER_CONTEXT *parser, PT_OP_TYPE op)
PT_MISC_TYPE derived_table_type
static PT_NODE * pt_make_dotted_identifier(PARSER_CONTEXT *parser, const char *identifier_str)
PT_NODE * pt_right_part(const PT_NODE *node)
#define PT_NODE_PRINT_VALUE_TO_TEXT(p, n)
bool pt_has_analytic(PARSER_CONTEXT *parser, PT_NODE *node)
PT_NODE * pt_make_query_describe_w_identifier(PARSER_CONTEXT *parser, PT_NODE *original_cls_id, PT_NODE *att_id)
TP_DOMAIN * tp_domain_resolve_default(DB_TYPE type)
void classobj_initialize_default_expr(DB_DEFAULT_EXPR *default_expr)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
#define MSGCAT_SEMANTIC_TOO_FEW_ARGUMENT
bool pt_recompile_for_limit_optimizations(PARSER_CONTEXT *parser, PT_NODE *statement, int xasl_flag)
LANG_COLLATION * lang_get_collation(const int coll_id)
void * db_ostk_alloc(HL_HEAPID heap_id, size_t size)
PT_FUNCTION_INFO function
#define CAST_POINTER_TO_NODE(p)
int pt_is_ddl_statement(const PT_NODE *node)
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)
PT_NODE * pt_make_query_show_grants(PARSER_CONTEXT *parser, const char *original_user_name)
PT_NODE * pt_node_next(const PT_NODE *node)
#define PT_IS_QUERY_NODE_TYPE(x)
static PT_NODE * pt_create_delete_stmt(PARSER_CONTEXT *parser, PT_NODE *spec, PT_NODE *target_class)
bool pt_sort_spec_cover_groupby(PARSER_CONTEXT *parser, PT_NODE *sort_list, PT_NODE *group_list, PT_NODE *tree)
PT_NODE * pt_get_parameters(PARSER_CONTEXT *parser, PT_NODE *stmt)
int prm_get_integer_value(PARAM_ID prm_id)
void pt_evaluate_tree(PARSER_CONTEXT *parser, PT_NODE *tree, DB_VALUE *db_values, int values_count)
void intl_pad_char(const INTL_CODESET codeset, unsigned char *pad_char, int *pad_size)
#define ERROR1(error, code, arg1)
char * db_get_database_name(void)
#define MSGCAT_SEMANTIC_INCOMPATIBLE_CS_COLL
PT_NODE * pt_expression(PARSER_CONTEXT *parser, PT_OP_TYPE op, PT_NODE *arg1, PT_NODE *arg2, PT_NODE *arg3)
void pt_fixup_column_type(PT_NODE *col)
#define ER_OUT_OF_VIRTUAL_MEMORY
void regu_set_error_with_zero_args(int err_type)
static PT_NODE * pt_make_collation_expr_node(PARSER_CONTEXT *parser)
#define MSGCAT_SET_PARSER_RUNTIME
PT_INCLUDE_OID_TYPE oid_included
int pt_is_attr(PT_NODE *node)
static PT_NODE * pt_resolve_showstmt_args_unnamed(PARSER_CONTEXT *parser, const SHOWSTMT_NAMED_ARG *arg_infos, int arg_info_count, PT_NODE *args)
PT_NODE * flat_entity_list
PT_NODE ** parser_parse_string(PARSER_CONTEXT *parser, const char *buffer)
LANG_COLLATION * lang_get_collation_by_name(const char *coll_name)
PT_NODE * pt_make_string_value(PARSER_CONTEXT *parser, const char *value_string)
PT_MISC_TYPE all_distinct
static PT_NODE * pt_process_spec_for_delete(PARSER_CONTEXT *parser, PT_NODE *spec)
PT_MISC_TYPE nulls_first_or_last
int intl_identifier_casecmp(const char *str1, const char *str2)
void pt_evaluate_tree_having_serial(PARSER_CONTEXT *parser, PT_NODE *tree, DB_VALUE *db_value, int vals_cnt)
INTL_CODESET lang_charset_cubrid_name_to_id(const char *name)
#define DB_MAX_IDENTIFIER_LENGTH
PT_NODE * pt_dup_key_update_stmt(PARSER_CONTEXT *parser, PT_NODE *spec, PT_NODE *assignment)
#define PT_EXPR_INFO_GROUPBYNUM_LIMIT
int pt_split_delete_stmt(PARSER_CONTEXT *parser, PT_NODE *delete_stmt)
int pt_is_function_index_expression(PT_NODE *node)
HL_HEAPID db_create_ostk_heap(int chunk_size)
void pt_register_orphan_db_value(PARSER_CONTEXT *parser, const DB_VALUE *orphan)
PT_NODE * parser_copy_tree(PARSER_CONTEXT *parser, const PT_NODE *tree)
PT_NODE * pt_rewrite_to_auto_param(PARSER_CONTEXT *parser, PT_NODE *value)
static void pt_help_show_create_table(PARSER_CONTEXT *parser, PT_NODE *table_name, string_buffer &strbuf)
PT_SHOWSTMT_INFO showstmt
DB_DOMAIN * pt_data_type_to_db_domain(PARSER_CONTEXT *parser, PT_NODE *dt, const char *class_name)
#define PT_SELECT_INFO_HAS_AGG
const char * pt_show_binopcode(PT_OP_TYPE n)
#define PT_NAME_INFO_CONSTANT
const char * pt_get_spec_name(PARSER_CONTEXT *parser, const PT_NODE *selqry)
#define PT_SELECT_INFO_COLS_SCHEMA
#define MSGCAT_SEMANTIC_MISSING_ARGUMENT
int pt_statement_line_number(const PT_NODE *stmt)
#define PT_IS_VALUE_NODE(n)
#define PT_SELECT_INFO_IS_MERGE_QUERY
#define MSGCAT_SEMANTIC_TOO_MANY_ARGUMENT
PT_DATA_TYPE_INFO data_type
void pt_enter_packing_buf(void)
static void cleanup(int signo)
PT_NODE * pt_pointer_stack_pop(PARSER_CONTEXT *parser, PT_NODE *stack, PT_NODE **node)
bool pt_has_aggregate(PARSER_CONTEXT *parser, PT_NODE *node)
#define pt_is_const_not_hostvar(n)
const char * er_msg(void)
CUBRID_STMT_TYPE pt_node_to_cmd_type(PT_NODE *node)
void pt_free_host_info(PT_HOST_VARS *hv)
PT_NODE * pt_find_spec(PARSER_CONTEXT *parser, const PT_NODE *from, const PT_NODE *name)
PT_TABLE_OPTION_TYPE option
static bool pt_datatypes_match(const PT_NODE *a, const PT_NODE *b)
void pt_split_join_preds(PARSER_CONTEXT *parser, PT_NODE *predicates, PT_NODE **join_part, PT_NODE **after_cb_filter)
char * pt_append_string(const PARSER_CONTEXT *parser, const char *old_string, const char *new_tail)
const char * pt_get_name(PT_NODE *nam)
#define PT_ERRORc(parser, node, msg)
PT_NODE * pt_make_query_show_index(PARSER_CONTEXT *parser, PT_NODE *original_cls_id)
#define COMPATIBLE_WITH_GROUPBYNUM(node)
PT_ZZ_ERROR_MSG_INFO error_msg
void pt_record_warning(PARSER_CONTEXT *parser, int stmt_no, int line_no, int col_no, const char *msg)
PT_NODE * pt_from_list_part(const PT_NODE *node)
bool pt_is_analytic_function(PARSER_CONTEXT *parser, const PT_NODE *node)
int pt_check_path_eq(PARSER_CONTEXT *parser, const PT_NODE *p, const PT_NODE *q)
static PT_NODE * pt_is_filtering_skip_and_or(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
const char * get_buffer() const
short db_value_is_in_workspace
const char * pt_get_proxy_spec_name(const char *qspec)
PT_NODE * pt_continue_walk(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
PT_NODE * pt_tuple_value(PARSER_CONTEXT *parser, PT_NODE *name, CURSOR_ID *cursor_p, int index)
need_clear_type need_clear
PT_NODE * pt_get_warnings(const PARSER_CONTEXT *parser)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
static PT_NODE * pt_create_param_for_value(PARSER_CONTEXT *parser, PT_NODE *value, int host_var_index)
int pr_clear_value(DB_VALUE *value)
void db_free_query_format(DB_QUERY_TYPE *q)
DB_BIGINT db_get_bigint(const DB_VALUE *value)
#define MSGCAT_SEMANTIC_UNKNOWN_COLL
DB_TYPE pt_node_to_db_type(PT_NODE *node)
PT_NODE * pt_entity(PARSER_CONTEXT *parser, const PT_NODE *entity_name, const PT_NODE *range_var, const PT_NODE *flat_list)
int db_value_domain_default(DB_VALUE *value, const DB_TYPE type, const int precision, const int scale, const int codeset, const int collation_id, DB_ENUMERATION *enumeration)
PT_NODE * pt_make_query_showstmt(PARSER_CONTEXT *parser, unsigned int type, PT_NODE *args, int like_where_syntax, PT_NODE *like_or_where_expr)
PT_TUPLE_VALUE_INFO tuple_value
bool pt_is_operator_logical(PT_OP_TYPE op)
PT_NODE * pt_make_query_show_exec_stats(PARSER_CONTEXT *parser)
PT_NODE * parser_append_node(PT_NODE *node, PT_NODE *list)
static PT_NODE * pt_insert_host_var(PARSER_CONTEXT *parser, PT_NODE *h_var, PT_NODE *list)
PT_NODE * parser_new_node(PARSER_CONTEXT *parser, PT_NODE_TYPE node_type)
static void error(const char *msg)
PT_NODE * pt_make_query_show_columns(PARSER_CONTEXT *parser, PT_NODE *original_cls_id, int like_where_syntax, PT_NODE *like_or_where_expr, int is_show_full)
#define PT_NODE_MOVE_NUMBER_OUTERLINK(t, s)
PT_NODE * pt_pop(PARSER_CONTEXT *parser)
void pt_reset_error(PARSER_CONTEXT *parser)
static PT_NODE * pt_make_outer_select_for_show_stmt(PARSER_CONTEXT *parser, PT_NODE *inner_select, const char *select_alias)
PT_NODE * pt_check_instnum_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define DB_DEFAULT_PRECISION
#define NOT_COMPATIBLE_WITH_INSTNUM(node)
static PT_NODE * pt_process_spec_for_update(PARSER_CONTEXT *parser, PT_NODE *spec, PT_NODE *name)
short db_value_is_initialized
PT_SORT_SPEC_INFO sort_spec
int pr_clone_value(const DB_VALUE *src, DB_VALUE *dest)
void parser_free_tree(PARSER_CONTEXT *parser, PT_NODE *tree)
static int pt_get_query_limit_from_limit(PARSER_CONTEXT *parser, PT_NODE *limit, DB_VALUE *limit_val)
const char * default_expr_format
#define PT_NAME_INFO_GENERATED_OID
#define ER_AU_SELECT_FAILURE
PT_NODE * pt_convert_to_logical_expr(PARSER_CONTEXT *parser, PT_NODE *node, bool use_parens_inside, bool use_parens_outside)
static PT_NODE * pt_collect_parameters(PARSER_CONTEXT *parser, PT_NODE *node, void *param_list, int *continue_walk)
#define PT_IS_CAST_CONST_INPUT_HOSTVAR(n)
#define MSGCAT_SET_PARSER_SEMANTIC
#define PT_IS_ORDERBYNUM(n)
PT_NODE * pt_make_query_show_trace(PARSER_CONTEXT *parser)
PT_NODE * pt_left_part(const PT_NODE *node)
static PT_NODE * pt_make_field_type_expr_node(PARSER_CONTEXT *parser)
PT_NODE * pt_union(PARSER_CONTEXT *parser, PT_NODE *arg1, PT_NODE *arg2)
void pt_free_orphans(PARSER_CONTEXT *parser)
#define free_and_init(ptr)
struct pt_merge_info::@126 insert
#define PT_IS_EXPR_NODE(n)
PT_NODE * pt_values_part(const PT_NODE *node)
PT_NODE * pt_make_tuple_value_reference(PARSER_CONTEXT *parser, PT_NODE *name, PT_NODE *select_list, CURSOR_ID *cursor_p)
#define PT_SELECT_INFO_READ_ONLY
#define PT_SELECT_INFO_SET_FLAG(s, f)
PT_NODE * pt_is_analytic_node(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
#define PT_SELECT_FULL_INFO_COLS_SCHEMA
const char * pt_string_part(const PT_NODE *node)
static bool pt_is_filtering_expression(PARSER_CONTEXT *parser, PT_NODE *expression)
PT_NODE * pt_attrs_part(const PT_NODE *node)
enum intl_codeset INTL_CODESET
int intl_char_count(const unsigned char *src, int length_in_bytes, INTL_CODESET src_codeset, int *char_count)
struct pt_function_info::@122 analytic
PT_NODE * pt_find_op_type_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
bool pt_has_inst_or_orderby_num(PARSER_CONTEXT *parser, PT_NODE *node)
int pt_get_query_limit_value(PARSER_CONTEXT *parser, PT_NODE *query, DB_VALUE *limit_val)
static PT_NODE * pt_make_if_with_strings(PARSER_CONTEXT *parser, PT_NODE *pred, const char *string1, const char *string2, const char *alias)
PT_NODE * pt_pointer_stack_push(PARSER_CONTEXT *parser, PT_NODE *stack, PT_NODE *node)
bool prm_get_bool_value(PARAM_ID prm_id)
static const int PACKING_MMGR_CHUNK_SIZE
static PT_NODE * pt_collect_host_info(PARSER_CONTEXT *parser, PT_NODE *node, void *h_var, int *continue_walk)
PT_NODE * pt_make_query_show_create_table(PARSER_CONTEXT *parser, PT_NODE *table_name)
static PT_NODE * pt_make_field_extra_expr_node(PARSER_CONTEXT *parser)
#define PT_EXPR_INFO_FUNCTION_INDEX
PT_NODE * pt_find_aggregate_functions_post(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
static PT_NODE * pt_make_pred_name_int_val(PARSER_CONTEXT *parser, PT_OP_TYPE op_type, const char *col_name, const int int_value)
#define TP_FLOATING_PRECISION_VALUE
int pt_groupbynum_compatibility(PT_NODE *expr)
PT_NODE * pt_find_name(PARSER_CONTEXT *parser, const PT_NODE *name, const PT_NODE *list)
static PT_NODE * pt_make_sort_spec_with_identifier(PARSER_CONTEXT *parser, const char *identifier, PT_MISC_TYPE sort_mode)
void pt_set_update_object(PARSER_CONTEXT *parser, PT_NODE *node)
int db_make_null(DB_VALUE *value)
PT_NODE * pt_get_output_host_vars(const PT_HOST_VARS *hv)
#define PT_EXPR_INFO_GROUPBYNUM_NC
static PT_NODE * pt_get_select_from_spec(const PT_NODE *spec)
#define DB_IS_NULL(value)
void * pt_node_etc(const PT_NODE *node)
PT_NODE * pt_get_input_host_vars(const PT_HOST_VARS *hv)
unsigned short correlation_level
static int pt_make_outer_select_for_show_columns(PARSER_CONTEXT *parser, PT_NODE *inner_select, const char *select_alias, const char **query_names, const char **query_aliases, int names_length, int is_show_full, PT_NODE **outer_node)
static PT_NODE * pt_make_pred_name_string_val(PARSER_CONTEXT *parser, PT_OP_TYPE op_type, const char *identifier_str, const char *str_value)
void pt_null_etc(PT_NODE *node)
int pt_get_select_query_columns(PARSER_CONTEXT *parser, PT_NODE *create_select, DB_QUERY_TYPE **query_columns)
static PT_NODE * pt_make_dotted_identifier_internal(PARSER_CONTEXT *parser, const char *identifier_str, int depth)
#define MSGCAT_SEMANTIC_INVALID_CHARSET
#define MSGCAT_RUNTIME_IS_NOT_AUTHORIZED_ON
bool pt_is_aggregate_function(PARSER_CONTEXT *parser, const PT_NODE *node)
#define MSGCAT_SEMANTIC_ENUM_TYPE_TOO_MANY_VALUES
#define PT_INTERNAL_ERROR(parser, what)
int db_make_int(DB_VALUE *value, const int num)
void pt_to_pos_descr(PARSER_CONTEXT *parser, QFILE_TUPLE_VALUE_POSITION *pos_p, PT_NODE *node, PT_NODE *root, PT_NODE **referred_node)
static PT_NODE * pt_make_dummy_query_check_table(PARSER_CONTEXT *parser, const char *table_name)
#define pt_has_error(parser)
MOP sm_find_class(const char *name)
PT_NODE * pt_has_non_groupby_column_node(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define PT_IS_EXPR_NODE_WITH_OPERATOR(n, op_type)
PT_NAMED_ARG_INFO named_arg
#define MSGCAT_SEMANTIC_UNKNOWN_ARGUMENT
PT_NODE * pt_make_query_show_create_view(PARSER_CONTEXT *parser, PT_NODE *view_identifier)
#define PT_SELECT_INFO_IDX_SCHEMA
static PT_NODE * pt_make_field_key_type_expr_node(PARSER_CONTEXT *parser)
static PT_NODE * pt_make_collection_type_subquery_node(PARSER_CONTEXT *parser, const char *table_name)
DB_QUERY_TYPE * pt_get_titles(PARSER_CONTEXT *parser, PT_NODE *query)
PT_NODE * pt_expression_1(PARSER_CONTEXT *parser, PT_OP_TYPE op, PT_NODE *arg1)
void pt_mark_spec_list_for_delete(PARSER_CONTEXT *parser, PT_NODE *statement)
#define PT_HAS_COLLATION(t)
PT_NODE * pt_check_groupbynum_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
#define DB_ENUM_ELEMENTS_MAX_AGG_SIZE
static bool pt_is_filtering_predicate(PARSER_CONTEXT *parser, PT_NODE *predicate)
#define PT_EXPR_INFO_CLEAR_FLAG(e, f)
PT_NODE * pt_make_query_show_table(PARSER_CONTEXT *parser, bool is_full_syntax, int like_where_syntax, PT_NODE *like_or_where_expr)
const char * au_user_name(void)
PT_NODE * pt_dbval_to_value(PARSER_CONTEXT *parser, const DB_VALUE *val)
void pt_mark_spec_list_for_update(PARSER_CONTEXT *parser, PT_NODE *statement)
static PT_NODE * pt_make_select_count_star(PARSER_CONTEXT *parser)
int pt_length_of_list(const PT_NODE *list)
struct parser_node::@132 flag
#define MSGCAT_SEMANTIC_ENUM_TYPE_DUPLICATE_VALUES
PT_NODE * object_parameter
DB_VALUE * pt_value_to_db(PARSER_CONTEXT *parser, PT_NODE *value)
PT_DATA_DEFAULT_INFO data_default
PT_NODE * pt_and(PARSER_CONTEXT *parser, const PT_NODE *arg1, const PT_NODE *arg2)
PT_HOST_VAR_INFO host_var
char * pt_chop_trailing_dots(PARSER_CONTEXT *parser, const char *msg)
#define PT_EXPR_INFO_INSTNUM_C
static PT_NODE * pt_resolve_showstmt_args_named(PARSER_CONTEXT *parser, const SHOWSTMT_NAMED_ARG *arg_infos, int arg_info_count, PT_NODE *args)
static int packing_heap_num_slot
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)
#define PT_EXPR_INFO_IS_FLAGED(e, f)
PT_NODE * pt_table_option(PARSER_CONTEXT *parser, const PT_TABLE_OPTION_TYPE option, PT_NODE *val)
#define PT_IS_NAME_NODE(n)
static HL_HEAPID * packing_heap
PT_NODE * parser_copy_tree_list(PARSER_CONTEXT *parser, PT_NODE *tree)
PT_NODE * pt_find_aggregate_functions_pre(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
static int pt_get_query_limit_from_orderby_for(PARSER_CONTEXT *parser, PT_NODE *orderby_for, DB_VALUE *upper_limit, bool *has_limit)
void tp_domain_free(TP_DOMAIN *dom)
DB_CONST_C_CHAR db_get_string(const DB_VALUE *value)
#define PT_ERRORmf(parser, node, setNo, msgNo, arg1)
int intl_identifier_upper(const char *src, char *dst)
#define DB_ENUM_ELEMENTS_MAX
#define QSTR_COMPARE(id, string1, size1, string2, size2, ti)
void db_destroy_ostk_heap(HL_HEAPID heap_id)
bool pt_name_equal(PARSER_CONTEXT *parser, const PT_NODE *name1, const PT_NODE *name2)
PT_NODE * pt_name(PARSER_CONTEXT *parser, const char *name)
PT_INSERT_VALUE_INFO insert_value
PT_NODE * pt_get_end_path_node(PT_NODE *node)
PT_NODE * pt_add_table_name_to_from_list(PARSER_CONTEXT *parser, PT_NODE *select, const char *table_name, const char *table_alias, const DB_AUTH auth_bypass)
PT_NODE * pt_insert_value(PARSER_CONTEXT *parser, PT_NODE *node)
bool pt_list_has_logical_nodes(PT_NODE *list)
static void pt_add_string_col_to_sel_list(PARSER_CONTEXT *parser, PT_NODE *select, const char *identifier_str, const char *col_alias)
static bool check_arg_valid(PARSER_CONTEXT *parser, const SHOWSTMT_NAMED_ARG *arg_meta, int arg_num, PT_NODE *val)