MySQL  8.0.27
Source Code Documentation
parse_tree_items.h
Go to the documentation of this file.
1 /* Copyright (c) 2013, 2021, 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 
41 class PT_subquery;
42 class PT_window;
43 struct 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 
58 class PTI_comp_op : public Parse_tree_item {
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:
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:
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:
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:
242  bool is_7bit;
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 
275  const CHARSET_INFO *cs;
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 
312  const CHARSET_INFO *cs;
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)
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)
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 
396 
397  public:
398  PTI_variable_aux_3d(const POS &pos, enum_var_type var_type_arg,
399  const LEX_STRING &ident1_arg, const POS &ident1_pos_arg,
400  const LEX_STRING &ident2_arg)
401  : super(pos),
402  var_type(var_type_arg),
403  ident1(ident1_arg),
404  ident1_pos(ident1_pos_arg),
405  ident2(ident2_arg) {}
406 
407  bool itemize(Parse_context *pc, Item **res) override;
408 };
409 
412 
413  public:
415  : super(pos, (Item *)nullptr, w) {}
416 
417  bool itemize(Parse_context *pc, Item **res) override;
418 };
419 
422 
424 
425  public:
426  PTI_in_sum_expr(const POS &pos, Item *expr_arg)
427  : super(pos), expr(expr_arg) {}
428 
429  bool itemize(Parse_context *pc, Item **res) override;
430 };
431 
434 
436 
437  public:
438  PTI_singlerow_subselect(const POS &pos, PT_subquery *subselect_arg)
439  : super(pos), subselect(subselect_arg) {}
440 
441  bool itemize(Parse_context *pc, Item **res) override;
442 };
443 
446 
448 
449  public:
450  PTI_exists_subselect(const POS &pos, PT_subquery *subselect_arg)
451  : super(pos), subselect(subselect_arg) {}
452 
453  bool itemize(Parse_context *pc, Item **res) override;
454 };
455 
458 
461 
462  public:
463  PTI_odbc_date(const POS &pos, const LEX_STRING &ident_arg, Item *expr_arg)
464  : super(pos), ident(ident_arg), expr(expr_arg) {}
465 
466  bool itemize(Parse_context *pc, Item **res) override;
467 };
468 
471 
475 
476  public:
478  bool is_negation_arg, Item *right_arg)
479  : super(pos),
480  left(left_arg),
481  is_negation(is_negation_arg),
482  right(right_arg) {}
483 
484  bool itemize(Parse_context *pc, Item **res) override;
485 };
486 
489 
493 
494  public:
495  PTI_expr_with_alias(const POS &pos, Item *expr_arg,
496  const Symbol_location &expr_loc_arg,
497  const LEX_CSTRING &alias_arg)
498  : super(pos), expr(expr_arg), expr_loc(expr_loc_arg), alias(alias_arg) {}
499 
500  bool itemize(Parse_context *pc, Item **res) override;
501 };
502 
505 
506  public:
508  : super(pos), m_location{pos}, m_name{name} {}
509 
510  bool itemize(Parse_context *pc, Item **res) override;
511 
512  private:
513  /// Location of the variable name.
515 
516  /// Same data as in PTI_in_sum_expr#m_location but 0-terminated "for free".
518 };
519 
522 
523  public:
525  : super{pos, name} {}
526 
527  bool itemize(Parse_context *pc, Item **res) override;
528 };
529 
532 
534 
535  public:
537  Item_param *param_marker_arg)
538  : super(pos), param_marker(param_marker_arg) {}
539 
540  bool itemize(Parse_context *pc, Item **res) override;
541 };
542 
543 class PTI_context : public Parse_tree_item {
547 
548  protected:
549  PTI_context(const POS &pos, Item *expr_arg, enum_parsing_context place)
550  : super(pos), expr(expr_arg), m_parsing_place(place) {}
551 
552  public:
553  bool itemize(Parse_context *pc, Item **res) override;
554 };
555 
556 class PTI_where final : public PTI_context {
557  public:
558  PTI_where(const POS &pos, Item *expr_arg)
559  : PTI_context(pos, expr_arg, CTX_WHERE) {}
560 };
561 
562 class PTI_having final : public PTI_context {
563  public:
564  PTI_having(const POS &pos, Item *expr_arg)
565  : PTI_context(pos, expr_arg, CTX_HAVING) {}
566 };
567 
568 #endif /* PARSE_TREE_ITEMS_INCLUDED */
Definition: item.h:5411
Definition: item_func.h:3276
Definition: item_timefunc.h:1154
This class is used to implement operations like SET @variable or @variable:= expression.
Definition: item_func.h:3208
Definition: item.h:5358
Dynamic parameters used as placeholders ('?') inside prepared statements.
Definition: item.h:4434
Definition: item.h:5075
void set_cs_specified(bool cs_specified)
Set the value of m_cs_specified attribute.
Definition: item.h:5257
void init(const char *str, size_t length, const CHARSET_INFO *cs, Derivation dv, uint repertoire)
Definition: item.h:5083
void set_repertoire_from_value()
Definition: item.h:5191
Definition: item_sum.h:1043
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:802
String str_value
str_values's main purpose is to cache the value in save_in_field
Definition: item.h:3245
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize() but with additional parameter.
Definition: item.cc:616
Bool_test
< Modifier for result transformation
Definition: item.h:886
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:5814
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:543
PTI_context(const POS &pos, Item *expr_arg, enum_parsing_context place)
Definition: parse_tree_items.h:549
Item * expr
Definition: parse_tree_items.h:545
const enum_parsing_context m_parsing_place
Definition: parse_tree_items.h:546
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:705
Parse_tree_item super
Definition: parse_tree_items.h:544
Definition: parse_tree_items.h:410
Item_sum_count super
Definition: parse_tree_items.h:411
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:603
PTI_count_sym(const POS &pos, PT_window *w)
Definition: parse_tree_items.h:414
Definition: parse_tree_items.h:444
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:445
PT_subquery * subselect
Definition: parse_tree_items.h:447
PTI_exists_subselect(const POS &pos, PT_subquery *subselect_arg)
Definition: parse_tree_items.h:450
Definition: parse_tree_items.h:487
Symbol_location expr_loc
Definition: parse_tree_items.h:491
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:488
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:495
LEX_CSTRING alias
Definition: parse_tree_items.h:492
Item * expr
Definition: parse_tree_items.h:490
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:479
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
Definition: parse_tree_items.h:469
bool is_negation
Definition: parse_tree_items.h:473
PTI_handle_sql2003_note184_exception(const POS &pos, Item *left_arg, bool is_negation_arg, Item *right_arg)
Definition: parse_tree_items.h:477
Item * right
Definition: parse_tree_items.h:474
Item * left
Definition: parse_tree_items.h:472
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:470
Definition: parse_tree_items.h:562
PTI_having(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:564
Definition: parse_tree_items.h:420
Parse_tree_item super
Definition: parse_tree_items.h:421
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:609
Item * expr
Definition: parse_tree_items.h:423
PTI_in_sum_expr(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:426
Definition: parse_tree_items.h:503
PTI_int_splocal(const POS &pos, const LEX_CSTRING &name)
Definition: parse_tree_items.h:507
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:517
const POS m_location
Location of the variable name.
Definition: parse_tree_items.h:514
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:655
Definition: parse_tree_items.h:520
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:679
PTI_limit_option_ident(const POS &pos, const LEX_CSTRING &name)
Definition: parse_tree_items.h:524
Definition: parse_tree_items.h:530
Item_param * param_marker
Definition: parse_tree_items.h:533
PTI_limit_option_param_marker(const POS &pos, Item_param *param_marker_arg)
Definition: parse_tree_items.h:536
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:686
Parse_tree_item super
Definition: parse_tree_items.h:531
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:456
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:617
LEX_STRING ident
Definition: parse_tree_items.h:459
Item * expr
Definition: parse_tree_items.h:460
Parse_tree_item super
Definition: parse_tree_items.h:457
PTI_odbc_date(const POS &pos, const LEX_STRING &ident_arg, Item *expr_arg)
Definition: parse_tree_items.h:463
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:459
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:407
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:432
PT_subquery * subselect
Definition: parse_tree_items.h:435
PTI_singlerow_subselect(const POS &pos, PT_subquery *subselect_arg)
Definition: parse_tree_items.h:438
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:433
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:524
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:507
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:486
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:472
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:544
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
Parse tree Item wrapper for 3-dimentional variable names.
Definition: parse_tree_items.h:389
enum_var_type var_type
Definition: parse_tree_items.h:392
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:556
PTI_variable_aux_3d(const POS &pos, enum_var_type var_type_arg, const LEX_STRING &ident1_arg, const POS &ident1_pos_arg, const LEX_STRING &ident2_arg)
Definition: parse_tree_items.h:398
POS ident1_pos
Definition: parse_tree_items.h:394
Parse_tree_item super
Definition: parse_tree_items.h:390
LEX_STRING ident2
Definition: parse_tree_items.h:395
LEX_STRING ident1
Definition: parse_tree_items.h:393
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:532
Definition: parse_tree_items.h:556
PTI_where(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:558
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:101
Definition: parse_tree_nodes.h:1638
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:66
Parse_tree_item(const POS &pos)
Definition: parse_tree_helpers.h:68
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:102
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
Dialog Client Authentication nullptr
Definition: dialog.cc:352
char * pos
Definition: do_ctype.cc:76
This file contains the field type.
enum_field_types
Column types for MySQL.
Definition: field_types.h:57
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:131
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:1056
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:55
@ CTX_HAVING
Subquery in HAVING clause item tree.
Definition: parse_tree_node_base.h:71
@ CTX_WHERE
Subquery in WHERE clause item tree.
Definition: parse_tree_node_base.h:68
"public" interface to sys_var - server configuration variables.
enum_var_type
Definition: set_var.h:87
@ DERIVATION_COERCIBLE
Definition: field.h:180
case opt name
Definition: sslopt-case.h:32
Definition: m_ctype.h:354
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:90
Helper class for the YYLTYPE.
Definition: parse_location.h:31
Bison "location" class.
Definition: parse_location.h:42
Definition: sql_udf.h:43