CUBRID Engine  latest
parser.h
Go to the documentation of this file.
1 /*
2  * Copyright 2008 Search Solution Corporation
3  * Copyright 2016 CUBRID Corporation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 
20 /*
21  * parser.h - Parser module functions
22  */
23 
24 #ifndef _PARSER_H_
25 #define _PARSER_H_
26 
27 #ident "$Id$"
28 
29 #include <stdio.h>
30 #include <stdarg.h>
31 #include "system.h"
32 #include "dbtype_def.h"
33 #include "parse_tree.h"
34 
35 #if defined (SERVER_MODE)
36 #error Does not belong to server module
37 #endif /* SERVER_MODE */
38 
39 #ifdef __cplusplus
40 extern "C"
41 {
42 #endif
43 
44 /* free_and_init routine */
45 #define mq_free_virtual_query_cache_and_init(virtual_query_cache) \
46  do \
47  { \
48  mq_free_virtual_query_cache ((virtual_query_cache)); \
49  (virtual_query_cache) = NULL; \
50  } \
51  while (0)
52 
53  typedef enum
55 
56  typedef enum view_handling
57  {
62  } VIEW_HANDLING;
63 
64  extern size_t json_table_column_count;
65 
66  extern PT_NODE **parser_main (PARSER_CONTEXT * p);
67  extern void parser_final (void);
68 
69  extern void parser_init_func_vectors (void);
70 
71  extern PARSER_CONTEXT *parser_create_parser (void);
73 
74  extern PT_NODE **parser_parse_string (PARSER_CONTEXT * parser, const char *buffer);
75  extern PT_NODE **parser_parse_string_with_escapes (PARSER_CONTEXT * parser, const char *buffer,
76  const bool no_escapes_strings);
77  extern PT_NODE **parser_parse_string_use_sys_charset (PARSER_CONTEXT * parser, const char *buffer);
78 #if defined(ENABLE_UNUSED_FUNCTION)
79  extern PT_NODE **parser_parse_binary (PARSER_CONTEXT * parser, const char *buffer, size_t size);
80 #endif
81 
82  extern PT_NODE **parser_parse_file (PARSER_CONTEXT * parser, FILE * file);
83 
86  extern PT_NODE *parser_init_node (PT_NODE * node, PT_NODE_TYPE node_type);
87  extern PT_NODE *parser_reinit_node (PT_NODE * node);
88  extern void parser_free_node_resources (PT_NODE * node);
89  extern void parser_free_node (const PARSER_CONTEXT * parser, PT_NODE * node);
90  extern void parser_free_tree (PARSER_CONTEXT * parser, PT_NODE * tree);
91  extern void parser_free_subtrees (PARSER_CONTEXT * parser, PT_NODE * tree);
92  extern void parser_clear_node (PARSER_CONTEXT * parser, PT_NODE * node);
93 
94  extern PT_NODE *pt_pop (PARSER_CONTEXT * parser);
95  extern int pt_push (PARSER_CONTEXT * parser, PT_NODE * q);
96  extern PT_NODE *pt_top (PARSER_CONTEXT * parser);
97 
98  extern PT_NODE *parser_copy_tree (PARSER_CONTEXT * parser, const PT_NODE * tree);
101  extern PT_NODE *parser_append_node (PT_NODE * node, PT_NODE * list);
102  extern PT_NODE *parser_append_node_or (PT_NODE * node, PT_NODE * list);
103  extern PT_NODE *pt_point (PARSER_CONTEXT * parser, const PT_NODE * tree);
104  extern PT_NODE *pt_point_l (PARSER_CONTEXT * parser, const PT_NODE * tree);
105  extern PT_NODE *pt_point_ref (PARSER_CONTEXT * parser, const PT_NODE * node);
106  extern PT_NODE *pt_pointer_stack_push (PARSER_CONTEXT * parser, PT_NODE * stack, PT_NODE * node);
107  extern PT_NODE *pt_pointer_stack_pop (PARSER_CONTEXT * parser, PT_NODE * stack, PT_NODE ** node);
108 
110  void *pre_argument, PT_NODE_WALK_FUNCTION post_function, void *post_argument);
112  void *pre_argument, PT_NODE_WALK_FUNCTION post_function, void *post_argument);
113  extern PT_NODE *pt_continue_walk (PARSER_CONTEXT * parser, PT_NODE * tree, void *arg, int *continue_walk);
114 
115  extern char *parser_print_tree (PARSER_CONTEXT * parser, const PT_NODE * node);
116  extern char *parser_print_tree_with_quotes (PARSER_CONTEXT * parser, const PT_NODE * node);
117  extern char *parser_print_function_index_expr (PARSER_CONTEXT * parser, const PT_NODE * expr);
118  extern char *parser_print_tree_list (PARSER_CONTEXT * parser, const PT_NODE * p);
119  extern char *pt_print_alias (PARSER_CONTEXT * parser, const PT_NODE * node);
120  extern char *pt_short_print (PARSER_CONTEXT * parser, const PT_NODE * p);
121  extern char *pt_short_print_l (PARSER_CONTEXT * parser, const PT_NODE * p);
122 
123  extern void *parser_alloc (const PARSER_CONTEXT * parser, const int length);
124  extern char *pt_append_string (const PARSER_CONTEXT * parser, const char *old_string, const char *new_tail);
125 
126  extern PARSER_VARCHAR *pt_append_bytes (const PARSER_CONTEXT * parser, PARSER_VARCHAR * old_bytes,
127  const char *new_tail, const int length);
129  const PARSER_VARCHAR * new_tail);
131  const char *new_tail);
132  extern PARSER_VARCHAR *pt_append_name (const PARSER_CONTEXT * parser, PARSER_VARCHAR * string, const char *name);
133  extern const unsigned char *pt_get_varchar_bytes (const PARSER_VARCHAR * string);
134  extern int pt_get_varchar_length (const PARSER_VARCHAR * string);
135 
136  extern PARSER_VARCHAR *pt_print_bytes (PARSER_CONTEXT * parser, const PT_NODE * node);
137  extern PARSER_VARCHAR *pt_print_bytes_l (PARSER_CONTEXT * parser, const PT_NODE * node);
139 #if defined(ENABLE_UNUSED_FUNCTION)
140  extern PARSER_VARCHAR *pt_print_class_name (PARSER_CONTEXT * parser, PT_NODE * p);
141 #endif
145  extern PARSER_VARCHAR *pt_print_db_value (PARSER_CONTEXT * parser, const struct db_value *val);
146 
147  extern char *pt_print_query_spec_no_list (PARSER_CONTEXT * parser, const PT_NODE * node);
148 
149  extern PT_NODE *pt_compile (PARSER_CONTEXT * parser, PT_NODE * volatile statement);
150 
152 
153  extern void pt_report_to_ersys (const PARSER_CONTEXT * parser, const PT_ERROR_TYPE error_type);
154 
155  extern void pt_record_error (PARSER_CONTEXT * parser, int stmt_no, int line_no, int col_no, const char *msg,
156  const char *context);
157 
158  extern void pt_frob_warning (PARSER_CONTEXT * parser, const PT_NODE * statement, const char *fmt, ...);
159 
160  extern void pt_frob_error (PARSER_CONTEXT * parser, const PT_NODE * statement, const char *fmt, ...);
161 
162  extern void pt_end_query (PARSER_CONTEXT * parser, QUERY_ID query_id_self);
163 
164  extern void pt_set_host_variables (PARSER_CONTEXT * parser, int count, DB_VALUE * values);
167  extern int pt_resolve_default_value (PARSER_CONTEXT * parser, PT_NODE * name);
168 
170  int *more_type_info_needed);
171 
172  extern PT_NODE *pt_spec_to_oid_attr (PARSER_CONTEXT * parser, PT_NODE * spec, VIEW_HANDLING how);
173  extern int pt_length_of_list (const PT_NODE * list);
174  extern int pt_length_of_select_list (PT_NODE * list, int hidden_col);
175  extern PT_NODE *pt_get_node_from_list (PT_NODE * list, int index);
176 
179  extern int pt_associate_label_with_value_check_reference (const char *label, DB_VALUE * val);
180  extern DB_VALUE *pt_find_value_of_label (const char *label);
181 #if defined(ENABLE_UNUSED_FUNCTION)
182  extern int pt_find_labels (DB_NAMELIST ** list);
183 #endif /* ENABLE_UNUSED_FUNCTION */
184  extern void pt_free_label_table (void);
185 
186  extern bool pt_is_reserved_word (const char *s);
187  extern bool pt_is_keyword (const char *s);
188  extern bool pt_is_const_expr_node (PT_NODE * node);
189 
193  extern PT_NODE *pt_add_row_classoid_name (PARSER_CONTEXT * parser, PT_NODE * statement, int server_op);
194 
195  extern PT_NODE *pt_class_pre_fetch (PARSER_CONTEXT * parser, PT_NODE * statement);
196 
197  extern PT_NODE *pt_compile_trigger_stmt (PARSER_CONTEXT * parser, const char *trigger_stmt, DB_OBJECT * class_op,
198  const char *name1, const char *name2);
199  extern int pt_exec_trigger_stmt (PARSER_CONTEXT * parser, PT_NODE * trigger_stmt, DB_OBJECT * object1,
200  DB_OBJECT * object2, DB_VALUE * result);
201 
202  extern DB_TYPE pt_type_enum_to_db (const PT_TYPE_ENUM dt);
203  extern PT_TYPE_ENUM pt_db_to_type_enum (const DB_TYPE t);
204  extern const char *pt_type_enum_to_db_domain_name (const PT_TYPE_ENUM t);
206  extern void pt_put_type_enum (PARSER_CONTEXT * parser, PT_NODE * node, PT_NODE * data_type);
207  extern bool pt_is_same_enum_data_type (PT_NODE * dt1, PT_NODE * dt2);
208  extern const char *pt_data_type_to_db_domain_name (const PT_NODE * dt);
209  extern DB_DOMAIN *pt_data_type_to_db_domain (PARSER_CONTEXT * parser, PT_NODE * dt, const char *class_name);
211  extern const char *pt_node_to_db_domain_name (PT_NODE * node);
212  extern DB_DOMAIN *pt_node_to_db_domain (PARSER_CONTEXT * parser, PT_NODE * node, const char *class_name);
213  extern DB_TYPE pt_node_to_db_type (PT_NODE * node);
214 
215  extern PT_NODE *pt_dbval_to_value (PARSER_CONTEXT * parser, const DB_VALUE * val);
218  PT_NODE ** el_types);
220  PT_NODE ** el_types);
221  extern DB_AUTH pt_auth_to_db_auth (const PT_NODE * auth);
222  extern DB_DOMAIN *pt_string_to_db_domain (const char *s, const char *class_name);
223 
224  extern DB_VALUE *pt_value_to_db (PARSER_CONTEXT * parser, PT_NODE * value);
225  extern void pt_data_type_init_value (const PT_NODE * node, DB_VALUE * value_out);
226 
227  extern int pt_coerce_value (PARSER_CONTEXT * parser, PT_NODE * src, PT_NODE * dest, PT_TYPE_ENUM desired_type,
228  PT_NODE * elem_type_list);
230  PT_TYPE_ENUM desired_type, PT_NODE * elem_type_list,
231  DB_DEFAULT_EXPR_TYPE default_expr_type);
232  extern PT_NODE *pt_wrap_with_cast_op (PARSER_CONTEXT * parser, PT_NODE * arg, PT_TYPE_ENUM new_type, int p, int s,
233  PT_NODE * desired_dt);
235  PT_NODE * set_data, bool for_collation);
236  extern int pt_wrap_select_list_with_cast_op (PARSER_CONTEXT * parser, PT_NODE * query, PT_TYPE_ENUM new_type, int p,
237  int s, PT_NODE * data_type, bool force_wrap);
238 
240 
242 
243  extern PT_NODE *pt_cnf (PARSER_CONTEXT * parser, PT_NODE * node);
244 
245  extern PT_NODE *pt_sort_in_desc_order (PT_NODE * vlist);
246 
247  extern void pt_add_type_to_set (PARSER_CONTEXT * parser, const PT_NODE * val, PT_NODE ** set);
248 
250  extern int pt_is_between_range_op (PT_OP_TYPE op);
251  extern int pt_is_comp_op (PT_OP_TYPE op);
252  extern PT_OP_TYPE pt_negate_op (PT_OP_TYPE op);
254  PT_OP_TYPE * between);
255  extern int pt_between_to_comp_op (PT_OP_TYPE between, PT_OP_TYPE * left, PT_OP_TYPE * right);
256 
258  extern bool pt_eval_path_expr (PARSER_CONTEXT * parser, PT_NODE * tree, DB_VALUE * val);
259  extern void pt_evaluate_tree (PARSER_CONTEXT * parser, PT_NODE * tree, DB_VALUE * db_values, int values_count);
261  int vals_cnt);
262  extern int pt_evaluate_db_value_expr (PARSER_CONTEXT * parser, PT_NODE * expr, PT_OP_TYPE op, DB_VALUE * arg1,
263  DB_VALUE * arg2, DB_VALUE * arg3, DB_VALUE * result, TP_DOMAIN * domain,
264  PT_NODE * o1, PT_NODE * o2, PT_NODE * o3, PT_MISC_TYPE qualifier);
265  extern int pt_evaluate_function_w_args (PARSER_CONTEXT * parser, FUNC_TYPE fcode, DB_VALUE * args[],
266  const int num_args, DB_VALUE * result);
267 
268  extern int pt_evaluate_function (PARSER_CONTEXT * parser, PT_NODE * func, DB_VALUE * dbval_res);
269 
270  extern bool pt_is_symmetric_op (PT_OP_TYPE op);
271 
273  extern PARSER_CONTEXT *mq_virtual_queries (DB_OBJECT * class_obj);
274 
276 
278 
279  extern PT_NODE *pt_count_input_markers (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
280  extern PT_NODE *pt_count_output_markers (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
281 
282  extern PT_NODE *pt_has_using_index_clause (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
283 
284  extern PT_NODE *meth_translate (PARSER_CONTEXT * parser, PT_NODE * volatile node);
285 
286  extern const char *pt_show_partition_type (PT_PARTITION_TYPE t);
287 
288  extern UINTPTR pt_find_id (PARSER_CONTEXT * parser, PT_NODE * node, UINTPTR id);
289 
290 #if defined(ENABLE_UNUSED_FUNCTION)
291  extern int pt_identifier_or_keyword (const char *text);
292 #endif /* ENABLE_UNUSED_FUNCTION */
293  extern KEYWORD_RECORD *pt_get_keyword_rec (int *rec_count);
294  extern int pt_type_generic_func (PARSER_CONTEXT * parser, PT_NODE * node);
295 #if defined(ENABLE_UNUSED_FUNCTION)
296  extern void pt_string_to_data_type (PARSER_CONTEXT * parser, const char *s, PT_NODE * node);
297  extern const char *pt_show_alter (PT_ALTER_CODE c);
298 #endif /* ENABLE_UNUSED_FUNCTION */
299 
300  extern const char *pt_show_binopcode (PT_OP_TYPE n); /* printable opcode */
301  extern const char *pt_show_type_enum (PT_TYPE_ENUM t);
302  extern const char *pt_show_misc_type (PT_MISC_TYPE p); /* return misc_type */
303  extern const char *pt_show_node_type (PT_NODE * p); /* return node_type */
304  extern const char *pt_show_priv (PT_PRIV_TYPE t);
305 
306  extern PT_NODE *pt_lambda_with_arg (PARSER_CONTEXT * parser_ptr, PT_NODE * expression, PT_NODE * name,
307  PT_NODE * named_expression, bool loc_check, int type, bool dont_replace);
308  extern PT_NODE *pt_lambda (PARSER_CONTEXT * parser_ptr, PT_NODE * expression, PT_NODE * name,
309  PT_NODE * named_expression);
310 
311  extern int pt_quick_resolve_names (PARSER_CONTEXT * parser, PT_NODE ** spec, PT_NODE ** node,
312  SEMANTIC_CHK_INFO * sc_info);
313 
314  extern PT_NODE *pt_resolve_names (PARSER_CONTEXT * parser, PT_NODE * statement, SEMANTIC_CHK_INFO * sc_info);
315  extern PT_NODE *pt_resolve_cte_specs (PARSER_CONTEXT * parser, PT_NODE * stmt, void *arg, int *continue_walk);
316 
318 
319  extern int pt_get_correlation_level (PT_NODE * node);
320 
321  extern PT_NODE *pt_get_subquery_list (PT_NODE * node);
322  extern int pt_get_expression_number (PT_NODE * node);
323  extern void pt_select_list_to_one_col (PARSER_CONTEXT * parser, PT_NODE * node, bool do_one);
325  extern int pt_null_where (PARSER_CONTEXT * parser, PT_NODE * node);
326  extern PT_TYPE_ENUM pt_common_type (PT_TYPE_ENUM arg1_type, PT_TYPE_ENUM arg2_type);
327 
328  extern int pt_get_one_tuple_from_list_id (PARSER_CONTEXT * parser, PT_NODE * tree, struct db_value *vals, int cnt);
329 
330  extern PT_NODE *pt_add_class_to_entity_list (PARSER_CONTEXT * r, struct db_object *db, PT_NODE * entity,
331  const PT_NODE * parent, UINTPTR id, PT_MISC_TYPE meta_class);
332 
333  extern int pt_check_same_datatype (const PARSER_CONTEXT * parser, const PT_NODE * p, const PT_NODE * q);
334 
335  extern int pt_check_unique_names (PARSER_CONTEXT * parser, const PT_NODE * p);
336 
338  extern int pt_check_set_count_set (PARSER_CONTEXT * parser, PT_NODE * arg1, PT_NODE * arg2);
339  extern int pt_get_expression_count (PT_NODE * node);
340 
341  extern int pt_validate_query_spec (PARSER_CONTEXT * parser, PT_NODE * s, struct db_object *c);
342  extern PT_NODE *mq_regenerate_if_ambiguous (PARSER_CONTEXT * parser, PT_NODE * spec, PT_NODE * statement,
343  PT_NODE * from);
344  extern PT_NODE *pt_do_cnf (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
345  extern PT_NODE *pt_find_entity (PARSER_CONTEXT * parser, const PT_NODE * scope, UINTPTR id);
346  extern int pt_find_var (PT_NODE * p, PT_NODE ** result);
347  extern PT_NODE *pt_dump (PT_NODE * node);
348  extern MISC_OPERAND pt_misc_to_qp_misc_operand (PT_MISC_TYPE misc_specifier);
349  extern void pt_report_to_ersys_with_statement (PARSER_CONTEXT * parser, const PT_ERROR_TYPE error_type,
350  PT_NODE * statement);
351  extern PT_NODE **pt_init_one_statement_parser (PARSER_CONTEXT * parser, FILE * file);
352 
353  extern void pt_resolve_object (PARSER_CONTEXT * parser, PT_NODE * node);
354  extern int pt_resolved (const PT_NODE * expr);
355  extern bool pt_false_where (PARSER_CONTEXT * parser, PT_NODE * statement);
356  extern PT_NODE *pt_where_type (PARSER_CONTEXT * parser, PT_NODE * where);
358  extern bool pt_false_search_condition (PARSER_CONTEXT * parser, const PT_NODE * statement);
359  extern const char *mq_generate_name (PARSER_CONTEXT * parser, const char *root, int *version);
360  extern int mq_is_real_class_of_vclass (PARSER_CONTEXT * parser, const PT_NODE * s_class, const PT_NODE * d_class);
364  extern void *pt_internal_error (PARSER_CONTEXT * parser, const char *file, int line, const char *what);
365 #if defined (ENABLE_UNUSED_FUNCTION)
366  extern void pt_void_internal_error (PARSER_CONTEXT * parser, const char *file, int line, const char *what);
367 #endif
370  extern PT_NODE *pt_flat_spec_pre (PARSER_CONTEXT * parser, PT_NODE * p, void *scope, int *continue_walk);
373  extern PT_NODE *pt_remove_from_list (PARSER_CONTEXT * parser, PT_NODE * node, PT_NODE * list);
374  extern int pt_check_path_eq (PARSER_CONTEXT * parser, const PT_NODE * p, const PT_NODE * q);
375  extern int pt_check_class_eq (PARSER_CONTEXT * parser, PT_NODE * p, PT_NODE * q);
376 
379  const int include_oid, bool want_spec_entity_name,
380  bool fixup_columns_type);
381  extern void pt_free_query_etc_area (PARSER_CONTEXT * parser, PT_NODE * query);
383  DB_ATTRIBUTE *db_get_attribute_force (DB_OBJECT * obj, const char *name);
385 
386  extern PT_NODE *pt_set_is_view_spec (PARSER_CONTEXT * parser, PT_NODE * node, void *dummy, int *continue_walk);
387 
388  extern PT_NODE *pt_resolve_star (PARSER_CONTEXT * parser, PT_NODE * from, PT_NODE * attr);
389 
390  extern PT_NODE *pt_bind_param_node (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
391  extern int pt_statement_have_methods (PARSER_CONTEXT * parser, PT_NODE * statement);
392  extern int pt_str_compare (const char *p, const char *q, CASE_SENSITIVENESS case_flag);
393 
394  extern void pt_to_regu_resolve_domain (int *p_precision, int *p_scale, const PT_NODE * node);
395  extern PT_NODE *pt_make_prim_data_type_fortonum (PARSER_CONTEXT * parser, int prec, int scale);
397 
398  extern int pt_find_attribute (PARSER_CONTEXT * parser, const PT_NODE * name, const PT_NODE * attributes);
399 
400  extern PT_NODE *pt_make_string_value (PARSER_CONTEXT * parser, const char *value_string);
401 
402  extern PT_NODE *pt_make_integer_value (PARSER_CONTEXT * parser, const int value_int);
403 
404  extern PT_NODE *pt_and (PARSER_CONTEXT * parser_ptr, const PT_NODE * expression1, const PT_NODE * expression2);
405  extern PT_NODE *pt_union (PARSER_CONTEXT * parser_ptr, PT_NODE * expression1, PT_NODE * expression2);
406  extern PT_NODE *pt_name (PARSER_CONTEXT * parser_ptr, const char *name);
408  extern PT_NODE *pt_expression (PARSER_CONTEXT * parser_ptr, PT_OP_TYPE op, PT_NODE * arg1, PT_NODE * arg2,
409  PT_NODE * arg3);
410  extern PT_NODE *pt_expression_0 (PARSER_CONTEXT * parser_ptr, PT_OP_TYPE op);
411  extern PT_NODE *pt_expression_1 (PARSER_CONTEXT * parser_ptr, PT_OP_TYPE op, PT_NODE * arg1);
412  extern PT_NODE *pt_expression_2 (PARSER_CONTEXT * parser_ptr, PT_OP_TYPE op, PT_NODE * arg1, PT_NODE * arg2);
413  extern PT_NODE *pt_expression_3 (PARSER_CONTEXT * parser_ptr, PT_OP_TYPE op, PT_NODE * arg1, PT_NODE * arg2,
414  PT_NODE * arg3);
415  extern PT_NODE *pt_node_list (PARSER_CONTEXT * parser_ptr, PT_MISC_TYPE list_type, PT_NODE * list);
416  extern PT_NODE *pt_entity (PARSER_CONTEXT * parser, const PT_NODE * entity_name, const PT_NODE * range_var,
417  const PT_NODE * flat_list);
418  extern PT_NODE *pt_tuple_value (PARSER_CONTEXT * parser, PT_NODE * name, CURSOR_ID * cursor_p, int index);
420  extern bool pt_name_equal (PARSER_CONTEXT * parser, const PT_NODE * name1, const PT_NODE * name2);
421  extern PT_NODE *pt_find_name (PARSER_CONTEXT * parser, const PT_NODE * name, const PT_NODE * list);
422  extern bool pt_is_aggregate_function (PARSER_CONTEXT * parser, const PT_NODE * node);
423  extern bool pt_is_analytic_function (PARSER_CONTEXT * parser, const PT_NODE * node);
424  extern bool pt_is_expr_wrapped_function (PARSER_CONTEXT * parser, const PT_NODE * node);
425  extern PT_NODE *pt_find_spec (PARSER_CONTEXT * parser, const PT_NODE * from, const PT_NODE * name);
426  extern PT_NODE *pt_find_spec_in_statement (PARSER_CONTEXT * parser, const PT_NODE * stmt, const PT_NODE * name);
427  extern PT_NODE *pt_find_aggregate_names (PARSER_CONTEXT * parser, PT_NODE * tree, void *arg, int *continue_walk);
429  int *continue_walk);
431  int *continue_walk);
432  extern PT_NODE *pt_is_analytic_node (PARSER_CONTEXT * parser, PT_NODE * tree, void *arg, int *continue_walk);
433  extern PT_NODE *pt_has_non_idx_sarg_coll_pre (PARSER_CONTEXT * parser, PT_NODE * tree, void *arg, int *continue_walk);
434  extern PT_NODE *pt_is_analytic_node_post (PARSER_CONTEXT * parser, PT_NODE * tree, void *arg, int *continue_walk);
436  int *continue_walk);
438  int *continue_walk);
439  extern PT_NODE *pt_is_pseudocolumn_node (PARSER_CONTEXT * parser, PT_NODE * tree, void *arg, int *continue_walk);
440  extern PT_NODE *pt_add_table_name_to_from_list (PARSER_CONTEXT * parser, PT_NODE * select, const char *table_name,
441  const char *table_alias, const DB_AUTH auth_bypass);
442 
443  extern int pt_is_ddl_statement (const PT_NODE * node);
444  extern int pt_is_method_call (PT_NODE * node);
445  extern int pt_is_attr (PT_NODE * node);
446  extern int pt_is_function_index_expression (PT_NODE * node);
447 
448  extern int pt_instnum_compatibility (PT_NODE * expr);
449  extern int pt_groupbynum_compatibility (PT_NODE * expr);
450  extern PT_NODE *pt_check_instnum_pre (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
451  extern PT_NODE *pt_check_instnum_post (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
452  extern PT_NODE *pt_check_groupbynum_pre (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
453  extern PT_NODE *pt_check_groupbynum_post (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
454  extern PT_NODE *pt_check_orderbynum_pre (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
455  extern PT_NODE *pt_check_orderbynum_post (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
456  extern PT_NODE *pt_expr_disallow_op_pre (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
457  extern void pt_check_level_expr (PARSER_CONTEXT * parser, PT_NODE * expr, bool * has_greater, bool * has_lesser);
458  extern PT_NODE *pt_check_subquery_pre (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
459  extern PT_NODE *pt_check_subquery_post (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
460 
461 #if defined (ENABLE_UNUSED_FUNCTION)
462  extern PT_NODE *pt_assignments_part (const PT_NODE * update_statement);
463  extern PT_NODE *pt_class_names_part (const PT_NODE * stmt);
464 #endif
465  extern PT_NODE *pt_attrs_part (const PT_NODE * insert_statement);
466  extern PT_NODE *pt_left_part (const PT_NODE * expr);
467  extern PT_NODE *pt_from_list_part (const PT_NODE * node);
468 #if defined (ENABLE_UNUSED_FUNCTION)
469  extern PT_NODE *pt_arg1_part (const PT_NODE * node);
470  extern PT_NODE *pt_arg2_part (const PT_NODE * node);
471  extern PT_NODE *pt_order_by_part (const PT_NODE * node);
472  extern PT_NODE *pt_group_by_part (const PT_NODE * node);
473  extern PT_NODE *pt_having_part (const PT_NODE * node);
474 #endif
475  extern PT_NODE *pt_from_entity_part (const PT_NODE * node);
476  extern PT_NODE *pt_class_part (const PT_NODE * statement);
477 #if defined (ENABLE_UNUSED_FUNCTION)
478  extern void *pt_object_part (const PT_NODE * name_node);
479  extern int pt_operator_part (const PT_NODE * expr);
480  extern const char *pt_qualifier_part (const PT_NODE * tbl);
481 #endif
482  extern PT_NODE *pt_right_part (const PT_NODE * expr);
483  extern PT_NODE *pt_get_end_path_node (PT_NODE * node);
485  extern const char *pt_string_part (const PT_NODE * tbl);
486  extern PT_NODE *pt_values_part (const PT_NODE * insert_statement);
487  extern PT_NODE *pt_get_subquery_of_insert_select (const PT_NODE * insert_statement);
488 #if defined (ENABLE_UNUSED_FUNCTION)
489  extern PT_NODE *pt_select_list_part (const PT_NODE * stmt);
490  extern PT_NODE *pt_where_part (const PT_NODE * stmt);
491  extern void pt_set_node_etc (PT_NODE * node, const void *etc);
492 #endif
493  extern void pt_split_join_preds (PARSER_CONTEXT * parser, PT_NODE * predicates, PT_NODE ** join_part,
494  PT_NODE ** after_cb_filter);
495 
496  extern void pt_null_etc (PT_NODE * node);
497  extern void *pt_node_etc (const PT_NODE * col);
498  extern PT_NODE *pt_node_next (const PT_NODE * node);
499 
500 
501  extern void pt_record_warning (PARSER_CONTEXT * parser, int stmt_no, int line_no, int col_no, const char *msg);
502  extern PT_NODE *pt_get_warnings (const PARSER_CONTEXT * parser);
504 
505  extern PT_NODE *pt_get_next_error (PT_NODE * errors, int *stmt_no, int *line_no, int *col_no, const char **msg);
506  extern void pt_reset_error (PARSER_CONTEXT * parser);
507 #define pt_has_error(parser) ( (parser) && ((parser)->error_msgs || (parser)->flag.has_internal_error))
508 
509 #if defined (ENABLE_UNUSED_FUNCTION)
510  extern bool pt_column_updatable (PARSER_CONTEXT * parser, PT_NODE * query);
511 #endif
512  extern int pt_statement_line_number (const PT_NODE * stmt);
513 
514  extern const char *pt_get_select_from_name (PARSER_CONTEXT * parser, const PT_NODE * spec);
515  extern const char *pt_get_proxy_spec_name (const char *qspec);
516  extern const char *pt_get_spec_name (PARSER_CONTEXT * parser, const PT_NODE * selqry);
517  extern const char *pt_get_name (PT_NODE * nam);
518  extern PT_NODE *pt_get_cursor (const PT_HOST_VARS * hv);
519  extern PT_NODE *pt_get_parameters (PARSER_CONTEXT * parser, PT_NODE * statement);
520 
521  extern bool pt_has_aggregate (PARSER_CONTEXT * parser, PT_NODE * node);
522  extern bool pt_has_analytic (PARSER_CONTEXT * parser, PT_NODE * node);
524 
525  extern void pt_preset_hostvar (PARSER_CONTEXT * parser, PT_NODE * hv_node);
526  extern void pt_set_expected_domain (PT_NODE * node, TP_DOMAIN * domain);
527  extern int pt_host_var_index (const PT_NODE * hv);
528  extern PT_NODE *pt_get_input_host_vars (const PT_HOST_VARS * hv);
529 #if defined (ENABLE_UNUSED_FUNCTION)
530  extern PT_NODE *pt_get_output_host_descr (PT_HOST_VARS * hv);
531 #endif
532  extern PT_NODE *pt_get_output_host_vars (const PT_HOST_VARS * hv);
534  extern void pt_free_host_info (PT_HOST_VARS * hv);
535 
536  extern void pt_set_update_object (PARSER_CONTEXT * parser, PT_NODE * node);
537 
538  extern char *pt_chop_trailing_dots (PARSER_CONTEXT * parser, const char *msg);
539 
540  extern void pt_register_orphan (PARSER_CONTEXT * parser, const PT_NODE * orphan);
541  extern void pt_register_orphan_db_value (PARSER_CONTEXT * parser, const DB_VALUE * orphan);
542  extern void pt_free_orphans (PARSER_CONTEXT * parser);
543 
544  extern bool pt_sort_spec_cover (PT_NODE * cur_list, PT_NODE * new_list);
546  PT_NODE * tree);
547 
548  extern int dbcs_get_next (PARSER_CONTEXT * parser);
549  extern void dbcs_start_input (void);
550 
552 
554  bool is_gby_num);
556  extern void pt_copy_statement_flags (PT_NODE * source, PT_NODE * destination);
557  extern void pt_set_fill_default_in_path_expression (PT_NODE * node);
558  extern PT_NODE *pt_dup_key_update_stmt (PARSER_CONTEXT * parser, PT_NODE * spec, PT_NODE * assignment);
559  extern int pt_get_dup_key_oid_var_index (PARSER_CONTEXT * parser, PT_NODE * update_statement);
560  extern int pt_is_reference_to_reusable_oid (DB_VALUE * val);
561  extern int pt_get_select_query_columns (PARSER_CONTEXT * parser, PT_NODE * create_select,
562  DB_QUERY_TYPE ** query_columns);
563  void pt_fixup_column_type (PT_NODE * col);
564  extern int pt_node_list_to_array (PARSER_CONTEXT * parser, PT_NODE * arg_list, PT_NODE * arg_array[],
565  const int array_size, int *num_args);
566  extern int pt_check_order_by (PARSER_CONTEXT * parser, PT_NODE * query);
567  extern void qo_do_auto_parameterize (PARSER_CONTEXT * parser, PT_NODE * where);
568 
569  extern PT_NODE *pt_make_query_show_table (PARSER_CONTEXT * parser, bool is_full_syntax, int like_where_syntax,
570  PT_NODE * like_or_where_expr);
571  extern PT_NODE *pt_make_query_showstmt (PARSER_CONTEXT * parser, unsigned int type, PT_NODE * args,
572  int like_where_syntax, PT_NODE * where_cond);
573  extern PT_NODE *pt_make_query_show_columns (PARSER_CONTEXT * parser, PT_NODE * original_cls_id, int like_where_syntax,
574  PT_NODE * like_or_where_expr, int is_show_full);
576  extern PT_NODE *pt_make_query_show_create_view (PARSER_CONTEXT * parser, PT_NODE * view_identifier);
578  extern PT_NODE *pt_make_query_show_grants (PARSER_CONTEXT * parser, const char *original_user_name);
580  PT_NODE * att_id);
581  extern PT_NODE *pt_make_query_show_index (PARSER_CONTEXT * parser, PT_NODE * original_cls_id);
585  PT_NODE * arg3);
586  extern PT_NODE *parser_keyword_func (const char *name, PT_NODE * args);
587 
588  extern PT_NODE *pt_convert_to_logical_expr (PARSER_CONTEXT * parser, PT_NODE * node, bool use_parens_inside,
589  bool use_parens_outside);
590  extern bool pt_is_operator_logical (PT_OP_TYPE op);
591  extern bool pt_list_has_logical_nodes (PT_NODE * list);
592  extern bool pt_is_pseudo_const (PT_NODE * expr);
593  extern bool pt_is_op_hv_late_bind (PT_OP_TYPE op);
595  extern void pt_mark_spec_list_for_update (PARSER_CONTEXT * parser, PT_NODE * statement);
596  extern void pt_mark_spec_list_for_delete (PARSER_CONTEXT * parser, PT_NODE * statement);
598  PT_NODE * assignment);
600  extern int pt_count_assignments (PARSER_CONTEXT * parser, PT_NODE * assignments);
601  extern void pt_restore_assignment_links (PT_NODE * assigns, PT_NODE ** links, int count);
602  extern int pt_get_assignment_lists (PARSER_CONTEXT * parser, PT_NODE ** select_names, PT_NODE ** select_values,
603  PT_NODE ** const_names, PT_NODE ** const_values, int *no_vals, int *no_consts,
604  PT_NODE * assign, PT_NODE *** old_links);
605 
606  extern bool pt_is_function_index_expr (PARSER_CONTEXT * parser, PT_NODE * expr, bool report_error);
609  extern bool pt_is_join_expr (PT_NODE * expr, UINTPTR * spec_id);
611 
612  extern DB_OBJECT *pt_resolve_serial (PARSER_CONTEXT * parser, PT_NODE * serial_name_node);
613  extern int pt_check_grammar_charset_collation (PARSER_CONTEXT * parser, PT_NODE * charset_node, PT_NODE * coll_node,
614  int *charset, int *coll_id);
615  extern bool pt_get_collation_info (const PT_NODE * node, PT_COLL_INFER * coll_infer);
616  extern int pt_common_collation (PT_COLL_INFER * arg1_coll_infer, PT_COLL_INFER * arg2_coll_infer,
617  PT_COLL_INFER * arg3_coll_infer, const int args_w_coll, bool op_has_3_args,
618  int *common_coll, INTL_CODESET * common_cs);
619  extern PT_NODE *pt_coerce_node_collation (PARSER_CONTEXT * parser, PT_NODE * node, const int coll_id,
620  const INTL_CODESET codeset, bool force_mode, bool use_collate_modifier,
621  PT_TYPE_ENUM wrap_type_for_maybe, PT_TYPE_ENUM wrap_type_collection);
622  extern PT_NODE *pt_make_tuple_value_reference (PARSER_CONTEXT * parser, PT_NODE * name, PT_NODE * select_list,
623  CURSOR_ID * cursor_p);
624  extern PT_NODE *pt_make_query_show_collation (PARSER_CONTEXT * parser, int like_where_syntax,
625  PT_NODE * like_or_where_expr);
626 
627  extern PT_NODE *pt_find_node_type_pre (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
628  extern PT_NODE *pt_find_op_type_pre (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
629  extern int pt_get_query_limit_value (PARSER_CONTEXT * parser, PT_NODE * query, DB_VALUE * limit_val);
630  extern bool pt_check_ordby_num_for_multi_range_opt (PARSER_CONTEXT * parser, PT_NODE * query, bool * mro_candidate,
631  bool * cannot_eval);
632 
633  extern int pt_split_delete_stmt (PARSER_CONTEXT * parser, PT_NODE * delete_stmt);
634 
635  extern const char *pt_partition_name (PARSER_CONTEXT * parser, const char *class_name, const char *partition);
636  extern void pt_free_statement_xasl_id (PT_NODE * statement);
638  extern bool pt_recompile_for_limit_optimizations (PARSER_CONTEXT * parser, PT_NODE * statement, int xasl_flag);
639 
641 
642  extern void insert_rewrite_names_in_value_clauses (PARSER_CONTEXT * parser, PT_NODE * insert_statement);
643  extern int pt_name_occurs_in_from_list (PARSER_CONTEXT * parser, const char *name, PT_NODE * from_list);
646 
648  int *continue_walk);
650  DB_DEFAULT_EXPR * default_expr);
651  extern PT_NODE *pt_has_name_oid (PARSER_CONTEXT * parser, PT_NODE * node, void *arg, int *continue_walk);
652 #ifdef __cplusplus
653 }
654 #endif
655 
656 #if defined __cplusplus
657 extern void pt_move_node (REFPTR (PT_NODE, destp), REFPTR (PT_NODE, srcp));
658 #endif // c++
659 
660 #endif /* _PARSER_H_ */
PT_NODE * pt_bind_values_to_hostvars(PARSER_CONTEXT *parser, PT_NODE *node)
PT_NODE * pt_flat_spec_pre(PARSER_CONTEXT *parser, PT_NODE *p, void *scope, int *continue_walk)
int pt_push(PARSER_CONTEXT *parser, PT_NODE *q)
PT_NODE * pt_name(PARSER_CONTEXT *parser_ptr, const char *name)
PT_NODE * pt_coerce_node_collation(PARSER_CONTEXT *parser, PT_NODE *node, const int coll_id, const INTL_CODESET codeset, bool force_mode, bool use_collate_modifier, PT_TYPE_ENUM wrap_type_for_maybe, PT_TYPE_ENUM wrap_type_collection)
PT_NODE * pt_find_aggregate_names(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
int pt_get_varchar_length(const PARSER_VARCHAR *string)
Definition: parse_tree.c:1106
PT_NODE * meth_translate(PARSER_CONTEXT *parser, PT_NODE *volatile node)
DB_VALUE * pt_set_value_to_db(PARSER_CONTEXT *parser, PT_NODE **values, DB_VALUE *db_value, PT_NODE **el_types)
Definition: parse_dbi.c:1033
PT_NODE * pt_find_spec_in_statement(PARSER_CONTEXT *parser, const PT_NODE *stmt, const PT_NODE *name)
void pt_record_warning(PARSER_CONTEXT *parser, int stmt_no, int line_no, int col_no, const char *msg)
int pt_associate_label_with_value_check_reference(const char *label, DB_VALUE *val)
void mq_free_virtual_query_cache(PARSER_CONTEXT *parser)
void parser_init_func_vectors(void)
void parser_free_subtrees(PARSER_CONTEXT *parser, PT_NODE *tree)
int pt_host_var_index(const PT_NODE *hv)
bool pt_recompile_for_limit_optimizations(PARSER_CONTEXT *parser, PT_NODE *statement, int xasl_flag)
bool pt_eval_path_expr(PARSER_CONTEXT *parser, PT_NODE *tree, DB_VALUE *val)
bool pt_is_aggregate_function(PARSER_CONTEXT *parser, const PT_NODE *node)
bool pt_is_function_index_expr(PARSER_CONTEXT *parser, PT_NODE *expr, bool report_error)
PT_NODE * pt_check_orderbynum_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
bool pt_is_keyword(const char *s)
Definition: keyword.c:724
int pt_name_occurs_in_from_list(PARSER_CONTEXT *parser, const char *name, PT_NODE *from_list)
Definition: compile.c:1545
PT_NODE * pt_make_query_show_index(PARSER_CONTEXT *parser, PT_NODE *original_cls_id)
void parser_free_node(const PARSER_CONTEXT *parser, PT_NODE *node)
Definition: parse_tree.c:869
bool pt_is_pseudo_const(PT_NODE *expr)
Definition: query_graph.c:3655
void pt_mark_spec_list_for_delete(PARSER_CONTEXT *parser, PT_NODE *statement)
PT_NODE * pt_resolve_using_index(PARSER_CONTEXT *parser, PT_NODE *index, PT_NODE *from)
PT_NODE * pt_expression_0(PARSER_CONTEXT *parser_ptr, PT_OP_TYPE op)
PT_NODE * parser_keyword_func(const char *name, PT_NODE *args)
int pt_instnum_compatibility(PT_NODE *expr)
int pt_check_enum_data_type(PARSER_CONTEXT *parser, PT_NODE *dt)
void pt_data_type_init_value(const PT_NODE *node, DB_VALUE *value_out)
Definition: parse_dbi.c:1264
DB_OBJECT * pt_find_users_class(PARSER_CONTEXT *parser, PT_NODE *name)
bool pt_is_analytic_function(PARSER_CONTEXT *parser, const PT_NODE *node)
PT_NODE * parser_reinit_node(PT_NODE *node)
DB_VALUE * pt_find_value_of_label(const char *label)
PT_NODE * pt_node_next(const PT_NODE *node)
DB_QUERY_RESULT * pt_make_cache_hit_result_descriptor(void)
int pt_comp_to_between_op(PT_OP_TYPE left, PT_OP_TYPE right, PT_COMP_TO_BETWEEN_OP_CODE_TYPE code, PT_OP_TYPE *between)
void pt_frob_warning(PARSER_CONTEXT *parser, const PT_NODE *statement, const char *fmt,...)
void pt_register_orphan_db_value(PARSER_CONTEXT *parser, const DB_VALUE *orphan)
PT_NODE * parser_append_node_or(PT_NODE *node, PT_NODE *list)
PT_MISC_TYPE
Definition: parse_tree.h:983
void pt_report_to_ersys_with_statement(PARSER_CONTEXT *parser, const PT_ERROR_TYPE error_type, PT_NODE *statement)
Definition: query_result.c:338
PT_NODE * pt_dump(PT_NODE *node)
PT_OP_TYPE pt_op_type_from_default_expr(DB_DEFAULT_EXPR_TYPE expr_type)
int pt_length_of_select_list(PT_NODE *list, int hidden_col)
PT_NODE ** parser_parse_string_with_escapes(PARSER_CONTEXT *parser, const char *buffer, const bool no_escapes_strings)
DB_TYPE
Definition: dbtype_def.h:670
PT_NODE * pt_pointer_stack_pop(PARSER_CONTEXT *parser, PT_NODE *stack, PT_NODE **node)
PT_NODE * pt_get_warnings(const PARSER_CONTEXT *parser)
void pt_record_error(PARSER_CONTEXT *parser, int stmt_no, int line_no, int col_no, const char *msg, const char *context)
const unsigned char * pt_get_varchar_bytes(const PARSER_VARCHAR *string)
Definition: parse_tree.c:1089
CASE_SENSITIVENESS
Definition: parser.h:53
int pt_get_select_query_columns(PARSER_CONTEXT *parser, PT_NODE *create_select, DB_QUERY_TYPE **query_columns)
char * parser_print_tree(PARSER_CONTEXT *parser, const PT_NODE *node)
int pt_node_list_to_array(PARSER_CONTEXT *parser, PT_NODE *arg_list, PT_NODE *arg_array[], const int array_size, int *num_args)
bool pt_is_op_hv_late_bind(PT_OP_TYPE op)
const char * pt_node_to_db_domain_name(PT_NODE *node)
Definition: parse_dbi.c:2224
int pt_is_comp_op(PT_OP_TYPE op)
void pt_no_double_updates(PARSER_CONTEXT *parser, PT_NODE *stmt)
DB_OBJECT * pt_resolve_serial(PARSER_CONTEXT *parser, PT_NODE *serial_name_node)
PT_NODE * pt_from_list_part(const PT_NODE *node)
PT_NODE * pt_get_select_list(PARSER_CONTEXT *parser, PT_NODE *query)
Definition: query_result.c:404
PT_NODE * pt_make_prim_data_type_fortonum(PARSER_CONTEXT *parser, int prec, int scale)
PT_NODE * pt_has_using_index_clause(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
void pt_reset_error(PARSER_CONTEXT *parser)
enum pt_type_enum PT_TYPE_ENUM
Definition: parse_tree.h:962
void qo_do_auto_parameterize(PARSER_CONTEXT *parser, PT_NODE *where)
char * pt_short_print(PARSER_CONTEXT *parser, const PT_NODE *p)
PT_NODE * pt_point(PARSER_CONTEXT *parser, const PT_NODE *tree)
void pt_move_node(REFPTR(PT_NODE, destp), REFPTR(PT_NODE, srcp))
void pt_check_level_expr(PARSER_CONTEXT *parser, PT_NODE *expr, bool *has_greater, bool *has_lesser)
PT_NODE * pt_expression_1(PARSER_CONTEXT *parser_ptr, PT_OP_TYPE op, PT_NODE *arg1)
FUNC_TYPE
int pt_is_ddl_statement(const PT_NODE *node)
PARSER_VARCHAR * pt_append_varchar(const PARSER_CONTEXT *parser, PARSER_VARCHAR *old_bytes, const PARSER_VARCHAR *new_tail)
Definition: parse_tree.c:1052
PT_NODE ** pt_init_one_statement_parser(PARSER_CONTEXT *parser, FILE *file)
PT_NODE * pt_entity(PARSER_CONTEXT *parser, const PT_NODE *entity_name, const PT_NODE *range_var, const PT_NODE *flat_list)
DB_ATTRIBUTE * db_get_attribute_force(DB_OBJECT *obj, const char *name)
PARSER_VARCHAR * pt_print_bytes_l(PARSER_CONTEXT *parser, const PT_NODE *node)
int mq_is_real_class_of_vclass(PARSER_CONTEXT *parser, const PT_NODE *s_class, const PT_NODE *d_class)
PT_NODE * pt_check_subquery_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_NODE ** parser_parse_string(PARSER_CONTEXT *parser, const char *buffer)
PT_NODE * pt_get_end_path_node(PT_NODE *node)
PT_NODE * pt_expression_2(PARSER_CONTEXT *parser_ptr, PT_OP_TYPE op, PT_NODE *arg1, PT_NODE *arg2)
PT_NODE * pt_right_part(const PT_NODE *expr)
int pt_get_assignment_lists(PARSER_CONTEXT *parser, PT_NODE **select_names, PT_NODE **select_values, PT_NODE **const_names, PT_NODE **const_values, int *no_vals, int *no_consts, PT_NODE *assign, PT_NODE ***old_links)
PT_NODE * pt_has_non_groupby_column_node(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PARSER_VARCHAR * pt_print_bytes(PARSER_CONTEXT *parser, const PT_NODE *node)
bool pt_false_search_condition(PARSER_CONTEXT *parser, const PT_NODE *statement)
PARSER_VARCHAR * pt_append_name(const PARSER_CONTEXT *parser, PARSER_VARCHAR *string, const char *name)
const char * pt_data_type_to_db_domain_name(const PT_NODE *dt)
Definition: parse_dbi.c:1655
PT_NODE * pt_expr_to_sort_spec(PARSER_CONTEXT *parser, PT_NODE *expr)
void pt_fixup_column_type(PT_NODE *col)
PT_ERROR_TYPE
Definition: parse_tree.h:1503
PT_ALTER_CODE
Definition: parse_tree.h:1224
int pt_get_correlation_level(PT_NODE *node)
PT_NODE * pt_bind_type_from_dbval(PARSER_CONTEXT *, PT_NODE *, DB_VALUE *)
Definition: parse_dbi.c:3067
PT_NODE * pt_append_query_select_list(PARSER_CONTEXT *parser, PT_NODE *query, PT_NODE *attrs)
PT_NODE ** parser_parse_file(PARSER_CONTEXT *parser, FILE *file)
const char * pt_string_part(const PT_NODE *tbl)
PT_NODE * pt_expression(PARSER_CONTEXT *parser_ptr, PT_OP_TYPE op, PT_NODE *arg1, PT_NODE *arg2, PT_NODE *arg3)
const char * pt_type_enum_to_db_domain_name(const PT_TYPE_ENUM t)
Definition: parse_dbi.c:1427
void pt_init_assignments_helper(PARSER_CONTEXT *parser, PT_ASSIGNMENTS_HELPER *helper, PT_NODE *assignment)
Definition: parse_tree.c:1336
PT_NODE * pt_count_output_markers(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
int pt_evaluate_function(PARSER_CONTEXT *parser, PT_NODE *func, DB_VALUE *dbval_res)
PT_NODE * pt_top(PARSER_CONTEXT *parser)
int pt_split_delete_stmt(PARSER_CONTEXT *parser, PT_NODE *delete_stmt)
PT_NODE * pt_is_inst_or_orderby_num_node(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
PT_NODE * pt_find_node_type_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_NODE * pt_make_query_show_grants_curr_usr(PARSER_CONTEXT *parser)
PT_NODE * pt_get_output_host_vars(const PT_HOST_VARS *hv)
DB_AUTH pt_auth_to_db_auth(const PT_NODE *auth)
Definition: parse_dbi.c:2539
const char * pt_show_priv(PT_PRIV_TYPE t)
int pt_null_where(PARSER_CONTEXT *parser, PT_NODE *node)
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)
PT_NODE * pt_point_l(PARSER_CONTEXT *parser, const PT_NODE *tree)
void pt_to_regu_resolve_domain(int *p_precision, int *p_scale, const PT_NODE *node)
DB_QUERY_RESULT * pt_new_query_result_descriptor(PARSER_CONTEXT *parser, PT_NODE *query)
const char * pt_get_name(PT_NODE *nam)
int pt_get_expression_count(PT_NODE *node)
PT_NODE * pt_get_errors(PARSER_CONTEXT *parser)
void pt_free_query_etc_area(PARSER_CONTEXT *parser, PT_NODE *query)
PT_NODE * parser_new_node(PARSER_CONTEXT *parser, PT_NODE_TYPE node)
PT_NODE * pt_has_name_oid(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_NODE * pt_dbval_to_value(PARSER_CONTEXT *parser, const DB_VALUE *val)
Definition: parse_dbi.c:574
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)
Definition: query_result.c:893
PT_NODE * pt_wrap_with_cast_op(PARSER_CONTEXT *parser, PT_NODE *arg, PT_TYPE_ENUM new_type, int p, int s, PT_NODE *desired_dt)
bool pt_false_where(PARSER_CONTEXT *parser, PT_NODE *statement)
int pt_coerce_value_for_default_value(PARSER_CONTEXT *parser, PT_NODE *src, PT_NODE *dest, PT_TYPE_ENUM desired_type, PT_NODE *elem_type_list, DB_DEFAULT_EXPR_TYPE default_expr_type)
bool pt_is_operator_logical(PT_OP_TYPE op)
PT_NODE * pt_spec_to_oid_attr(PARSER_CONTEXT *parser, PT_NODE *spec, VIEW_HANDLING how)
Definition: compile.c:101
PT_NODE * pt_wrap_collection_with_cast_op(PARSER_CONTEXT *parser, PT_NODE *arg, PT_TYPE_ENUM set_type, PT_NODE *set_data, bool for_collation)
void pt_set_host_variables(PARSER_CONTEXT *parser, int count, DB_VALUE *values)
Definition: parse_dbi.c:3086
int pt_get_expression_number(PT_NODE *node)
const char * pt_get_proxy_spec_name(const char *qspec)
int pt_length_of_list(const PT_NODE *list)
char * pt_short_print_l(PARSER_CONTEXT *parser, const PT_NODE *p)
void pt_evaluate_tree(PARSER_CONTEXT *parser, PT_NODE *tree, DB_VALUE *db_values, int values_count)
void pt_report_to_ersys(const PARSER_CONTEXT *parser, const PT_ERROR_TYPE error_type)
Definition: query_result.c:287
const char * mq_generate_name(PARSER_CONTEXT *parser, const char *root, int *version)
char * parser_print_tree_with_quotes(PARSER_CONTEXT *parser, const PT_NODE *node)
PT_NODE * pt_get_next_error(PT_NODE *errors, int *stmt_no, int *line_no, int *col_no, const char **msg)
PARSER_VARCHAR * pt_print_bytes_spec_list(PARSER_CONTEXT *parser, const PT_NODE *node)
int pt_wrap_select_list_with_cast_op(PARSER_CONTEXT *parser, PT_NODE *query, PT_TYPE_ENUM new_type, int p, int s, PT_NODE *data_type, bool force_wrap)
int pt_statement_have_methods(PARSER_CONTEXT *parser, PT_NODE *statement)
bool pt_list_has_logical_nodes(PT_NODE *list)
PT_NODE * mq_regenerate_if_ambiguous(PARSER_CONTEXT *parser, PT_NODE *spec, PT_NODE *statement, PT_NODE *from)
bool pt_is_symmetric_op(PT_OP_TYPE op)
void * pt_node_etc(const PT_NODE *col)
void pt_free_statement_xasl_id(PT_NODE *statement)
PT_NODE * pt_resolve_cte_specs(PARSER_CONTEXT *parser, PT_NODE *stmt, void *arg, int *continue_walk)
PT_NODE * parser_append_node(PT_NODE *node, PT_NODE *list)
int pt_check_grammar_charset_collation(PARSER_CONTEXT *parser, PT_NODE *charset_node, PT_NODE *coll_node, int *charset, int *coll_id)
PT_OP_TYPE pt_converse_op(PT_OP_TYPE op)
PT_NODE * pt_do_cnf(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
Definition: cnf.c:1191
PT_NODE ** parser_main(PARSER_CONTEXT *p)
PT_NODE * parser_copy_tree_list(PARSER_CONTEXT *parser, PT_NODE *tree)
PT_NODE * pt_lambda_with_arg(PARSER_CONTEXT *parser_ptr, PT_NODE *expression, PT_NODE *name, PT_NODE *named_expression, bool loc_check, int type, bool dont_replace)
void pt_get_default_expression_from_data_default_node(PARSER_CONTEXT *parser, PT_NODE *data_default_node, DB_DEFAULT_EXPR *default_expr)
PT_NODE * parser_make_expression(PARSER_CONTEXT *parser, PT_OP_TYPE OP, PT_NODE *arg1, PT_NODE *arg2, PT_NODE *arg3)
int pt_get_one_tuple_from_list_id(PARSER_CONTEXT *parser, PT_NODE *tree, struct db_value *vals, int cnt)
PT_NODE * pt_and(PARSER_CONTEXT *parser_ptr, const PT_NODE *expression1, const PT_NODE *expression2)
PT_NODE * pt_gather_constraints(PARSER_CONTEXT *parser, PT_NODE *tree)
bool pt_has_inst_or_orderby_num(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)
PT_NODE * parser_get_tree_list_diff(PARSER_CONTEXT *parser, PT_NODE *list1, PT_NODE *list2)
DB_DOMAIN * pt_node_to_db_domain(PARSER_CONTEXT *parser, PT_NODE *node, const char *class_name)
Definition: parse_dbi.c:2244
int errors
PT_NODE * pt_make_query_show_exec_stats_all(PARSER_CONTEXT *parser)
PT_NODE * pt_find_spec(PARSER_CONTEXT *parser, const PT_NODE *from, const PT_NODE *name)
PT_NODE * pt_check_groupbynum_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
char * pt_chop_trailing_dots(PARSER_CONTEXT *parser, const char *msg)
PT_NODE * pt_domain_to_data_type(PARSER_CONTEXT *parser, DB_DOMAIN *domain)
PT_NODE * pt_dup_key_update_stmt(PARSER_CONTEXT *parser, PT_NODE *spec, PT_NODE *assignment)
bool pt_sort_spec_cover_groupby(PARSER_CONTEXT *parser, PT_NODE *sort_list, PT_NODE *group_list, PT_NODE *tree)
PT_NODE * pt_where_type(PARSER_CONTEXT *parser, PT_NODE *where)
int pt_get_query_limit_value(PARSER_CONTEXT *parser, PT_NODE *query, DB_VALUE *limit_val)
PT_NODE * pt_rewrite_to_auto_param(PARSER_CONTEXT *parser, PT_NODE *value)
PT_TYPE_ENUM pt_db_to_type_enum(const DB_TYPE t)
Definition: parse_dbi.c:2595
PARSER_VARCHAR * pt_print_db_value(PARSER_CONTEXT *parser, const struct db_value *val)
PT_NODE * pt_continue_walk(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
PARSER_VARCHAR * pt_append_nulstring(const PARSER_CONTEXT *parser, PARSER_VARCHAR *old_bytes, const char *new_tail)
Definition: parse_tree.c:1072
PT_NODE * pt_check_subquery_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_NODE * pt_find_op_type_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
int pt_groupbynum_compatibility(PT_NODE *expr)
int pt_is_reference_to_reusable_oid(DB_VALUE *val)
PT_NODE * pt_resolve_names(PARSER_CONTEXT *parser, PT_NODE *statement, SEMANTIC_CHK_INFO *sc_info)
PT_NODE * pt_class_part(const PT_NODE *statement)
PT_NODE * pt_attrs_part(const PT_NODE *insert_statement)
void parser_free_tree(PARSER_CONTEXT *parser, PT_NODE *tree)
#define REFPTR(T, name)
Definition: porting.h:1089
PT_NODE * pt_check_orderbynum_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
void insert_rewrite_names_in_value_clauses(PARSER_CONTEXT *parser, PT_NODE *insert_statement)
PT_NODE * pt_is_inst_or_orderby_num_node_post(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
void pt_set_update_object(PARSER_CONTEXT *parser, PT_NODE *node)
PT_NODE * pt_insert_value(PARSER_CONTEXT *parser, PT_NODE *node)
bool pt_has_analytic(PARSER_CONTEXT *parser, PT_NODE *node)
PT_NODE * pt_make_string_value(PARSER_CONTEXT *parser, const char *value_string)
void dbcs_start_input(void)
PT_NODE * pt_resolve_star(PARSER_CONTEXT *parser, PT_NODE *from, PT_NODE *attr)
PT_NODE * pt_sort_spec_list_to_name_node_list(PARSER_CONTEXT *parser, PT_NODE *sort_spec_list)
int pt_exec_trigger_stmt(PARSER_CONTEXT *parser, PT_NODE *trigger_stmt, DB_OBJECT *object1, DB_OBJECT *object2, DB_VALUE *result)
Definition: compile.c:1373
int pt_count_assignments(PARSER_CONTEXT *parser, PT_NODE *assignments)
Definition: parse_tree.c:1413
PT_NODE * pt_expr_disallow_op_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_NODE * pt_semantic_type(PARSER_CONTEXT *parser, PT_NODE *tree, SEMANTIC_CHK_INFO *sc_info)
PT_NODE * pt_make_query_show_exec_stats(PARSER_CONTEXT *parser)
view_handling
Definition: parser.h:56
PT_NODE ** parser_parse_string_use_sys_charset(PARSER_CONTEXT *parser, const char *buffer)
void parser_free_parser(PARSER_CONTEXT *parser)
Definition: parse_tree.c:1240
PT_NODE * pt_make_query_show_create_view(PARSER_CONTEXT *parser, PT_NODE *view_identifier)
void pt_put_type_enum(PARSER_CONTEXT *parser, PT_NODE *node, PT_NODE *data_type)
PT_NODE * pt_remove_from_list(PARSER_CONTEXT *parser, PT_NODE *node, PT_NODE *list)
PT_NODE * pt_get_parameters(PARSER_CONTEXT *parser, PT_NODE *statement)
PT_NODE * parser_create_node(const PARSER_CONTEXT *parser)
Definition: parse_tree.c:271
void pt_restore_assignment_links(PT_NODE *assigns, PT_NODE **links, int count)
void pt_frob_error(PARSER_CONTEXT *parser, const PT_NODE *statement, const char *fmt,...)
SP_PARSER_CTX * parser
PT_NODE * pt_make_query_show_grants(PARSER_CONTEXT *parser, const char *original_user_name)
void parser_clear_node(PARSER_CONTEXT *parser, PT_NODE *node)
PT_PARTITION_TYPE
Definition: parse_tree.h:1301
int pt_check_unique_names(PARSER_CONTEXT *parser, const PT_NODE *p)
DB_VALUE * pt_value_to_db(PARSER_CONTEXT *parser, PT_NODE *value)
Definition: parse_dbi.c:1088
bool pt_is_join_expr(PT_NODE *expr, UINTPTR *spec_id)
PT_NODE * pt_check_groupbynum_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PT_NODE * pt_make_query_show_create_table(PARSER_CONTEXT *parser, PT_NODE *table_name)
int pt_resolved(const PT_NODE *expr)
PT_NODE * pt_set_is_view_spec(PARSER_CONTEXT *parser, PT_NODE *node, void *dummy, int *continue_walk)
PT_NODE * pt_add_column_oid(PARSER_CONTEXT *parser, PT_NODE *stmt)
int pt_prepare_count_optim_classes(PARSER_CONTEXT *parser, PT_NODE *stmt)
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)
CUBRID_STMT_TYPE pt_node_to_cmd_type(PT_NODE *node)
Definition: parse_dbi.c:2736
bool pt_check_ordby_num_for_multi_range_opt(PARSER_CONTEXT *parser, PT_NODE *query, bool *mro_candidate, bool *cannot_eval)
PT_NODE * pt_limit_to_numbering_expr(PARSER_CONTEXT *parser, PT_NODE *limit, PT_OP_TYPE num_op, bool is_gby_num)
PT_NODE * parser_init_node(PT_NODE *node, PT_NODE_TYPE node_type)
int pt_str_compare(const char *p, const char *q, CASE_SENSITIVENESS case_flag)
PT_NODE * parser_copy_tree(PARSER_CONTEXT *parser, const PT_NODE *tree)
int pt_is_server_insert_with_generated_keys(PARSER_CONTEXT *parser, PT_NODE *statement)
PT_NODE * pt_get_subquery_list(PT_NODE *node)
PT_HOST_VARS * pt_host_info(PARSER_CONTEXT *parser, PT_NODE *stmt)
void pt_end_query(PARSER_CONTEXT *parser, QUERY_ID query_id_self)
int pt_find_var(PT_NODE *p, PT_NODE **result)
int pt_check_order_by(PARSER_CONTEXT *parser, PT_NODE *query)
int pt_check_path_eq(PARSER_CONTEXT *parser, const PT_NODE *p, const PT_NODE *q)
PT_NODE * pt_class_pre_fetch(PARSER_CONTEXT *parser, PT_NODE *statement)
Definition: compile.c:431
void pt_evaluate_tree_having_serial(PARSER_CONTEXT *parser, PT_NODE *tree, DB_VALUE *db_value, int vals_cnt)
void pt_null_etc(PT_NODE *node)
PT_NODE * pt_is_pseudocolumn_node(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
int pt_find_attribute(PARSER_CONTEXT *parser, const PT_NODE *name, const PT_NODE *attributes)
bool pt_has_aggregate(PARSER_CONTEXT *parser, PT_NODE *node)
PT_NODE * pt_make_query_show_table(PARSER_CONTEXT *parser, bool is_full_syntax, int like_where_syntax, PT_NODE *like_or_where_expr)
DB_VALUE * pt_db_value_initialize(PARSER_CONTEXT *parser, PT_NODE *value, DB_VALUE *db_value, int *more_type_info_needed)
Definition: parse_dbi.c:3195
int pt_is_between_range_op(PT_OP_TYPE op)
int count(int &result, const cub_regex_object &reg, const std::string &src, const int position, const INTL_CODESET codeset)
PT_NODE * pt_from_entity_part(const PT_NODE *node)
bool pt_get_collation_info(const PT_NODE *node, PT_COLL_INFER *coll_infer)
void pt_copy_statement_flags(PT_NODE *source, PT_NODE *destination)
PT_NODE * pt_make_query_showstmt(PARSER_CONTEXT *parser, unsigned int type, PT_NODE *args, int like_where_syntax, PT_NODE *where_cond)
PARSER_VARCHAR * pt_append_bytes(const PARSER_CONTEXT *parser, PARSER_VARCHAR *old_bytes, const char *new_tail, const int length)
Definition: parse_tree.c:1014
DB_DOMAIN * pt_type_enum_to_db_domain(const PT_TYPE_ENUM t)
Definition: parse_dbi.c:1549
PT_NODE * pt_has_non_idx_sarg_coll_pre(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
int pt_get_dup_key_oid_var_index(PARSER_CONTEXT *parser, PT_NODE *update_statement)
PT_NODE * pt_make_tuple_value_reference(PARSER_CONTEXT *parser, PT_NODE *name, PT_NODE *select_list, CURSOR_ID *cursor_p)
PT_NODE * pt_where_type_keep_true(PARSER_CONTEXT *parser, PT_NODE *where)
PT_NODE * pt_check_instnum_pre(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
void pt_preset_hostvar(PARSER_CONTEXT *parser, PT_NODE *hv_node)
PT_NODE * pt_make_integer_value(PARSER_CONTEXT *parser, const int value_int)
const char * pt_show_misc_type(PT_MISC_TYPE p)
int pt_quick_resolve_names(PARSER_CONTEXT *parser, PT_NODE **spec, PT_NODE **node, SEMANTIC_CHK_INFO *sc_info)
PT_NODE * pt_get_first_arg_ignore_prior(PT_NODE *node)
KEYWORD_RECORD * pt_get_keyword_rec(int *rec_count)
Definition: keyword.c:757
PARSER_VARCHAR * pt_print_and_list(PARSER_CONTEXT *parser, const PT_NODE *node)
void pt_resolve_object(PARSER_CONTEXT *parser, PT_NODE *node)
int pt_between_to_comp_op(PT_OP_TYPE between, PT_OP_TYPE *left, PT_OP_TYPE *right)
void pt_free_label_table(void)
PT_NODE * pt_add_class_to_entity_list(PARSER_CONTEXT *r, struct db_object *db, PT_NODE *entity, const PT_NODE *parent, UINTPTR id, PT_MISC_TYPE meta_class)
PT_NODE * pt_is_analytic_node_post(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
const char * pt_show_type_enum(PT_TYPE_ENUM t)
int pt_is_function_index_expression(PT_NODE *node)
bool pt_is_same_enum_data_type(PT_NODE *dt1, PT_NODE *dt2)
Definition: parse_dbi.c:147
DB_TYPE pt_node_to_db_type(PT_NODE *node)
Definition: parse_dbi.c:2453
PT_OP_TYPE pt_op_type_from_default_expr_type(DB_DEFAULT_EXPR_TYPE expr_type)
PT_NODE * pt_table_option(PARSER_CONTEXT *parser, const PT_TABLE_OPTION_TYPE option, PT_NODE *val)
void * parser_alloc(const PARSER_CONTEXT *parser, const int length)
Definition: parse_tree.c:951
PT_NODE * pt_find_entity(PARSER_CONTEXT *parser, const PT_NODE *scope, UINTPTR id)
PT_NODE * pt_union(PARSER_CONTEXT *parser_ptr, PT_NODE *expression1, PT_NODE *expression2)
int pt_statement_line_number(const PT_NODE *stmt)
bool pt_is_const_expr_node(PT_NODE *node)
DB_AUTH
Definition: dbtype_def.h:239
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)
int pt_evaluate_function_w_args(PARSER_CONTEXT *parser, FUNC_TYPE fcode, DB_VALUE *args[], const int num_args, DB_VALUE *result)
char * parser_print_function_index_expr(PARSER_CONTEXT *parser, const PT_NODE *expr)
int dbcs_get_next(PARSER_CONTEXT *parser)
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)
PT_NODE * pt_add_row_classoid_name(PARSER_CONTEXT *parser, PT_NODE *statement, int server_op)
Definition: compile.c:361
DB_ATTRIBUTE * db_get_attributes_force(DB_OBJECT *obj)
void pt_no_attr_and_meta_attr_updates(PARSER_CONTEXT *parser, PT_NODE *stmt)
const char * pt_get_spec_name(PARSER_CONTEXT *parser, const PT_NODE *selqry)
PT_NODE * pt_convert_to_logical_expr(PARSER_CONTEXT *parser, PT_NODE *node, bool use_parens_inside, bool use_parens_outside)
PT_NODE * pt_add_row_oid_name(PARSER_CONTEXT *parser, PT_NODE *stmt)
Definition: compile.c:347
char * pt_print_alias(PARSER_CONTEXT *parser, const PT_NODE *node)
CUBRID_STMT_TYPE
Definition: cas_dbms_util.h:40
char * parser_print_tree_list(PARSER_CONTEXT *parser, const PT_NODE *p)
PT_NODE * pt_sort_in_desc_order(PT_NODE *vlist)
Definition: parse_dbi.c:2484
int pt_check_same_datatype(const PARSER_CONTEXT *parser, const PT_NODE *p, const PT_NODE *q)
int pt_resolve_default_value(PARSER_CONTEXT *parser, PT_NODE *name)
const char * pt_get_select_from_name(PARSER_CONTEXT *parser, const PT_NODE *spec)
PT_NODE * pt_find_aggregate_functions_pre(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
PT_NODE * pt_cnf(PARSER_CONTEXT *parser, PT_NODE *node)
Definition: cnf.c:941
PT_NODE * pt_make_prim_data_type(PARSER_CONTEXT *parser, PT_TYPE_ENUM e)
void pt_no_double_insert_assignments(PARSER_CONTEXT *parser, PT_NODE *stmt)
DB_VALUE * pt_seq_value_to_db(PARSER_CONTEXT *parser, PT_NODE *values, DB_VALUE *db_value, PT_NODE **el_types)
Definition: parse_dbi.c:979
PT_NODE * pt_get_input_host_vars(const PT_HOST_VARS *hv)
DB_OBJECT * pt_check_user_owns_class(PARSER_CONTEXT *parser, PT_NODE *cls_ref)
PT_NODE * pt_compile(PARSER_CONTEXT *parser, PT_NODE *volatile statement)
Definition: compile.c:380
PT_TABLE_OPTION_TYPE
Definition: parse_tree.h:1308
void pt_register_orphan(PARSER_CONTEXT *parser, const PT_NODE *orphan)
PT_OP_TYPE
Definition: parse_tree.h:1320
void parser_free_node_resources(PT_NODE *node)
Definition: parse_tree.c:835
PT_NODE * pt_tuple_value(PARSER_CONTEXT *parser, PT_NODE *name, CURSOR_ID *cursor_p, int index)
PT_NODE * pt_add_row_oid(PARSER_CONTEXT *parser, PT_NODE *stmt)
Definition: compile.c:333
enum intl_codeset INTL_CODESET
Definition: intl_support.h:190
PT_NODE * pt_get_cursor(const PT_HOST_VARS *hv)
PT_NODE * pt_values_part(const PT_NODE *insert_statement)
UINTPTR pt_find_id(PARSER_CONTEXT *parser, PT_NODE *node, UINTPTR id)
DB_TYPE pt_type_enum_to_db(const PT_TYPE_ENUM dt)
Definition: parse_dbi.c:2314
int pt_is_attr(PT_NODE *node)
bool pt_sort_spec_cover(PT_NODE *cur_list, PT_NODE *new_list)
PT_NODE * pt_find_name(PARSER_CONTEXT *parser, const PT_NODE *name, const PT_NODE *list)
PT_TYPE_ENUM pt_common_type(PT_TYPE_ENUM arg1_type, PT_TYPE_ENUM arg2_type)
int pt_check_set_count_set(PARSER_CONTEXT *parser, PT_NODE *arg1, PT_NODE *arg2)
DB_DOMAIN * pt_node_data_type_to_db_domain(PARSER_CONTEXT *parser, PT_NODE *dt, PT_TYPE_ENUM type)
Definition: parse_dbi.c:2029
int pt_common_collation(PT_COLL_INFER *arg1_coll_infer, PT_COLL_INFER *arg2_coll_infer, PT_COLL_INFER *arg3_coll_infer, const int args_w_coll, bool op_has_3_args, int *common_coll, INTL_CODESET *common_cs)
MISC_OPERAND pt_misc_to_qp_misc_operand(PT_MISC_TYPE misc_specifier)
Definition: parse_dbi.c:91
PT_NODE * pt_pop(PARSER_CONTEXT *parser)
PT_NODE * pt_make_query_show_trace(PARSER_CONTEXT *parser)
void pt_set_expected_domain(PT_NODE *node, TP_DOMAIN *domain)
PT_NODE * pt_get_subquery_of_insert_select(const PT_NODE *insert_statement)
void * pt_internal_error(PARSER_CONTEXT *parser, const char *file, int line, const char *what)
bool pt_is_expr_wrapped_function(PARSER_CONTEXT *parser, const PT_NODE *node)
void pt_free_host_info(PT_HOST_VARS *hv)
PT_OP_TYPE pt_negate_op(PT_OP_TYPE op)
PT_NODE * pt_point_ref(PARSER_CONTEXT *parser, const PT_NODE *node)
DB_VALUE * pt_host_var_db_value(PARSER_CONTEXT *parser, PT_NODE *hv)
Definition: parse_dbi.c:3160
PT_NODE * pt_find_aggregate_functions_post(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
char * pt_append_string(const PARSER_CONTEXT *parser, const char *old_string, const char *new_tail)
Definition: parse_tree.c:980
DB_DOMAIN * pt_string_to_db_domain(const char *s, const char *class_name)
Definition: parse_dbi.c:1332
void pt_select_list_to_one_col(PARSER_CONTEXT *parser, PT_NODE *node, bool do_one)
const char * pt_show_node_type(PT_NODE *p)
PT_NODE * pt_expression_3(PARSER_CONTEXT *parser_ptr, PT_OP_TYPE op, PT_NODE *arg1, PT_NODE *arg2, PT_NODE *arg3)
PT_NODE * pt_lambda(PARSER_CONTEXT *parser_ptr, PT_NODE *expression, PT_NODE *name, PT_NODE *named_expression)
void pt_set_fill_default_in_path_expression(PT_NODE *node)
int pt_coerce_value(PARSER_CONTEXT *parser, PT_NODE *src, PT_NODE *dest, PT_TYPE_ENUM desired_type, PT_NODE *elem_type_list)
PT_NODE * pt_eval_value_path(PARSER_CONTEXT *parser, PT_NODE *path)
PARSER_VARCHAR * pt_print_node_value(PARSER_CONTEXT *parser, const PT_NODE *val)
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)
enum pt_node_type PT_NODE_TYPE
Definition: parse_tree.h:904
PT_NODE * pt_function_index_skip_expr(PT_NODE *node)
void pt_mark_spec_list_for_update(PARSER_CONTEXT *parser, PT_NODE *statement)
bool pt_is_reserved_word(const char *s)
Definition: keyword.c:697
enum view_handling VIEW_HANDLING
PT_NODE * pt_compile_trigger_stmt(PARSER_CONTEXT *parser, const char *trigger_stmt, DB_OBJECT *class_op, const char *name1, const char *name2)
Definition: compile.c:1018
DB_QUERY_TYPE * pt_get_titles(PARSER_CONTEXT *parser, PT_NODE *query)
Definition: query_result.c:642
void pt_add_type_to_set(PARSER_CONTEXT *parser, const PT_NODE *val, PT_NODE **set)
Definition: parse_dbi.c:198
char * pt_print_query_spec_no_list(PARSER_CONTEXT *parser, const PT_NODE *node)
int pt_check_if_query(PARSER_CONTEXT *parser, PT_NODE *stmt)
const char * pt_show_partition_type(PT_PARTITION_TYPE t)
int pt_type_generic_func(PARSER_CONTEXT *parser, PT_NODE *node)
int pt_evaluate_db_value_expr(PARSER_CONTEXT *parser, PT_NODE *expr, PT_OP_TYPE op, DB_VALUE *arg1, DB_VALUE *arg2, DB_VALUE *arg3, DB_VALUE *result, TP_DOMAIN *domain, PT_NODE *o1, PT_NODE *o2, PT_NODE *o3, PT_MISC_TYPE qualifier)
DB_DOMAIN * pt_data_type_to_db_domain(PARSER_CONTEXT *parser, PT_NODE *dt, const char *class_name)
Definition: parse_dbi.c:1805
PT_NODE * pt_left_part(const PT_NODE *expr)
DB_VALUE * default_value
Definition: esql_cli.c:348
int pt_is_method_call(PT_NODE *node)
PT_NODE * pt_sm_attribute_default_value_to_node(PARSER_CONTEXT *parser, const SM_ATTRIBUTE *default_value)
Definition: parse_dbi.c:516
PARSER_CONTEXT * parser_create_parser(void)
Definition: parse_tree.c:1169
PT_NODE *(* PT_NODE_WALK_FUNCTION)(PARSER_CONTEXT *p, PT_NODE *tree, void *arg, int *continue_walk)
Definition: parse_tree.h:1689
void pt_split_join_preds(PARSER_CONTEXT *parser, PT_NODE *predicates, PT_NODE **join_part, PT_NODE **after_cb_filter)
PARSER_CONTEXT * mq_virtual_queries(DB_OBJECT *class_obj)
void parser_free_lcks_classes(PARSER_CONTEXT *parser)
Definition: parse_tree.c:1310
PT_NODE * pt_count_input_markers(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
void pt_free_orphans(PARSER_CONTEXT *parser)
PT_PRIV_TYPE
Definition: parse_tree.h:965
PT_NODE * pt_pointer_stack_push(PARSER_CONTEXT *parser, PT_NODE *stack, PT_NODE *node)
PT_NODE * pt_make_query_show_collation(PARSER_CONTEXT *parser, int like_where_syntax, PT_NODE *like_or_where_expr)
PT_NODE * pt_check_instnum_post(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
const char ** p
Definition: dynamic_load.c:945
MISC_OPERAND
PT_NODE * pt_bind_param_node(PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
PARSER_VARCHAR * pt_print_bytes_alias(PARSER_CONTEXT *parser, const PT_NODE *node)
DB_DEFAULT_EXPR_TYPE
Definition: dbtype_def.h:1181
const char * pt_show_binopcode(PT_OP_TYPE n)
int pt_check_class_eq(PARSER_CONTEXT *parser, PT_NODE *p, PT_NODE *q)
PT_COMP_TO_BETWEEN_OP_CODE_TYPE
Definition: parse_tree.h:1496
PT_NODE * pt_get_next_assignment(PT_ASSIGNMENTS_HELPER *helper)
Definition: parse_tree.c:1360
void parser_final(void)
DB_VALUE * db_values
Definition: esql_cli.c:356
int pt_validate_query_spec(PARSER_CONTEXT *parser, PT_NODE *s, struct db_object *c)
PT_NODE * pt_is_analytic_node(PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
PT_NODE * pt_rewrite_set_eq_set(PARSER_CONTEXT *parser, PT_NODE *exp)
PT_NODE * pt_get_node_from_list(PT_NODE *list, int index)
size_t json_table_column_count
PT_NODE * pt_node_list(PARSER_CONTEXT *parser_ptr, PT_MISC_TYPE list_type, PT_NODE *list)