24#ifndef PARSE_TREE_ITEMS_INCLUDED
25#define PARSE_TREE_ITEMS_INCLUDED
82 obj->
add_alias(
"operator", create_dom_ptr<Json_string>(
98 obj->
add_alias(
"operator", create_dom_ptr<Json_string>(
99 (*
comp_op)(
false)->symbol(
false)));
141 const char *table_arg,
const char *field_arg)
155 const char *field_arg)
178 :
super(pos, dec_arg) {}
282 :
super(pos, is_7bit_arg, literal_arg) {}
293 :
super(pos, is_7bit_arg, literal_arg) {}
307 :
super(pos, is_7bit_arg, literal_arg),
cs(cs_arg) {}
328 :
super(pos, is_7bit_arg, tail),
head(head_arg) {}
396 :
super(pos, var, expr) {}
511 bool is_negation_arg,
Item *right_arg)
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:251
Definition: item_func.h:3292
Definition: item_timefunc.h:1183
This class is used to implement operations like SET @variable or @variable:= expression.
Definition: item_func.h:3224
Dynamic parameters used as placeholders ('?') inside prepared statements.
Definition: item.h:4759
void set_cs_specified(bool cs_specified)
Set the value of m_cs_specified attribute.
Definition: item.h:5624
void init(const char *str, size_t length, const CHARSET_INFO *cs, Derivation dv, uint repertoire)
Definition: item.h:5450
void set_repertoire_from_value()
Definition: item.h:5558
Definition: item_sum.h:1066
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:936
String str_value
str_values's main purpose is to cache the value in save_in_field
Definition: item.h:3531
virtual bool do_itemize(Parse_context *pc, Item **res)
The core function that does the actual itemization.
Definition: item.cc:754
Bool_test
< Modifier for result transformation
Definition: item.h:1013
String * check_well_formed_result(String *str, bool send_error, bool truncate)
Verifies that the input string is well-formed according to its character set.
Definition: item.cc:6495
Represents a JSON container value of type "object" (ECMA), type J_OBJECT here.
Definition: json_dom.h:369
bool add_alias(const std::string &key, Json_dom *value)
Insert the value into the object.
Definition: json_dom.h:411
Definition: parse_tree_items.h:87
Item * left
Definition: parse_tree_items.h:90
bool is_all
Definition: parse_tree_items.h:92
Parse_tree_item super
Definition: parse_tree_items.h:88
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:178
PTI_comp_op_all(const POS &pos, Item *left_arg, chooser_compare_func_creator comp_op_arg, bool is_all_arg, PT_subquery *subselect_arg)
Definition: parse_tree_items.h:103
PT_subquery * subselect
Definition: parse_tree_items.h:93
chooser_compare_func_creator comp_op
Definition: parse_tree_items.h:91
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: parse_tree_items.h:96
Definition: parse_tree_items.h:62
Parse_tree_item super
Definition: parse_tree_items.h:63
chooser_compare_func_creator boolfunc2creator
Definition: parse_tree_items.h:66
PTI_comp_op(const POS &pos, Item *left_arg, chooser_compare_func_creator boolfunc2creator_arg, Item *right_arg)
Definition: parse_tree_items.h:70
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: parse_tree_items.h:81
Item * right
Definition: parse_tree_items.h:67
Item * left
Definition: parse_tree_items.h:65
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:169
Definition: parse_tree_items.h:582
PTI_context(const POS &pos, Item *expr_arg, enum_parsing_context place)
Definition: parse_tree_items.h:588
Item * expr
Definition: parse_tree_items.h:584
const enum_parsing_context m_parsing_place
Definition: parse_tree_items.h:585
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:735
Parse_tree_item super
Definition: parse_tree_items.h:583
Definition: parse_tree_items.h:437
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:631
Item_sum_count super
Definition: parse_tree_items.h:438
PTI_count_sym(const POS &pos, PT_window *w)
Definition: parse_tree_items.h:441
Definition: parse_tree_items.h:471
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:335
Parse_tree_item super
Definition: parse_tree_items.h:472
PT_subquery * subselect
Definition: parse_tree_items.h:474
PTI_exists_subselect(const POS &pos, PT_subquery *subselect_arg)
Definition: parse_tree_items.h:477
Definition: parse_tree_items.h:523
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:350
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: parse_tree_items.cc:368
Symbol_location expr_loc
Definition: parse_tree_items.h:527
Parse_tree_item super
Definition: parse_tree_items.h:524
PTI_expr_with_alias(const POS &pos, Item *expr_arg, const Symbol_location &expr_loc_arg, const LEX_CSTRING &alias_arg)
Definition: parse_tree_items.h:531
LEX_CSTRING alias
Definition: parse_tree_items.h:528
Item * expr
Definition: parse_tree_items.h:526
Parse tree Item wrapper for 2-dimentional functional names (ex.
Definition: parse_tree_items.h:242
PTI_function_call_generic_2d(const POS &pos, const LEX_STRING &db_arg, const LEX_STRING &func_arg, PT_item_list *opt_expr_list_arg)
Definition: parse_tree_items.h:250
LEX_STRING db
Definition: parse_tree_items.h:245
LEX_STRING func
Definition: parse_tree_items.h:246
PT_item_list * opt_expr_list
Definition: parse_tree_items.h:247
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:290
Parse_tree_item super
Definition: parse_tree_items.h:243
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: parse_tree_items.cc:278
Definition: parse_tree_items.h:214
PT_item_list * opt_udf_expr_list
Definition: parse_tree_items.h:218
Parse_tree_item super
Definition: parse_tree_items.h:215
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:237
PTI_function_call_generic_ident_sys(const POS &pos, const LEX_STRING &ident_arg, PT_item_list *opt_udf_expr_list_arg)
Definition: parse_tree_items.h:223
LEX_STRING ident
Definition: parse_tree_items.h:217
udf_func * udf
Definition: parse_tree_items.h:220
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: parse_tree_items.h:233
Definition: parse_tree_items.h:173
PTI_function_call_nonkeyword_now(const POS &pos, uint8 dec_arg)
Definition: parse_tree_items.h:177
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:529
Item_func_now_local super
Definition: parse_tree_items.h:174
Definition: parse_tree_items.h:183
Parse_tree_item super
Definition: parse_tree_items.h:184
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:188
uint8 dec
Definition: parse_tree_items.h:186
PTI_function_call_nonkeyword_sysdate(const POS &pos, uint8 dec_arg)
Definition: parse_tree_items.h:189
Parse tree Item wrapper for 3-dimentional variable names.
Definition: parse_tree_items.h:415
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:607
const enum_var_type m_scope
Definition: parse_tree_items.h:431
const POS m_name_pos
Definition: parse_tree_items.h:432
Parse_tree_item super
Definition: parse_tree_items.h:416
const LEX_CSTRING m_name
Definition: parse_tree_items.h:434
PTI_get_system_variable(const POS &pos, enum_var_type scope, const POS &name_pos, const LEX_CSTRING &opt_prefix, const LEX_CSTRING &name)
Definition: parse_tree_items.h:419
const LEX_CSTRING m_opt_prefix
Definition: parse_tree_items.h:433
Definition: parse_tree_items.h:502
bool is_negation
Definition: parse_tree_items.h:506
PTI_handle_sql2003_note184_exception(const POS &pos, Item *left_arg, bool is_negation_arg, Item *right_arg)
Definition: parse_tree_items.h:510
Item * right
Definition: parse_tree_items.h:507
Item * left
Definition: parse_tree_items.h:505
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:341
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: parse_tree_items.h:518
Parse_tree_item super
Definition: parse_tree_items.h:503
Definition: parse_tree_items.h:601
PTI_having(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:603
Definition: parse_tree_items.h:447
Parse_tree_item super
Definition: parse_tree_items.h:448
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:637
Item * expr
Definition: parse_tree_items.h:450
PTI_in_sum_expr(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:453
Definition: parse_tree_items.h:542
PTI_int_splocal(const POS &pos, const LEX_CSTRING &name)
Definition: parse_tree_items.h:546
const LEX_CSTRING m_name
Same data as in PTI_in_sum_expr::m_location but 0-terminated "for free".
Definition: parse_tree_items.h:556
const POS m_location
Location of the variable name.
Definition: parse_tree_items.h:553
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:683
Definition: parse_tree_items.h:559
PTI_limit_option_ident(const POS &pos, const LEX_CSTRING &name)
Definition: parse_tree_items.h:563
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:709
Definition: parse_tree_items.h:569
Item_param * param_marker
Definition: parse_tree_items.h:572
PTI_limit_option_param_marker(const POS &pos, Item_param *param_marker_arg)
Definition: parse_tree_items.h:575
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:716
Parse_tree_item super
Definition: parse_tree_items.h:570
Definition: parse_tree_items.h:372
Item_string super
Definition: parse_tree_items.h:373
PTI_literal_underscore_charset_bin_num(const POS &pos, const CHARSET_INFO *charset, const LEX_STRING &literal)
Definition: parse_tree_items.h:376
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.h:383
Definition: parse_tree_items.h:352
Item_string super
Definition: parse_tree_items.h:353
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.h:363
PTI_literal_underscore_charset_hex_num(const POS &pos, const CHARSET_INFO *charset, const LEX_STRING &literal)
Definition: parse_tree_items.h:356
Definition: parse_tree_items.h:483
LEX_STRING ident
Definition: parse_tree_items.h:486
Item * expr
Definition: parse_tree_items.h:487
Parse_tree_item super
Definition: parse_tree_items.h:484
PTI_odbc_date(const POS &pos, const LEX_STRING &ident_arg, Item *expr_arg)
Definition: parse_tree_items.h:496
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: parse_tree_items.h:490
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:645
Definition: parse_tree_items.h:607
PTI_qualify(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:609
Definition: parse_tree_items.h:115
Parse_tree_item super
Definition: parse_tree_items.h:116
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:374
PTI_simple_ident_ident(const POS &pos, const LEX_CSTRING &ident_arg)
Definition: parse_tree_items.h:122
Symbol_location raw
Definition: parse_tree_items.h:119
LEX_CSTRING ident
Definition: parse_tree_items.h:118
Definition: parse_tree_items.h:161
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:484
LEX_STRING ident
Definition: parse_tree_items.h:164
Parse_tree_item super
Definition: parse_tree_items.h:162
PTI_simple_ident_nospvar_ident(const POS &pos, const LEX_STRING &ident_arg)
Definition: parse_tree_items.h:167
Parse tree Item wrapper for 3-dimentional simple_ident-s.
Definition: parse_tree_items.h:150
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:432
PTI_simple_ident_q_2d(const POS &pos, const char *table_arg, const char *field_arg)
Definition: parse_tree_items.h:154
PTI_simple_ident_q_3d super
Definition: parse_tree_items.h:151
Parse tree Item wrapper for 3-dimentional simple_ident-s.
Definition: parse_tree_items.h:131
const char * table
Definition: parse_tree_items.h:136
const char * db
Definition: parse_tree_items.h:135
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:411
PTI_simple_ident_q_3d(const POS &pos, const char *db_arg, const char *table_arg, const char *field_arg)
Definition: parse_tree_items.h:140
Parse_tree_item super
Definition: parse_tree_items.h:132
const char * field
Definition: parse_tree_items.h:137
Definition: parse_tree_items.h:459
PT_subquery * subselect
Definition: parse_tree_items.h:462
PTI_singlerow_subselect(const POS &pos, PT_subquery *subselect_arg)
Definition: parse_tree_items.h:465
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:328
Parse_tree_item super
Definition: parse_tree_items.h:460
Definition: parse_tree_items.h:333
LEX_STRING literal
Definition: parse_tree_items.h:336
const CHARSET_INFO * cs
Definition: parse_tree_items.h:338
Parse_tree_item super
Definition: parse_tree_items.h:334
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:575
PTI_temporal_literal(const POS &pos, const LEX_STRING &literal_arg, enum_field_types field_type_arg, const CHARSET_INFO *cs_arg)
Definition: parse_tree_items.h:341
enum_field_types field_type
Definition: parse_tree_items.h:337
Definition: parse_tree_items.h:320
PTI_text_literal super
Definition: parse_tree_items.h:321
PTI_text_literal * head
Definition: parse_tree_items.h:323
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:558
PTI_text_literal_concat(const POS &pos, bool is_7bit_arg, PTI_text_literal *head_arg, const LEX_STRING &tail)
Definition: parse_tree_items.h:326
Definition: parse_tree_items.h:287
PTI_text_literal_nchar_string(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:291
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:318
PTI_text_literal super
Definition: parse_tree_items.h:288
Definition: parse_tree_items.h:276
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:537
PTI_text_literal_text_string(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:280
PTI_text_literal super
Definition: parse_tree_items.h:277
Definition: parse_tree_items.h:298
PTI_text_literal super
Definition: parse_tree_items.h:299
const CHARSET_INFO * cs
Definition: parse_tree_items.h:301
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.h:309
PTI_text_literal_underscore_charset(const POS &pos, bool is_7bit_arg, const CHARSET_INFO *cs_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:304
Definition: parse_tree_items.h:264
PTI_text_literal(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:271
bool is_7bit
Definition: parse_tree_items.h:268
Item_string super
Definition: parse_tree_items.h:265
LEX_STRING literal
Definition: parse_tree_items.h:269
Definition: parse_tree_items.h:195
Parse_tree_item super
Definition: parse_tree_items.h:196
Item * expr
Definition: parse_tree_items.h:198
LEX_STRING select_alias
Definition: parse_tree_items.h:199
PTI_udf_expr(const POS &pos, Item *expr_arg, const LEX_STRING &select_alias_arg, const Symbol_location &expr_loc_arg)
Definition: parse_tree_items.h:203
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:212
Symbol_location expr_loc
Definition: parse_tree_items.h:200
Definition: parse_tree_items.h:401
Item_func_get_user_var super
Definition: parse_tree_items.h:402
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:595
PTI_user_variable(const POS &pos, const LEX_STRING &var)
Definition: parse_tree_items.h:405
Definition: parse_tree_items.h:391
PTI_variable_aux_set_var(const POS &pos, const LEX_STRING &var, Item *expr)
Definition: parse_tree_items.h:395
Item_func_set_user_var super
Definition: parse_tree_items.h:392
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:583
Definition: parse_tree_items.h:595
PTI_where(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:597
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:105
Definition: parse_tree_nodes.h:1773
Parse tree node for a window; just a shallow wrapper for class Window, q.v.
Definition: parse_tree_window.h:39
Base class for parse-time Item objects.
Definition: parse_tree_helpers.h:70
Parse_tree_item(const POS &pos)
Definition: parse_tree_helpers.h:72
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:231
Comp_creator *(*)(bool invert) chooser_compare_func_creator
Convenience typedef for a function that returns factories for Item comparators (ie....
Definition: comp_creator.h:39
@ DERIVATION_COERCIBLE
Definition: field.h:182
This file contains the field type.
enum_field_types
Column types for MySQL Note: Keep include/mysql/components/services/bits/stored_program_bits....
Definition: field_types.h:55
const Name_string null_name_string(nullptr, 0)
A better implementation of the UNIX ctype(3) library.
static constexpr uint32_t MY_REPERTOIRE_UNICODE30
Definition: m_ctype.h:156
Some integer typedefs for easier portability.
uint8_t uint8
Definition: my_inttypes.h:63
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1081
const std::string charset("charset")
Definition: commit_order_queue.h:34
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
enum_parsing_context
Names for different query parse tree parts.
Definition: parse_tree_node_base.h:61
@ CTX_HAVING
Inside HAVING condition.
Definition: parse_tree_node_base.h:77
@ CTX_QUALIFY
Inside QUALIFY condition.
Definition: parse_tree_node_base.h:78
@ CTX_WHERE
Inside WHERE condition.
Definition: parse_tree_node_base.h:74
"public" interface to sys_var - server configuration variables.
enum_var_type
Definition: set_var.h:91
case opt name
Definition: sslopt-case.h:29
Definition: m_ctype.h:423
Definition: mysql_lex_string.h:40
Definition: mysql_lex_string.h:35
char * str
Definition: mysql_lex_string.h:36
size_t length
Definition: mysql_lex_string.h:37
Bison "location" class.
Definition: parse_location.h:43
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:420
Helper class for the MY_SQL_PARSER_LTYPE.
Definition: parse_location.h:32