MySQL 8.0.39
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 "m_ctype.h"
30#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 itemize(Parse_context *pc, Item **res) override;
57};
58
61
65
66 public:
67 PTI_comp_op(const POS &pos, Item *left_arg,
68 chooser_compare_func_creator boolfunc2creator_arg,
69 Item *right_arg)
70 : super(pos),
71 left(left_arg),
72 boolfunc2creator(boolfunc2creator_arg),
73 right(right_arg) {}
74
75 bool itemize(Parse_context *pc, Item **res) override;
76};
77
80
83 bool is_all;
85
86 public:
87 PTI_comp_op_all(const POS &pos, Item *left_arg,
88 chooser_compare_func_creator comp_op_arg, bool is_all_arg,
89 PT_subquery *subselect_arg)
90 : super(pos),
91 left(left_arg),
92 comp_op(comp_op_arg),
93 is_all(is_all_arg),
94 subselect(subselect_arg) {}
95
96 bool itemize(Parse_context *pc, Item **res) override;
97};
98
101
104
105 public:
106 PTI_simple_ident_ident(const POS &pos, const LEX_CSTRING &ident_arg)
107 : super(pos), ident(ident_arg), raw(pos.raw) {}
108
109 bool itemize(Parse_context *pc, Item **res) override;
110};
111
112/**
113 Parse tree Item wrapper for 3-dimentional simple_ident-s
114*/
117
118 protected:
119 const char *db;
120 const char *table;
121 const char *field;
122
123 public:
124 PTI_simple_ident_q_3d(const POS &pos, const char *db_arg,
125 const char *table_arg, const char *field_arg)
126 : super(pos), db(db_arg), table(table_arg), field(field_arg) {}
127
128 bool itemize(Parse_context *pc, Item **res) override;
129};
130
131/**
132 Parse tree Item wrapper for 3-dimentional simple_ident-s
133*/
136
137 public:
138 PTI_simple_ident_q_2d(const POS &pos, const char *table_arg,
139 const char *field_arg)
140 : super(pos, nullptr, table_arg, field_arg) {}
141
142 bool itemize(Parse_context *pc, Item **res) override;
143};
144
147
149
150 public:
151 PTI_simple_ident_nospvar_ident(const POS &pos, const LEX_STRING &ident_arg)
152 : super(pos), ident(ident_arg) {}
153
154 bool itemize(Parse_context *pc, Item **res) override;
155};
156
159
160 public:
162 : super(pos, dec_arg) {}
163
164 bool itemize(Parse_context *pc, Item **res) override;
165};
166
169
171
172 public:
173 explicit PTI_function_call_nonkeyword_sysdate(const POS &pos, uint8 dec_arg)
174 : super(pos), dec(dec_arg) {}
175
176 bool itemize(Parse_context *pc, Item **res) override;
177};
178
181
185
186 public:
187 PTI_udf_expr(const POS &pos, Item *expr_arg,
188 const LEX_STRING &select_alias_arg,
189 const Symbol_location &expr_loc_arg)
190 : super(pos),
191 expr(expr_arg),
192 select_alias(select_alias_arg),
193 expr_loc(expr_loc_arg) {}
194
195 bool itemize(Parse_context *pc, Item **res) override;
196};
197
200
203
205
206 public:
208 const LEX_STRING &ident_arg,
209 PT_item_list *opt_udf_expr_list_arg)
210 : super(pos),
211 ident(ident_arg),
212 opt_udf_expr_list(opt_udf_expr_list_arg) {}
213
214 bool itemize(Parse_context *pc, Item **res) override;
215};
216
217/**
218 Parse tree Item wrapper for 2-dimentional functional names (ex.: db.func_name)
219*/
222
226
227 public:
228 PTI_function_call_generic_2d(const POS &pos, const LEX_STRING &db_arg,
229 const LEX_STRING &func_arg,
230 PT_item_list *opt_expr_list_arg)
231 : super(pos),
232 db(db_arg),
233 func(func_arg),
234 opt_expr_list(opt_expr_list_arg) {}
235
236 bool itemize(Parse_context *pc, Item **res) override;
237};
238
241
242 protected:
245
246 PTI_text_literal(const POS &pos, bool is_7bit_arg,
247 const LEX_STRING &literal_arg)
248 : super(pos), is_7bit(is_7bit_arg), literal(literal_arg) {}
249};
250
253
254 public:
255 PTI_text_literal_text_string(const POS &pos, bool is_7bit_arg,
256 const LEX_STRING &literal_arg)
257 : super(pos, is_7bit_arg, literal_arg) {}
258
259 bool itemize(Parse_context *pc, Item **res) override;
260};
261
264
265 public:
266 PTI_text_literal_nchar_string(const POS &pos, bool is_7bit_arg,
267 const LEX_STRING &literal_arg)
268 : super(pos, is_7bit_arg, literal_arg) {}
269
270 bool itemize(Parse_context *pc, Item **res) override;
271};
272
275
277
278 public:
279 PTI_text_literal_underscore_charset(const POS &pos, bool is_7bit_arg,
280 const CHARSET_INFO *cs_arg,
281 const LEX_STRING &literal_arg)
282 : super(pos, is_7bit_arg, literal_arg), cs(cs_arg) {}
283
284 bool itemize(Parse_context *pc, Item **res) override {
285 if (super::itemize(pc, res)) return true;
286
290 set_cs_specified(true);
291 return false;
292 }
293};
294
297
299
300 public:
301 PTI_text_literal_concat(const POS &pos, bool is_7bit_arg,
302 PTI_text_literal *head_arg, const LEX_STRING &tail)
303 : super(pos, is_7bit_arg, tail), head(head_arg) {}
304
305 bool itemize(Parse_context *pc, Item **res) override;
306};
307
310
314
315 public:
316 PTI_temporal_literal(const POS &pos, const LEX_STRING &literal_arg,
317 enum_field_types field_type_arg,
318 const CHARSET_INFO *cs_arg)
319 : super(pos),
320 literal(literal_arg),
321 field_type(field_type_arg),
322 cs(cs_arg) {}
323
324 bool itemize(Parse_context *pc, Item **res) override;
325};
326
329
330 public:
332 const CHARSET_INFO *charset,
333 const LEX_STRING &literal)
334 : super(pos, null_name_string,
335 Item_hex_string::make_hex_str(literal.str, literal.length),
336 charset) {}
337
338 bool itemize(Parse_context *pc, Item **res) override {
339 if (super::itemize(pc, res)) return true;
340
342 set_cs_specified(true);
343 return check_well_formed_result(&str_value, true, true) == nullptr;
344 }
345};
346
349
350 public:
352 const CHARSET_INFO *charset,
353 const LEX_STRING &literal)
354 : super(pos, null_name_string,
355 Item_bin_string::make_bin_str(literal.str, literal.length),
356 charset) {}
357
358 bool itemize(Parse_context *pc, Item **res) override {
359 if (super::itemize(pc, res)) return true;
360
361 set_cs_specified(true);
362 return check_well_formed_result(&str_value, true, true) == nullptr;
363 }
364};
365
368
369 public:
370 PTI_variable_aux_set_var(const POS &pos, const LEX_STRING &var, Item *expr)
371 : super(pos, var, expr) {}
372
373 bool itemize(Parse_context *pc, Item **res) override;
374};
375
378
379 public:
380 PTI_user_variable(const POS &pos, const LEX_STRING &var) : super(pos, var) {}
381
382 bool itemize(Parse_context *pc, Item **res) override;
383};
384
385/**
386 Parse tree Item wrapper for 3-dimentional variable names
387
388 Example: \@global.default.x
389*/
392
393 public:
395 const POS &name_pos, const LEX_CSTRING &opt_prefix,
396 const LEX_CSTRING &name)
397 : super{pos},
398 m_scope{scope},
399 m_name_pos{name_pos},
400 m_opt_prefix{opt_prefix},
401 m_name{name} {}
402
403 bool itemize(Parse_context *pc, Item **res) override;
404
405 private:
410};
411
414
415 public:
417 : super(pos, (Item *)nullptr, w) {}
418
419 bool itemize(Parse_context *pc, Item **res) override;
420};
421
424
426
427 public:
428 PTI_in_sum_expr(const POS &pos, Item *expr_arg)
429 : super(pos), expr(expr_arg) {}
430
431 bool itemize(Parse_context *pc, Item **res) override;
432};
433
436
438
439 public:
440 PTI_singlerow_subselect(const POS &pos, PT_subquery *subselect_arg)
441 : super(pos), subselect(subselect_arg) {}
442
443 bool itemize(Parse_context *pc, Item **res) override;
444};
445
448
450
451 public:
452 PTI_exists_subselect(const POS &pos, PT_subquery *subselect_arg)
453 : super(pos), subselect(subselect_arg) {}
454
455 bool itemize(Parse_context *pc, Item **res) override;
456};
457
460
463
464 public:
465 PTI_odbc_date(const POS &pos, const LEX_STRING &ident_arg, Item *expr_arg)
466 : super(pos), ident(ident_arg), expr(expr_arg) {}
467
468 bool itemize(Parse_context *pc, Item **res) override;
469};
470
473
477
478 public:
480 bool is_negation_arg, Item *right_arg)
481 : super(pos),
482 left(left_arg),
483 is_negation(is_negation_arg),
484 right(right_arg) {}
485
486 bool itemize(Parse_context *pc, Item **res) override;
487};
488
491
495
496 public:
497 PTI_expr_with_alias(const POS &pos, Item *expr_arg,
498 const Symbol_location &expr_loc_arg,
499 const LEX_CSTRING &alias_arg)
500 : super(pos), expr(expr_arg), expr_loc(expr_loc_arg), alias(alias_arg) {}
501
502 bool itemize(Parse_context *pc, Item **res) override;
503};
504
507
508 public:
510 : super(pos), m_location{pos}, m_name{name} {}
511
512 bool itemize(Parse_context *pc, Item **res) override;
513
514 private:
515 /// Location of the variable name.
517
518 /// Same data as in PTI_in_sum_expr#m_location but 0-terminated "for free".
520};
521
524
525 public:
527 : super{pos, name} {}
528
529 bool itemize(Parse_context *pc, Item **res) override;
530};
531
534
536
537 public:
539 Item_param *param_marker_arg)
540 : super(pos), param_marker(param_marker_arg) {}
541
542 bool itemize(Parse_context *pc, Item **res) override;
543};
544
549
550 protected:
551 PTI_context(const POS &pos, Item *expr_arg, enum_parsing_context place)
552 : super(pos), expr(expr_arg), m_parsing_place(place) {}
553
554 public:
555 bool itemize(Parse_context *pc, Item **res) override;
556};
557
558class PTI_where final : public PTI_context {
559 public:
560 PTI_where(const POS &pos, Item *expr_arg)
561 : PTI_context(pos, expr_arg, CTX_WHERE) {}
562};
563
564class PTI_having final : public PTI_context {
565 public:
566 PTI_having(const POS &pos, Item *expr_arg)
567 : PTI_context(pos, expr_arg, CTX_HAVING) {}
568};
569
570#endif /* PARSE_TREE_ITEMS_INCLUDED */
Definition: item.h:5592
Definition: item_func.h:3223
Definition: item_timefunc.h:1155
This class is used to implement operations like SET @variable or @variable:= expression.
Definition: item_func.h:3155
Definition: item.h:5539
Dynamic parameters used as placeholders ('?') inside prepared statements.
Definition: item.h:4572
Definition: item.h:5255
void set_cs_specified(bool cs_specified)
Set the value of m_cs_specified attribute.
Definition: item.h:5437
void init(const char *str, size_t length, const CHARSET_INFO *cs, Derivation dv, uint repertoire)
Definition: item.h:5263
void set_repertoire_from_value()
Definition: item.h:5371
Definition: item_sum.h:1062
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:853
String str_value
str_values's main purpose is to cache the value in save_in_field
Definition: item.h:3367
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize() but with additional parameter.
Definition: item.cc:631
Bool_test
< Modifier for result transformation
Definition: item.h:937
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:6300
Definition: parse_tree_items.h:78
Item * left
Definition: parse_tree_items.h:81
bool is_all
Definition: parse_tree_items.h:83
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:175
Parse_tree_item super
Definition: parse_tree_items.h:79
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:87
PT_subquery * subselect
Definition: parse_tree_items.h:84
chooser_compare_func_creator comp_op
Definition: parse_tree_items.h:82
Definition: parse_tree_items.h:59
Parse_tree_item super
Definition: parse_tree_items.h:60
chooser_compare_func_creator boolfunc2creator
Definition: parse_tree_items.h:63
PTI_comp_op(const POS &pos, Item *left_arg, chooser_compare_func_creator boolfunc2creator_arg, Item *right_arg)
Definition: parse_tree_items.h:67
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:166
Item * right
Definition: parse_tree_items.h:64
Item * left
Definition: parse_tree_items.h:62
Definition: parse_tree_items.h:545
PTI_context(const POS &pos, Item *expr_arg, enum_parsing_context place)
Definition: parse_tree_items.h:551
Item * expr
Definition: parse_tree_items.h:547
const enum_parsing_context m_parsing_place
Definition: parse_tree_items.h:548
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:684
Parse_tree_item super
Definition: parse_tree_items.h:546
Definition: parse_tree_items.h:412
Item_sum_count super
Definition: parse_tree_items.h:413
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:582
PTI_count_sym(const POS &pos, PT_window *w)
Definition: parse_tree_items.h:416
Definition: parse_tree_items.h:446
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:320
Parse_tree_item super
Definition: parse_tree_items.h:447
PT_subquery * subselect
Definition: parse_tree_items.h:449
PTI_exists_subselect(const POS &pos, PT_subquery *subselect_arg)
Definition: parse_tree_items.h:452
Definition: parse_tree_items.h:489
Symbol_location expr_loc
Definition: parse_tree_items.h:493
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:335
Parse_tree_item super
Definition: parse_tree_items.h:490
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:497
LEX_CSTRING alias
Definition: parse_tree_items.h:494
Item * expr
Definition: parse_tree_items.h:492
Parse tree Item wrapper for 2-dimentional functional names (ex.
Definition: parse_tree_items.h:220
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:275
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:228
LEX_STRING db
Definition: parse_tree_items.h:223
LEX_STRING func
Definition: parse_tree_items.h:224
PT_item_list * opt_expr_list
Definition: parse_tree_items.h:225
Parse_tree_item super
Definition: parse_tree_items.h:221
Definition: parse_tree_items.h:198
PT_item_list * opt_udf_expr_list
Definition: parse_tree_items.h:202
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:234
Parse_tree_item super
Definition: parse_tree_items.h:199
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:207
LEX_STRING ident
Definition: parse_tree_items.h:201
udf_func * udf
Definition: parse_tree_items.h:204
Definition: parse_tree_items.h:157
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:481
PTI_function_call_nonkeyword_now(const POS &pos, uint8 dec_arg)
Definition: parse_tree_items.h:161
Item_func_now_local super
Definition: parse_tree_items.h:158
Definition: parse_tree_items.h:167
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:185
Parse_tree_item super
Definition: parse_tree_items.h:168
uint8 dec
Definition: parse_tree_items.h:170
PTI_function_call_nonkeyword_sysdate(const POS &pos, uint8 dec_arg)
Definition: parse_tree_items.h:173
Parse tree Item wrapper for 3-dimentional variable names.
Definition: parse_tree_items.h:390
const enum_var_type m_scope
Definition: parse_tree_items.h:406
const POS m_name_pos
Definition: parse_tree_items.h:407
Parse_tree_item super
Definition: parse_tree_items.h:391
const LEX_CSTRING m_name
Definition: parse_tree_items.h:409
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:558
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:394
const LEX_CSTRING m_opt_prefix
Definition: parse_tree_items.h:408
Definition: parse_tree_items.h:471
bool is_negation
Definition: parse_tree_items.h:475
PTI_handle_sql2003_note184_exception(const POS &pos, Item *left_arg, bool is_negation_arg, Item *right_arg)
Definition: parse_tree_items.h:479
Item * right
Definition: parse_tree_items.h:476
Item * left
Definition: parse_tree_items.h:474
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:326
Parse_tree_item super
Definition: parse_tree_items.h:472
Definition: parse_tree_items.h:564
PTI_having(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:566
Definition: parse_tree_items.h:422
Parse_tree_item super
Definition: parse_tree_items.h:423
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:588
Item * expr
Definition: parse_tree_items.h:425
PTI_in_sum_expr(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:428
Definition: parse_tree_items.h:505
PTI_int_splocal(const POS &pos, const LEX_CSTRING &name)
Definition: parse_tree_items.h:509
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:519
const POS m_location
Location of the variable name.
Definition: parse_tree_items.h:516
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:634
Definition: parse_tree_items.h:522
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:658
PTI_limit_option_ident(const POS &pos, const LEX_CSTRING &name)
Definition: parse_tree_items.h:526
Definition: parse_tree_items.h:532
Item_param * param_marker
Definition: parse_tree_items.h:535
PTI_limit_option_param_marker(const POS &pos, Item_param *param_marker_arg)
Definition: parse_tree_items.h:538
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:665
Parse_tree_item super
Definition: parse_tree_items.h:533
Definition: parse_tree_items.h:347
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.h:358
Item_string super
Definition: parse_tree_items.h:348
PTI_literal_underscore_charset_bin_num(const POS &pos, const CHARSET_INFO *charset, const LEX_STRING &literal)
Definition: parse_tree_items.h:351
Definition: parse_tree_items.h:327
Item_string super
Definition: parse_tree_items.h:328
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.h:338
PTI_literal_underscore_charset_hex_num(const POS &pos, const CHARSET_INFO *charset, const LEX_STRING &literal)
Definition: parse_tree_items.h:331
Definition: parse_tree_items.h:458
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:596
LEX_STRING ident
Definition: parse_tree_items.h:461
Item * expr
Definition: parse_tree_items.h:462
Parse_tree_item super
Definition: parse_tree_items.h:459
PTI_odbc_date(const POS &pos, const LEX_STRING &ident_arg, Item *expr_arg)
Definition: parse_tree_items.h:465
Definition: parse_tree_items.h:99
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:353
Parse_tree_item super
Definition: parse_tree_items.h:100
PTI_simple_ident_ident(const POS &pos, const LEX_CSTRING &ident_arg)
Definition: parse_tree_items.h:106
Symbol_location raw
Definition: parse_tree_items.h:103
LEX_CSTRING ident
Definition: parse_tree_items.h:102
Definition: parse_tree_items.h:145
LEX_STRING ident
Definition: parse_tree_items.h:148
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:461
Parse_tree_item super
Definition: parse_tree_items.h:146
PTI_simple_ident_nospvar_ident(const POS &pos, const LEX_STRING &ident_arg)
Definition: parse_tree_items.h:151
Parse tree Item wrapper for 3-dimentional simple_ident-s.
Definition: parse_tree_items.h:134
PTI_simple_ident_q_2d(const POS &pos, const char *table_arg, const char *field_arg)
Definition: parse_tree_items.h:138
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:409
PTI_simple_ident_q_3d super
Definition: parse_tree_items.h:135
Parse tree Item wrapper for 3-dimentional simple_ident-s.
Definition: parse_tree_items.h:115
const char * table
Definition: parse_tree_items.h:120
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:388
const char * db
Definition: parse_tree_items.h:119
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:124
Parse_tree_item super
Definition: parse_tree_items.h:116
const char * field
Definition: parse_tree_items.h:121
Definition: parse_tree_items.h:434
PT_subquery * subselect
Definition: parse_tree_items.h:437
PTI_singlerow_subselect(const POS &pos, PT_subquery *subselect_arg)
Definition: parse_tree_items.h:440
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:313
Parse_tree_item super
Definition: parse_tree_items.h:435
Definition: parse_tree_items.h:308
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:526
LEX_STRING literal
Definition: parse_tree_items.h:311
const CHARSET_INFO * cs
Definition: parse_tree_items.h:313
Parse_tree_item super
Definition: parse_tree_items.h:309
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:316
enum_field_types field_type
Definition: parse_tree_items.h:312
Definition: parse_tree_items.h:295
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:509
PTI_text_literal super
Definition: parse_tree_items.h:296
PTI_text_literal * head
Definition: parse_tree_items.h:298
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:301
Definition: parse_tree_items.h:262
PTI_text_literal_nchar_string(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:266
PTI_text_literal super
Definition: parse_tree_items.h:263
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:303
Definition: parse_tree_items.h:251
PTI_text_literal_text_string(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:255
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:488
PTI_text_literal super
Definition: parse_tree_items.h:252
Definition: parse_tree_items.h:273
PTI_text_literal super
Definition: parse_tree_items.h:274
const CHARSET_INFO * cs
Definition: parse_tree_items.h:276
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:279
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.h:284
Definition: parse_tree_items.h:239
PTI_text_literal(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:246
bool is_7bit
Definition: parse_tree_items.h:243
Item_string super
Definition: parse_tree_items.h:240
LEX_STRING literal
Definition: parse_tree_items.h:244
Definition: parse_tree_items.h:46
Item * expr
Definition: parse_tree_items.h:49
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:474
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_test truth_test
Definition: parse_tree_items.h:50
Definition: parse_tree_items.h:179
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:209
Parse_tree_item super
Definition: parse_tree_items.h:180
Item * expr
Definition: parse_tree_items.h:182
LEX_STRING select_alias
Definition: parse_tree_items.h:183
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:187
Symbol_location expr_loc
Definition: parse_tree_items.h:184
Definition: parse_tree_items.h:376
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:546
Item_func_get_user_var super
Definition: parse_tree_items.h:377
PTI_user_variable(const POS &pos, const LEX_STRING &var)
Definition: parse_tree_items.h:380
Definition: parse_tree_items.h:366
PTI_variable_aux_set_var(const POS &pos, const LEX_STRING &var, Item *expr)
Definition: parse_tree_items.h:370
Item_func_set_user_var super
Definition: parse_tree_items.h:367
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:534
Definition: parse_tree_items.h:558
PTI_where(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:560
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:1606
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:139
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
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:222
This file contains the field type.
enum_field_types
Column types for MySQL.
Definition: field_types.h:53
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:154
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:1052
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:58
@ CTX_HAVING
Subquery in HAVING clause item tree.
Definition: parse_tree_node_base.h:74
@ CTX_WHERE
Subquery in WHERE clause item tree.
Definition: parse_tree_node_base.h:71
"public" interface to sys_var - server configuration variables.
enum_var_type
Definition: set_var.h:90
@ DERIVATION_COERCIBLE
Definition: field.h:182
case opt name
Definition: sslopt-case.h:33
Definition: m_ctype.h:385
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
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:121
Helper class for the YYLTYPE.
Definition: parse_location.h:32
Bison "location" class.
Definition: parse_location.h:43
Definition: sql_udf.h:44