MySQL 8.4.0
Source Code Documentation
parse_tree_items.h
Go to the documentation of this file.
1/* Copyright (c) 2013, 2024, Oracle and/or its affiliates.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License, version 2.0,
5 as published by the Free Software Foundation.
6
7 This program is designed to work with certain software (including
8 but not limited to OpenSSL) that is licensed under separate terms,
9 as designated in a particular file or component or in included license
10 documentation. The authors of MySQL hereby grant you an additional
11 permission to link the program and your derivative works with the
12 separately licensed software that they have either included with
13 the program or referenced in the documentation.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License, version 2.0, for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
23
24#ifndef PARSE_TREE_ITEMS_INCLUDED
25#define PARSE_TREE_ITEMS_INCLUDED
26
27#include "field_types.h" // enum_field_types
28#include "lex_string.h"
29#include "my_inttypes.h" // TODO: replace with cstdint
31#include "sql/comp_creator.h"
32#include "sql/field.h"
33#include "sql/item.h"
34#include "sql/item_func.h"
35#include "sql/item_sum.h" // Item_sum_count
36#include "sql/item_timefunc.h" // Item_func_now_local
37#include "sql/parse_location.h"
38#include "sql/parse_tree_helpers.h" // Parse_tree_item
40#include "sql/set_var.h"
41
42class PT_subquery;
43class PT_window;
44struct udf_func;
45
48
51
52 public:
54 : super(pos), expr(expr_arg), truth_test(truth_test) {}
55
56 bool do_itemize(Parse_context *pc, Item **res) override;
57
58 protected:
59 void add_json_info(Json_object *obj) override;
60};
61
64
68
69 public:
70 PTI_comp_op(const POS &pos, Item *left_arg,
71 chooser_compare_func_creator boolfunc2creator_arg,
72 Item *right_arg)
73 : super(pos),
74 left(left_arg),
75 boolfunc2creator(boolfunc2creator_arg),
76 right(right_arg) {}
77
78 bool do_itemize(Parse_context *pc, Item **res) override;
79
80 protected:
81 void add_json_info(Json_object *obj) override {
82 obj->add_alias("operator", create_dom_ptr<Json_string>(
83 (*boolfunc2creator)(false)->symbol(false)));
84 }
85};
86
89
92 bool is_all;
94
95 protected:
96 void add_json_info(Json_object *obj) override {
97 obj->add_alias("is_all", create_dom_ptr<Json_boolean>(is_all));
98 obj->add_alias("operator", create_dom_ptr<Json_string>(
99 (*comp_op)(false)->symbol(false)));
100 }
101
102 public:
103 PTI_comp_op_all(const POS &pos, Item *left_arg,
104 chooser_compare_func_creator comp_op_arg, bool is_all_arg,
105 PT_subquery *subselect_arg)
106 : super(pos),
107 left(left_arg),
108 comp_op(comp_op_arg),
109 is_all(is_all_arg),
110 subselect(subselect_arg) {}
111
112 bool do_itemize(Parse_context *pc, Item **res) override;
113};
114
117
120
121 public:
122 PTI_simple_ident_ident(const POS &pos, const LEX_CSTRING &ident_arg)
123 : super(pos), ident(ident_arg), raw(pos.raw) {}
124
125 bool do_itemize(Parse_context *pc, Item **res) override;
126};
127
128/**
129 Parse tree Item wrapper for 3-dimentional simple_ident-s
130*/
133
134 protected:
135 const char *db;
136 const char *table;
137 const char *field;
138
139 public:
140 PTI_simple_ident_q_3d(const POS &pos, const char *db_arg,
141 const char *table_arg, const char *field_arg)
142 : super(pos), db(db_arg), table(table_arg), field(field_arg) {}
143
144 bool do_itemize(Parse_context *pc, Item **res) override;
145};
146
147/**
148 Parse tree Item wrapper for 3-dimentional simple_ident-s
149*/
152
153 public:
154 PTI_simple_ident_q_2d(const POS &pos, const char *table_arg,
155 const char *field_arg)
156 : super(pos, nullptr, table_arg, field_arg) {}
157
158 bool do_itemize(Parse_context *pc, Item **res) override;
159};
160
163
165
166 public:
167 PTI_simple_ident_nospvar_ident(const POS &pos, const LEX_STRING &ident_arg)
168 : super(pos), ident(ident_arg) {}
169
170 bool do_itemize(Parse_context *pc, Item **res) override;
171};
172
175
176 public:
178 : super(pos, dec_arg) {}
179
180 bool do_itemize(Parse_context *pc, Item **res) override;
181};
182
185
187
188 public:
189 explicit PTI_function_call_nonkeyword_sysdate(const POS &pos, uint8 dec_arg)
190 : super(pos), dec(dec_arg) {}
191
192 bool do_itemize(Parse_context *pc, Item **res) override;
193};
194
197
201
202 public:
203 PTI_udf_expr(const POS &pos, Item *expr_arg,
204 const LEX_STRING &select_alias_arg,
205 const Symbol_location &expr_loc_arg)
206 : super(pos),
207 expr(expr_arg),
208 select_alias(select_alias_arg),
209 expr_loc(expr_loc_arg) {}
210
211 bool do_itemize(Parse_context *pc, Item **res) override;
212};
213
216
219
221
222 public:
224 const LEX_STRING &ident_arg,
225 PT_item_list *opt_udf_expr_list_arg)
226 : super(pos),
227 ident(ident_arg),
228 opt_udf_expr_list(opt_udf_expr_list_arg) {}
229
230 bool do_itemize(Parse_context *pc, Item **res) override;
231
232 protected:
233 void add_json_info(Json_object *obj) override {
234 obj->add_alias("func_name",
235 create_dom_ptr<Json_string>(ident.str, ident.length));
236 }
237};
238
239/**
240 Parse tree Item wrapper for 2-dimentional functional names (ex.: db.func_name)
241*/
244
248
249 public:
250 PTI_function_call_generic_2d(const POS &pos, const LEX_STRING &db_arg,
251 const LEX_STRING &func_arg,
252 PT_item_list *opt_expr_list_arg)
253 : super(pos),
254 db(db_arg),
255 func(func_arg),
256 opt_expr_list(opt_expr_list_arg) {}
257
258 bool do_itemize(Parse_context *pc, Item **res) override;
259
260 protected:
261 void add_json_info(Json_object *obj) override;
262};
263
266
267 protected:
270
271 PTI_text_literal(const POS &pos, bool is_7bit_arg,
272 const LEX_STRING &literal_arg)
273 : super(pos), is_7bit(is_7bit_arg), literal(literal_arg) {}
274};
275
278
279 public:
280 PTI_text_literal_text_string(const POS &pos, bool is_7bit_arg,
281 const LEX_STRING &literal_arg)
282 : super(pos, is_7bit_arg, literal_arg) {}
283
284 bool do_itemize(Parse_context *pc, Item **res) override;
285};
286
289
290 public:
291 PTI_text_literal_nchar_string(const POS &pos, bool is_7bit_arg,
292 const LEX_STRING &literal_arg)
293 : super(pos, is_7bit_arg, literal_arg) {}
294
295 bool do_itemize(Parse_context *pc, Item **res) override;
296};
297
300
302
303 public:
304 PTI_text_literal_underscore_charset(const POS &pos, bool is_7bit_arg,
305 const CHARSET_INFO *cs_arg,
306 const LEX_STRING &literal_arg)
307 : super(pos, is_7bit_arg, literal_arg), cs(cs_arg) {}
308
309 bool do_itemize(Parse_context *pc, Item **res) override {
310 if (super::do_itemize(pc, res)) return true;
311
315 set_cs_specified(true);
316 return false;
317 }
318};
319
322
324
325 public:
326 PTI_text_literal_concat(const POS &pos, bool is_7bit_arg,
327 PTI_text_literal *head_arg, const LEX_STRING &tail)
328 : super(pos, is_7bit_arg, tail), head(head_arg) {}
329
330 bool do_itemize(Parse_context *pc, Item **res) override;
331};
332
335
339
340 public:
341 PTI_temporal_literal(const POS &pos, const LEX_STRING &literal_arg,
342 enum_field_types field_type_arg,
343 const CHARSET_INFO *cs_arg)
344 : super(pos),
345 literal(literal_arg),
346 field_type(field_type_arg),
347 cs(cs_arg) {}
348
349 bool do_itemize(Parse_context *pc, Item **res) override;
350};
351
354
355 public:
357 const CHARSET_INFO *charset,
358 const LEX_STRING &literal)
359 : super(pos, null_name_string,
360 Item_hex_string::make_hex_str(literal.str, literal.length),
361 charset) {}
362
363 bool do_itemize(Parse_context *pc, Item **res) override {
364 if (super::do_itemize(pc, res)) return true;
365
367 set_cs_specified(true);
368 return check_well_formed_result(&str_value, true, true) == nullptr;
369 }
370};
371
374
375 public:
377 const CHARSET_INFO *charset,
378 const LEX_STRING &literal)
379 : super(pos, null_name_string,
380 Item_bin_string::make_bin_str(literal.str, literal.length),
381 charset) {}
382
383 bool do_itemize(Parse_context *pc, Item **res) override {
384 if (super::do_itemize(pc, res)) return true;
385
386 set_cs_specified(true);
387 return check_well_formed_result(&str_value, true, true) == nullptr;
388 }
389};
390
393
394 public:
395 PTI_variable_aux_set_var(const POS &pos, const LEX_STRING &var, Item *expr)
396 : super(pos, var, expr) {}
397
398 bool do_itemize(Parse_context *pc, Item **res) override;
399};
400
403
404 public:
405 PTI_user_variable(const POS &pos, const LEX_STRING &var) : super(pos, var) {}
406
407 bool do_itemize(Parse_context *pc, Item **res) override;
408};
409
410/**
411 Parse tree Item wrapper for 3-dimentional variable names
412
413 Example: \@global.default.x
414*/
417
418 public:
420 const POS &name_pos, const LEX_CSTRING &opt_prefix,
421 const LEX_CSTRING &name)
422 : super{pos},
423 m_scope{scope},
424 m_name_pos{name_pos},
425 m_opt_prefix{opt_prefix},
426 m_name{name} {}
427
428 bool do_itemize(Parse_context *pc, Item **res) override;
429
430 private:
435};
436
439
440 public:
442 : super(pos, (Item *)nullptr, w) {}
443
444 bool do_itemize(Parse_context *pc, Item **res) override;
445};
446
449
451
452 public:
453 PTI_in_sum_expr(const POS &pos, Item *expr_arg)
454 : super(pos), expr(expr_arg) {}
455
456 bool do_itemize(Parse_context *pc, Item **res) override;
457};
458
461
463
464 public:
465 PTI_singlerow_subselect(const POS &pos, PT_subquery *subselect_arg)
466 : super(pos), subselect(subselect_arg) {}
467
468 bool do_itemize(Parse_context *pc, Item **res) override;
469};
470
473
475
476 public:
477 PTI_exists_subselect(const POS &pos, PT_subquery *subselect_arg)
478 : super(pos), subselect(subselect_arg) {}
479
480 bool do_itemize(Parse_context *pc, Item **res) override;
481};
482
485
488
489 protected:
490 void add_json_info(Json_object *obj) override {
491 obj->add_alias("date_type",
492 create_dom_ptr<Json_string>(ident.str, ident.length));
493 }
494
495 public:
496 PTI_odbc_date(const POS &pos, const LEX_STRING &ident_arg, Item *expr_arg)
497 : super(pos), ident(ident_arg), expr(expr_arg) {}
498
499 bool do_itemize(Parse_context *pc, Item **res) override;
500};
501
504
508
509 public:
511 bool is_negation_arg, Item *right_arg)
512 : super(pos),
513 left(left_arg),
514 is_negation(is_negation_arg),
515 right(right_arg) {}
516
517 bool do_itemize(Parse_context *pc, Item **res) override;
518 void add_json_info(Json_object *obj) override {
519 obj->add_alias("negated", create_dom_ptr<Json_boolean>(is_negation));
520 }
521};
522
525
529
530 public:
531 PTI_expr_with_alias(const POS &pos, Item *expr_arg,
532 const Symbol_location &expr_loc_arg,
533 const LEX_CSTRING &alias_arg)
534 : super(pos), expr(expr_arg), expr_loc(expr_loc_arg), alias(alias_arg) {}
535
536 bool do_itemize(Parse_context *pc, Item **res) override;
537
538 protected:
539 void add_json_info(Json_object *obj) override;
540};
541
544
545 public:
547 : super(pos), m_location{pos}, m_name{name} {}
548
549 bool do_itemize(Parse_context *pc, Item **res) override;
550
551 private:
552 /// Location of the variable name.
554
555 /// Same data as in PTI_in_sum_expr#m_location but 0-terminated "for free".
557};
558
561
562 public:
564 : super{pos, name} {}
565
566 bool do_itemize(Parse_context *pc, Item **res) override;
567};
568
571
573
574 public:
576 Item_param *param_marker_arg)
577 : super(pos), param_marker(param_marker_arg) {}
578
579 bool do_itemize(Parse_context *pc, Item **res) override;
580};
581
586
587 protected:
588 PTI_context(const POS &pos, Item *expr_arg, enum_parsing_context place)
589 : super(pos), expr(expr_arg), m_parsing_place(place) {}
590
591 public:
592 bool do_itemize(Parse_context *pc, Item **res) override;
593};
594
595class PTI_where final : public PTI_context {
596 public:
597 PTI_where(const POS &pos, Item *expr_arg)
598 : PTI_context(pos, expr_arg, CTX_WHERE) {}
599};
600
601class PTI_having final : public PTI_context {
602 public:
603 PTI_having(const POS &pos, Item *expr_arg)
604 : PTI_context(pos, expr_arg, CTX_HAVING) {}
605};
606
607class PTI_qualify final : public PTI_context {
608 public:
609 PTI_qualify(const POS &pos, Item *expr_arg)
610 : PTI_context(pos, expr_arg, CTX_QUALIFY) {}
611};
612
613#endif /* PARSE_TREE_ITEMS_INCLUDED */
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:251
Definition: item.h:5782
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
Definition: item.h:5731
Dynamic parameters used as placeholders ('?') inside prepared statements.
Definition: item.h:4764
Definition: item.h:5447
void set_cs_specified(bool cs_specified)
Set the value of m_cs_specified attribute.
Definition: item.h:5629
void init(const char *str, size_t length, const CHARSET_INFO *cs, Derivation dv, uint repertoire)
Definition: item.h:5455
void set_repertoire_from_value()
Definition: item.h:5563
Definition: item_sum.h:1066
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:934
String str_value
str_values's main purpose is to cache the value in save_in_field
Definition: item.h:3528
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:1011
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:6496
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:46
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: parse_tree_items.cc:504
Item * expr
Definition: parse_tree_items.h:49
PTI_truth_transform(const POS &pos, Item *expr_arg, Bool_test truth_test)
Definition: parse_tree_items.h:53
Parse_tree_item super
Definition: parse_tree_items.h:47
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: parse_tree_items.cc:497
Bool_test truth_test
Definition: parse_tree_items.h:50
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:1073
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
Definition: sql_udf.h:44