MySQL 8.0.33
Source Code Documentation
parse_tree_items.h
Go to the documentation of this file.
1/* Copyright (c) 2013, 2023, 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 also distributed 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 included with MySQL.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License, version 2.0, for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
22
23#ifndef PARSE_TREE_ITEMS_INCLUDED
24#define PARSE_TREE_ITEMS_INCLUDED
25
26#include "field_types.h" // enum_field_types
27#include "lex_string.h"
28#include "m_ctype.h"
29#include "my_inttypes.h" // TODO: replace with cstdint
30#include "sql/comp_creator.h"
31#include "sql/field.h"
32#include "sql/item.h"
33#include "sql/item_func.h"
34#include "sql/item_sum.h" // Item_sum_count
35#include "sql/item_timefunc.h" // Item_func_now_local
36#include "sql/parse_location.h"
37#include "sql/parse_tree_helpers.h" // Parse_tree_item
39#include "sql/set_var.h"
40
41class PT_subquery;
42class PT_window;
43struct udf_func;
44
47
50
51 public:
53 : super(pos), expr(expr_arg), truth_test(truth_test) {}
54
55 bool itemize(Parse_context *pc, Item **res) override;
56};
57
60
64
65 public:
66 PTI_comp_op(const POS &pos, Item *left_arg,
67 chooser_compare_func_creator boolfunc2creator_arg,
68 Item *right_arg)
69 : super(pos),
70 left(left_arg),
71 boolfunc2creator(boolfunc2creator_arg),
72 right(right_arg) {}
73
74 bool itemize(Parse_context *pc, Item **res) override;
75};
76
79
82 bool is_all;
84
85 public:
86 PTI_comp_op_all(const POS &pos, Item *left_arg,
87 chooser_compare_func_creator comp_op_arg, bool is_all_arg,
88 PT_subquery *subselect_arg)
89 : super(pos),
90 left(left_arg),
91 comp_op(comp_op_arg),
92 is_all(is_all_arg),
93 subselect(subselect_arg) {}
94
95 bool itemize(Parse_context *pc, Item **res) override;
96};
97
100
103
104 public:
105 PTI_simple_ident_ident(const POS &pos, const LEX_CSTRING &ident_arg)
106 : super(pos), ident(ident_arg), raw(pos.raw) {}
107
108 bool itemize(Parse_context *pc, Item **res) override;
109};
110
111/**
112 Parse tree Item wrapper for 3-dimentional simple_ident-s
113*/
116
117 protected:
118 const char *db;
119 const char *table;
120 const char *field;
121
122 public:
123 PTI_simple_ident_q_3d(const POS &pos, const char *db_arg,
124 const char *table_arg, const char *field_arg)
125 : super(pos), db(db_arg), table(table_arg), field(field_arg) {}
126
127 bool itemize(Parse_context *pc, Item **res) override;
128};
129
130/**
131 Parse tree Item wrapper for 3-dimentional simple_ident-s
132*/
135
136 public:
137 PTI_simple_ident_q_2d(const POS &pos, const char *table_arg,
138 const char *field_arg)
139 : super(pos, nullptr, table_arg, field_arg) {}
140
141 bool itemize(Parse_context *pc, Item **res) override;
142};
143
146
148
149 public:
150 PTI_simple_ident_nospvar_ident(const POS &pos, const LEX_STRING &ident_arg)
151 : super(pos), ident(ident_arg) {}
152
153 bool itemize(Parse_context *pc, Item **res) override;
154};
155
158
159 public:
161 : super(pos, dec_arg) {}
162
163 bool itemize(Parse_context *pc, Item **res) override;
164};
165
168
170
171 public:
172 explicit PTI_function_call_nonkeyword_sysdate(const POS &pos, uint8 dec_arg)
173 : super(pos), dec(dec_arg) {}
174
175 bool itemize(Parse_context *pc, Item **res) override;
176};
177
180
184
185 public:
186 PTI_udf_expr(const POS &pos, Item *expr_arg,
187 const LEX_STRING &select_alias_arg,
188 const Symbol_location &expr_loc_arg)
189 : super(pos),
190 expr(expr_arg),
191 select_alias(select_alias_arg),
192 expr_loc(expr_loc_arg) {}
193
194 bool itemize(Parse_context *pc, Item **res) override;
195};
196
199
202
204
205 public:
207 const LEX_STRING &ident_arg,
208 PT_item_list *opt_udf_expr_list_arg)
209 : super(pos),
210 ident(ident_arg),
211 opt_udf_expr_list(opt_udf_expr_list_arg) {}
212
213 bool itemize(Parse_context *pc, Item **res) override;
214};
215
216/**
217 Parse tree Item wrapper for 2-dimentional functional names (ex.: db.func_name)
218*/
221
225
226 public:
227 PTI_function_call_generic_2d(const POS &pos, const LEX_STRING &db_arg,
228 const LEX_STRING &func_arg,
229 PT_item_list *opt_expr_list_arg)
230 : super(pos),
231 db(db_arg),
232 func(func_arg),
233 opt_expr_list(opt_expr_list_arg) {}
234
235 bool itemize(Parse_context *pc, Item **res) override;
236};
237
240
241 protected:
244
245 PTI_text_literal(const POS &pos, bool is_7bit_arg,
246 const LEX_STRING &literal_arg)
247 : super(pos), is_7bit(is_7bit_arg), literal(literal_arg) {}
248};
249
252
253 public:
254 PTI_text_literal_text_string(const POS &pos, bool is_7bit_arg,
255 const LEX_STRING &literal_arg)
256 : super(pos, is_7bit_arg, literal_arg) {}
257
258 bool itemize(Parse_context *pc, Item **res) override;
259};
260
263
264 public:
265 PTI_text_literal_nchar_string(const POS &pos, bool is_7bit_arg,
266 const LEX_STRING &literal_arg)
267 : super(pos, is_7bit_arg, literal_arg) {}
268
269 bool itemize(Parse_context *pc, Item **res) override;
270};
271
274
276
277 public:
278 PTI_text_literal_underscore_charset(const POS &pos, bool is_7bit_arg,
279 const CHARSET_INFO *cs_arg,
280 const LEX_STRING &literal_arg)
281 : super(pos, is_7bit_arg, literal_arg), cs(cs_arg) {}
282
283 bool itemize(Parse_context *pc, Item **res) override {
284 if (super::itemize(pc, res)) return true;
285
289 set_cs_specified(true);
290 return false;
291 }
292};
293
296
298
299 public:
300 PTI_text_literal_concat(const POS &pos, bool is_7bit_arg,
301 PTI_text_literal *head_arg, const LEX_STRING &tail)
302 : super(pos, is_7bit_arg, tail), head(head_arg) {}
303
304 bool itemize(Parse_context *pc, Item **res) override;
305};
306
309
313
314 public:
315 PTI_temporal_literal(const POS &pos, const LEX_STRING &literal_arg,
316 enum_field_types field_type_arg,
317 const CHARSET_INFO *cs_arg)
318 : super(pos),
319 literal(literal_arg),
320 field_type(field_type_arg),
321 cs(cs_arg) {}
322
323 bool itemize(Parse_context *pc, Item **res) override;
324};
325
328
329 public:
331 const CHARSET_INFO *charset,
332 const LEX_STRING &literal)
333 : super(pos, null_name_string,
334 Item_hex_string::make_hex_str(literal.str, literal.length),
335 charset) {}
336
337 bool itemize(Parse_context *pc, Item **res) override {
338 if (super::itemize(pc, res)) return true;
339
341 set_cs_specified(true);
342 return check_well_formed_result(&str_value, true, true) == nullptr;
343 }
344};
345
348
349 public:
351 const CHARSET_INFO *charset,
352 const LEX_STRING &literal)
353 : super(pos, null_name_string,
354 Item_bin_string::make_bin_str(literal.str, literal.length),
355 charset) {}
356
357 bool itemize(Parse_context *pc, Item **res) override {
358 if (super::itemize(pc, res)) return true;
359
360 set_cs_specified(true);
361 return check_well_formed_result(&str_value, true, true) == nullptr;
362 }
363};
364
367
368 public:
369 PTI_variable_aux_set_var(const POS &pos, const LEX_STRING &var, Item *expr)
370 : super(pos, var, expr) {}
371
372 bool itemize(Parse_context *pc, Item **res) override;
373};
374
377
378 public:
379 PTI_user_variable(const POS &pos, const LEX_STRING &var) : super(pos, var) {}
380
381 bool itemize(Parse_context *pc, Item **res) override;
382};
383
384/**
385 Parse tree Item wrapper for 3-dimentional variable names
386
387 Example: \@global.default.x
388*/
391
392 public:
394 const POS &name_pos, const LEX_CSTRING &opt_prefix,
395 const LEX_CSTRING &name)
396 : super{pos},
397 m_scope{scope},
398 m_name_pos{name_pos},
399 m_opt_prefix{opt_prefix},
400 m_name{name} {}
401
402 bool itemize(Parse_context *pc, Item **res) override;
403
404 private:
409};
410
413
414 public:
416 : super(pos, (Item *)nullptr, w) {}
417
418 bool itemize(Parse_context *pc, Item **res) override;
419};
420
423
425
426 public:
427 PTI_in_sum_expr(const POS &pos, Item *expr_arg)
428 : super(pos), expr(expr_arg) {}
429
430 bool itemize(Parse_context *pc, Item **res) override;
431};
432
435
437
438 public:
439 PTI_singlerow_subselect(const POS &pos, PT_subquery *subselect_arg)
440 : super(pos), subselect(subselect_arg) {}
441
442 bool itemize(Parse_context *pc, Item **res) override;
443};
444
447
449
450 public:
451 PTI_exists_subselect(const POS &pos, PT_subquery *subselect_arg)
452 : super(pos), subselect(subselect_arg) {}
453
454 bool itemize(Parse_context *pc, Item **res) override;
455};
456
459
462
463 public:
464 PTI_odbc_date(const POS &pos, const LEX_STRING &ident_arg, Item *expr_arg)
465 : super(pos), ident(ident_arg), expr(expr_arg) {}
466
467 bool itemize(Parse_context *pc, Item **res) override;
468};
469
472
476
477 public:
479 bool is_negation_arg, Item *right_arg)
480 : super(pos),
481 left(left_arg),
482 is_negation(is_negation_arg),
483 right(right_arg) {}
484
485 bool itemize(Parse_context *pc, Item **res) override;
486};
487
490
494
495 public:
496 PTI_expr_with_alias(const POS &pos, Item *expr_arg,
497 const Symbol_location &expr_loc_arg,
498 const LEX_CSTRING &alias_arg)
499 : super(pos), expr(expr_arg), expr_loc(expr_loc_arg), alias(alias_arg) {}
500
501 bool itemize(Parse_context *pc, Item **res) override;
502};
503
506
507 public:
509 : super(pos), m_location{pos}, m_name{name} {}
510
511 bool itemize(Parse_context *pc, Item **res) override;
512
513 private:
514 /// Location of the variable name.
516
517 /// Same data as in PTI_in_sum_expr#m_location but 0-terminated "for free".
519};
520
523
524 public:
526 : super{pos, name} {}
527
528 bool itemize(Parse_context *pc, Item **res) override;
529};
530
533
535
536 public:
538 Item_param *param_marker_arg)
539 : super(pos), param_marker(param_marker_arg) {}
540
541 bool itemize(Parse_context *pc, Item **res) override;
542};
543
548
549 protected:
550 PTI_context(const POS &pos, Item *expr_arg, enum_parsing_context place)
551 : super(pos), expr(expr_arg), m_parsing_place(place) {}
552
553 public:
554 bool itemize(Parse_context *pc, Item **res) override;
555};
556
557class PTI_where final : public PTI_context {
558 public:
559 PTI_where(const POS &pos, Item *expr_arg)
560 : PTI_context(pos, expr_arg, CTX_WHERE) {}
561};
562
563class PTI_having final : public PTI_context {
564 public:
565 PTI_having(const POS &pos, Item *expr_arg)
566 : PTI_context(pos, expr_arg, CTX_HAVING) {}
567};
568
569#endif /* PARSE_TREE_ITEMS_INCLUDED */
Definition: item.h:5556
Definition: item_func.h:3214
Definition: item_timefunc.h:1154
This class is used to implement operations like SET @variable or @variable:= expression.
Definition: item_func.h:3146
Definition: item.h:5503
Dynamic parameters used as placeholders ('?') inside prepared statements.
Definition: item.h:4536
Definition: item.h:5219
void set_cs_specified(bool cs_specified)
Set the value of m_cs_specified attribute.
Definition: item.h:5401
void init(const char *str, size_t length, const CHARSET_INFO *cs, Derivation dv, uint repertoire)
Definition: item.h:5227
void set_repertoire_from_value()
Definition: item.h:5335
Definition: item_sum.h:1055
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:850
String str_value
str_values's main purpose is to cache the value in save_in_field
Definition: item.h:3334
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize() but with additional parameter.
Definition: item.cc:630
Bool_test
< Modifier for result transformation
Definition: item.h:934
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:6254
Definition: parse_tree_items.h:77
Item * left
Definition: parse_tree_items.h:80
bool is_all
Definition: parse_tree_items.h:82
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:174
Parse_tree_item super
Definition: parse_tree_items.h:78
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:86
PT_subquery * subselect
Definition: parse_tree_items.h:83
chooser_compare_func_creator comp_op
Definition: parse_tree_items.h:81
Definition: parse_tree_items.h:58
Parse_tree_item super
Definition: parse_tree_items.h:59
chooser_compare_func_creator boolfunc2creator
Definition: parse_tree_items.h:62
PTI_comp_op(const POS &pos, Item *left_arg, chooser_compare_func_creator boolfunc2creator_arg, Item *right_arg)
Definition: parse_tree_items.h:66
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:165
Item * right
Definition: parse_tree_items.h:63
Item * left
Definition: parse_tree_items.h:61
Definition: parse_tree_items.h:544
PTI_context(const POS &pos, Item *expr_arg, enum_parsing_context place)
Definition: parse_tree_items.h:550
Item * expr
Definition: parse_tree_items.h:546
const enum_parsing_context m_parsing_place
Definition: parse_tree_items.h:547
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:683
Parse_tree_item super
Definition: parse_tree_items.h:545
Definition: parse_tree_items.h:411
Item_sum_count super
Definition: parse_tree_items.h:412
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:581
PTI_count_sym(const POS &pos, PT_window *w)
Definition: parse_tree_items.h:415
Definition: parse_tree_items.h:445
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:319
Parse_tree_item super
Definition: parse_tree_items.h:446
PT_subquery * subselect
Definition: parse_tree_items.h:448
PTI_exists_subselect(const POS &pos, PT_subquery *subselect_arg)
Definition: parse_tree_items.h:451
Definition: parse_tree_items.h:488
Symbol_location expr_loc
Definition: parse_tree_items.h:492
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:334
Parse_tree_item super
Definition: parse_tree_items.h:489
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:496
LEX_CSTRING alias
Definition: parse_tree_items.h:493
Item * expr
Definition: parse_tree_items.h:491
Parse tree Item wrapper for 2-dimentional functional names (ex.
Definition: parse_tree_items.h:219
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:274
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:227
LEX_STRING db
Definition: parse_tree_items.h:222
LEX_STRING func
Definition: parse_tree_items.h:223
PT_item_list * opt_expr_list
Definition: parse_tree_items.h:224
Parse_tree_item super
Definition: parse_tree_items.h:220
Definition: parse_tree_items.h:197
PT_item_list * opt_udf_expr_list
Definition: parse_tree_items.h:201
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:233
Parse_tree_item super
Definition: parse_tree_items.h:198
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:206
LEX_STRING ident
Definition: parse_tree_items.h:200
udf_func * udf
Definition: parse_tree_items.h:203
Definition: parse_tree_items.h:156
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:480
PTI_function_call_nonkeyword_now(const POS &pos, uint8 dec_arg)
Definition: parse_tree_items.h:160
Item_func_now_local super
Definition: parse_tree_items.h:157
Definition: parse_tree_items.h:166
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:184
Parse_tree_item super
Definition: parse_tree_items.h:167
uint8 dec
Definition: parse_tree_items.h:169
PTI_function_call_nonkeyword_sysdate(const POS &pos, uint8 dec_arg)
Definition: parse_tree_items.h:172
Parse tree Item wrapper for 3-dimentional variable names.
Definition: parse_tree_items.h:389
const enum_var_type m_scope
Definition: parse_tree_items.h:405
const POS m_name_pos
Definition: parse_tree_items.h:406
Parse_tree_item super
Definition: parse_tree_items.h:390
const LEX_CSTRING m_name
Definition: parse_tree_items.h:408
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:557
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:393
const LEX_CSTRING m_opt_prefix
Definition: parse_tree_items.h:407
Definition: parse_tree_items.h:470
bool is_negation
Definition: parse_tree_items.h:474
PTI_handle_sql2003_note184_exception(const POS &pos, Item *left_arg, bool is_negation_arg, Item *right_arg)
Definition: parse_tree_items.h:478
Item * right
Definition: parse_tree_items.h:475
Item * left
Definition: parse_tree_items.h:473
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:325
Parse_tree_item super
Definition: parse_tree_items.h:471
Definition: parse_tree_items.h:563
PTI_having(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:565
Definition: parse_tree_items.h:421
Parse_tree_item super
Definition: parse_tree_items.h:422
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:587
Item * expr
Definition: parse_tree_items.h:424
PTI_in_sum_expr(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:427
Definition: parse_tree_items.h:504
PTI_int_splocal(const POS &pos, const LEX_CSTRING &name)
Definition: parse_tree_items.h:508
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:518
const POS m_location
Location of the variable name.
Definition: parse_tree_items.h:515
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:633
Definition: parse_tree_items.h:521
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:657
PTI_limit_option_ident(const POS &pos, const LEX_CSTRING &name)
Definition: parse_tree_items.h:525
Definition: parse_tree_items.h:531
Item_param * param_marker
Definition: parse_tree_items.h:534
PTI_limit_option_param_marker(const POS &pos, Item_param *param_marker_arg)
Definition: parse_tree_items.h:537
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:664
Parse_tree_item super
Definition: parse_tree_items.h:532
Definition: parse_tree_items.h:346
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.h:357
Item_string super
Definition: parse_tree_items.h:347
PTI_literal_underscore_charset_bin_num(const POS &pos, const CHARSET_INFO *charset, const LEX_STRING &literal)
Definition: parse_tree_items.h:350
Definition: parse_tree_items.h:326
Item_string super
Definition: parse_tree_items.h:327
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.h:337
PTI_literal_underscore_charset_hex_num(const POS &pos, const CHARSET_INFO *charset, const LEX_STRING &literal)
Definition: parse_tree_items.h:330
Definition: parse_tree_items.h:457
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:595
LEX_STRING ident
Definition: parse_tree_items.h:460
Item * expr
Definition: parse_tree_items.h:461
Parse_tree_item super
Definition: parse_tree_items.h:458
PTI_odbc_date(const POS &pos, const LEX_STRING &ident_arg, Item *expr_arg)
Definition: parse_tree_items.h:464
Definition: parse_tree_items.h:98
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:352
Parse_tree_item super
Definition: parse_tree_items.h:99
PTI_simple_ident_ident(const POS &pos, const LEX_CSTRING &ident_arg)
Definition: parse_tree_items.h:105
Symbol_location raw
Definition: parse_tree_items.h:102
LEX_CSTRING ident
Definition: parse_tree_items.h:101
Definition: parse_tree_items.h:144
LEX_STRING ident
Definition: parse_tree_items.h:147
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:460
Parse_tree_item super
Definition: parse_tree_items.h:145
PTI_simple_ident_nospvar_ident(const POS &pos, const LEX_STRING &ident_arg)
Definition: parse_tree_items.h:150
Parse tree Item wrapper for 3-dimentional simple_ident-s.
Definition: parse_tree_items.h:133
PTI_simple_ident_q_2d(const POS &pos, const char *table_arg, const char *field_arg)
Definition: parse_tree_items.h:137
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:408
PTI_simple_ident_q_3d super
Definition: parse_tree_items.h:134
Parse tree Item wrapper for 3-dimentional simple_ident-s.
Definition: parse_tree_items.h:114
const char * table
Definition: parse_tree_items.h:119
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:387
const char * db
Definition: parse_tree_items.h:118
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:123
Parse_tree_item super
Definition: parse_tree_items.h:115
const char * field
Definition: parse_tree_items.h:120
Definition: parse_tree_items.h:433
PT_subquery * subselect
Definition: parse_tree_items.h:436
PTI_singlerow_subselect(const POS &pos, PT_subquery *subselect_arg)
Definition: parse_tree_items.h:439
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:312
Parse_tree_item super
Definition: parse_tree_items.h:434
Definition: parse_tree_items.h:307
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:525
LEX_STRING literal
Definition: parse_tree_items.h:310
const CHARSET_INFO * cs
Definition: parse_tree_items.h:312
Parse_tree_item super
Definition: parse_tree_items.h:308
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:315
enum_field_types field_type
Definition: parse_tree_items.h:311
Definition: parse_tree_items.h:294
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:508
PTI_text_literal super
Definition: parse_tree_items.h:295
PTI_text_literal * head
Definition: parse_tree_items.h:297
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:300
Definition: parse_tree_items.h:261
PTI_text_literal_nchar_string(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:265
PTI_text_literal super
Definition: parse_tree_items.h:262
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:302
Definition: parse_tree_items.h:250
PTI_text_literal_text_string(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:254
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:487
PTI_text_literal super
Definition: parse_tree_items.h:251
Definition: parse_tree_items.h:272
PTI_text_literal super
Definition: parse_tree_items.h:273
const CHARSET_INFO * cs
Definition: parse_tree_items.h:275
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:278
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.h:283
Definition: parse_tree_items.h:238
PTI_text_literal(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:245
bool is_7bit
Definition: parse_tree_items.h:242
Item_string super
Definition: parse_tree_items.h:239
LEX_STRING literal
Definition: parse_tree_items.h:243
Definition: parse_tree_items.h:45
Item * expr
Definition: parse_tree_items.h:48
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:473
PTI_truth_transform(const POS &pos, Item *expr_arg, Bool_test truth_test)
Definition: parse_tree_items.h:52
Parse_tree_item super
Definition: parse_tree_items.h:46
Bool_test truth_test
Definition: parse_tree_items.h:49
Definition: parse_tree_items.h:178
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:208
Parse_tree_item super
Definition: parse_tree_items.h:179
Item * expr
Definition: parse_tree_items.h:181
LEX_STRING select_alias
Definition: parse_tree_items.h:182
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:186
Symbol_location expr_loc
Definition: parse_tree_items.h:183
Definition: parse_tree_items.h:375
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:545
Item_func_get_user_var super
Definition: parse_tree_items.h:376
PTI_user_variable(const POS &pos, const LEX_STRING &var)
Definition: parse_tree_items.h:379
Definition: parse_tree_items.h:365
PTI_variable_aux_set_var(const POS &pos, const LEX_STRING &var, Item *expr)
Definition: parse_tree_items.h:369
Item_func_set_user_var super
Definition: parse_tree_items.h:366
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:533
Definition: parse_tree_items.h:557
PTI_where(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:559
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:104
Definition: parse_tree_nodes.h:1605
Parse tree node for a window; just a shallow wrapper for class Window, q.v.
Definition: parse_tree_window.h:38
Base class for parse-time Item objects.
Definition: parse_tree_helpers.h:69
Parse_tree_item(const POS &pos)
Definition: parse_tree_helpers.h:71
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:138
Comp_creator *(*)(bool invert) chooser_compare_func_creator
Convenience typedef for a function that returns factories for Item comparators (ie....
Definition: comp_creator.h:38
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:221
This file contains the field type.
enum_field_types
Column types for MySQL.
Definition: field_types.h:52
const Name_string null_name_string(nullptr, 0)
A better implementation of the UNIX ctype(3) library.
#define MY_REPERTOIRE_UNICODE30
Definition: m_ctype.h:151
Some integer typedefs for easier portability.
uint8_t uint8
Definition: my_inttypes.h:62
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1054
const std::string charset("charset")
Definition: commit_order_queue.h:33
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:75
enum_parsing_context
Names for different query parse tree parts.
Definition: parse_tree_node_base.h:57
@ CTX_HAVING
Subquery in HAVING clause item tree.
Definition: parse_tree_node_base.h:73
@ CTX_WHERE
Subquery in WHERE clause item tree.
Definition: parse_tree_node_base.h:70
"public" interface to sys_var - server configuration variables.
enum_var_type
Definition: set_var.h:89
@ DERIVATION_COERCIBLE
Definition: field.h:181
case opt name
Definition: sslopt-case.h:32
Definition: m_ctype.h:382
Definition: mysql_lex_string.h:39
Definition: mysql_lex_string.h:34
char * str
Definition: mysql_lex_string.h:35
size_t length
Definition: mysql_lex_string.h:36
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:120
Helper class for the YYLTYPE.
Definition: parse_location.h:31
Bison "location" class.
Definition: parse_location.h:42
Definition: sql_udf.h:43