MySQL  8.0.19
Source Code Documentation
parse_tree_items.h
Go to the documentation of this file.
1 /* Copyright (c) 2013, 2019, Oracle and/or its affiliates. All rights reserved.
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 <stddef.h>
27 
28 #include "field_types.h" // enum_field_types
29 #include "lex_string.h"
30 #include "m_ctype.h"
31 #include "my_inttypes.h"
32 #include "sql/field.h"
33 #include "sql/item.h"
34 #include "sql/item_func.h"
35 #include "sql/item_subselect.h"
36 #include "sql/item_sum.h" // Item_sum_count
37 #include "sql/item_timefunc.h" // Item_func_now_local
38 #include "sql/parse_location.h"
39 #include "sql/parse_tree_helpers.h" // Parse_tree_item
41 #include "sql/set_var.h"
42 
43 class PT_subquery;
44 class PT_window;
45 struct udf_func;
46 
49 
50  const char *schema;
51  const char *table;
52 
53  public:
54  explicit PTI_table_wild(const POS &pos, const char *schema_arg,
55  const char *table_arg)
56  : super(pos), schema(schema_arg), table(table_arg) {}
57 
58  bool itemize(Parse_context *pc, Item **item) override;
59 };
60 
63 
66 
67  public:
69  : super(pos), expr(expr_arg), truth_test(truth_test) {}
70 
71  bool itemize(Parse_context *pc, Item **res) override;
72 };
73 
74 class PTI_comp_op : public Parse_tree_item {
76 
80 
81  public:
82  PTI_comp_op(const POS &pos, Item *left_arg,
83  chooser_compare_func_creator boolfunc2creator_arg,
84  Item *right_arg)
85  : super(pos),
86  left(left_arg),
87  boolfunc2creator(boolfunc2creator_arg),
88  right(right_arg) {}
89 
90  bool itemize(Parse_context *pc, Item **res) override;
91 };
92 
95 
98  bool is_all;
100 
101  public:
102  PTI_comp_op_all(const POS &pos, Item *left_arg,
103  chooser_compare_func_creator comp_op_arg, bool is_all_arg,
104  PT_subquery *subselect_arg)
105  : super(pos),
106  left(left_arg),
107  comp_op(comp_op_arg),
108  is_all(is_all_arg),
109  subselect(subselect_arg) {}
110 
111  bool itemize(Parse_context *pc, Item **res) override;
112 };
113 
116 
119 
120  public:
121  PTI_simple_ident_ident(const POS &pos, const LEX_CSTRING &ident_arg)
122  : super(pos), ident(ident_arg), raw(pos.raw) {}
123 
124  bool itemize(Parse_context *pc, Item **res) override;
125 };
126 
127 /**
128  Parse tree Item wrapper for 3-dimentional simple_ident-s
129 */
132 
133  protected:
134  const char *db;
135  const char *table;
136  const char *field;
137 
138  public:
139  PTI_simple_ident_q_3d(const POS &pos, const char *db_arg,
140  const char *table_arg, const char *field_arg)
141  : super(pos), db(db_arg), table(table_arg), field(field_arg) {}
142 
143  bool itemize(Parse_context *pc, Item **res) override;
144 };
145 
146 /**
147  Parse tree Item wrapper for 3-dimentional simple_ident-s
148 */
151 
152  public:
153  PTI_simple_ident_q_2d(const POS &pos, const char *table_arg,
154  const char *field_arg)
155  : super(pos, NULL, table_arg, field_arg) {}
156 
157  bool itemize(Parse_context *pc, Item **res) override;
158 };
159 
162 
164 
165  public:
167  : super(pos), ident(ident_arg) {}
168 
169  bool itemize(Parse_context *pc, Item **res) override;
170 };
171 
174 
175  public:
177  : super(pos, dec_arg) {}
178 
179  bool itemize(Parse_context *pc, Item **res) override;
180 };
181 
184 
186 
187  public:
189  : super(pos), dec(dec_arg) {}
190 
191  bool itemize(Parse_context *pc, Item **res) override;
192 };
193 
196 
200 
201  public:
202  PTI_udf_expr(const POS &pos, Item *expr_arg,
203  const LEX_STRING &select_alias_arg,
204  const Symbol_location &expr_loc_arg)
205  : super(pos),
206  expr(expr_arg),
207  select_alias(select_alias_arg),
208  expr_loc(expr_loc_arg) {}
209 
210  bool itemize(Parse_context *pc, Item **res) override;
211 };
212 
215 
218 
220 
221  public:
223  const LEX_STRING &ident_arg,
224  PT_item_list *opt_udf_expr_list_arg)
225  : super(pos),
226  ident(ident_arg),
227  opt_udf_expr_list(opt_udf_expr_list_arg) {}
228 
229  bool itemize(Parse_context *pc, Item **res) override;
230 };
231 
232 /**
233  Parse tree Item wrapper for 2-dimentional functional names (ex.: db.func_name)
234 */
237 
241 
242  public:
244  const LEX_STRING &func_arg,
245  PT_item_list *opt_expr_list_arg)
246  : super(pos),
247  db(db_arg),
248  func(func_arg),
249  opt_expr_list(opt_expr_list_arg) {}
250 
251  bool itemize(Parse_context *pc, Item **res) override;
252 };
253 
256 
257  protected:
258  bool is_7bit;
260 
261  PTI_text_literal(const POS &pos, bool is_7bit_arg,
262  const LEX_STRING &literal_arg)
263  : super(pos), is_7bit(is_7bit_arg), literal(literal_arg) {}
264 };
265 
268 
269  public:
270  PTI_text_literal_text_string(const POS &pos, bool is_7bit_arg,
271  const LEX_STRING &literal_arg)
272  : super(pos, is_7bit_arg, literal_arg) {}
273 
274  bool itemize(Parse_context *pc, Item **res) override;
275 };
276 
279 
280  public:
281  PTI_text_literal_nchar_string(const POS &pos, bool is_7bit_arg,
282  const LEX_STRING &literal_arg)
283  : super(pos, is_7bit_arg, literal_arg) {}
284 
285  bool itemize(Parse_context *pc, Item **res) override;
286 };
287 
290 
291  const CHARSET_INFO *cs;
292 
293  public:
294  PTI_text_literal_underscore_charset(const POS &pos, bool is_7bit_arg,
295  const CHARSET_INFO *cs_arg,
296  const LEX_STRING &literal_arg)
297  : super(pos, is_7bit_arg, literal_arg), cs(cs_arg) {}
298 
299  bool itemize(Parse_context *pc, Item **res) override {
300  if (super::itemize(pc, res)) return true;
301 
305  set_cs_specified(true);
306  return false;
307  }
308 };
309 
312 
314 
315  public:
316  PTI_text_literal_concat(const POS &pos, bool is_7bit_arg,
317  PTI_text_literal *head_arg, const LEX_STRING &tail)
318  : super(pos, is_7bit_arg, tail), head(head_arg) {}
319 
320  bool itemize(Parse_context *pc, Item **res) override;
321 };
322 
325 
328  const CHARSET_INFO *cs;
329 
330  public:
331  PTI_temporal_literal(const POS &pos, const LEX_STRING &literal_arg,
332  enum_field_types field_type_arg,
333  const CHARSET_INFO *cs_arg)
334  : super(pos),
335  literal(literal_arg),
336  field_type(field_type_arg),
337  cs(cs_arg) {}
338 
339  bool itemize(Parse_context *pc, Item **res) override;
340 };
341 
344 
345  public:
347  const CHARSET_INFO *charset,
348  const LEX_STRING &literal)
350  Item_hex_string::make_hex_str(literal.str, literal.length),
351  charset) {}
352 
353  bool itemize(Parse_context *pc, Item **res) override {
354  if (super::itemize(pc, res)) return true;
355 
357  set_cs_specified(true);
358  return check_well_formed_result(&str_value, true, true) == NULL;
359  }
360 };
361 
364 
365  public:
367  const CHARSET_INFO *charset,
368  const LEX_STRING &literal)
370  Item_bin_string::make_bin_str(literal.str, literal.length),
371  charset) {}
372 
373  bool itemize(Parse_context *pc, Item **res) override {
374  if (super::itemize(pc, res)) return true;
375 
376  set_cs_specified(true);
377  return check_well_formed_result(&str_value, true, true) == NULL;
378  }
379 };
380 
383 
384  public:
385  PTI_variable_aux_set_var(const POS &pos, const LEX_STRING &var, Item *expr)
386  : super(pos, var, expr, false) {}
387 
388  bool itemize(Parse_context *pc, Item **res) override;
389 };
390 
393 
394  public:
396  : super(pos, var) {}
397 
398  bool itemize(Parse_context *pc, Item **res) override;
399 };
400 
401 /**
402  Parse tree Item wrapper for 3-dimentional variable names
403 
404  Example: \@global.default.x
405 */
408 
413 
414  public:
415  PTI_variable_aux_3d(const POS &pos, enum_var_type var_type_arg,
416  const LEX_STRING &ident1_arg, const POS &ident1_pos_arg,
417  const LEX_STRING &ident2_arg)
418  : super(pos),
419  var_type(var_type_arg),
420  ident1(ident1_arg),
421  ident1_pos(ident1_pos_arg),
422  ident2(ident2_arg) {}
423 
424  bool itemize(Parse_context *pc, Item **res) override;
425 };
426 
429 
430  public:
431  PTI_count_sym(const POS &pos, PT_window *w) : super(pos, (Item *)NULL, w) {}
432 
433  bool itemize(Parse_context *pc, Item **res) override;
434 };
435 
438 
440 
441  public:
442  PTI_in_sum_expr(const POS &pos, Item *expr_arg)
443  : super(pos), expr(expr_arg) {}
444 
445  bool itemize(Parse_context *pc, Item **res) override;
446 };
447 
450 
452 
453  public:
454  PTI_singlerow_subselect(const POS &pos, PT_subquery *subselect_arg)
455  : super(pos), subselect(subselect_arg) {}
456 
457  bool itemize(Parse_context *pc, Item **res) override;
458 };
459 
462 
464 
465  public:
466  PTI_exists_subselect(const POS &pos, PT_subquery *subselect_arg)
467  : super(pos), subselect(subselect_arg) {}
468 
469  bool itemize(Parse_context *pc, Item **res) override;
470 };
471 
474 
477 
478  public:
479  PTI_odbc_date(const POS &pos, const LEX_STRING &ident_arg, Item *expr_arg)
480  : super(pos), ident(ident_arg), expr(expr_arg) {}
481 
482  bool itemize(Parse_context *pc, Item **res) override;
483 };
484 
487 
491 
492  public:
494  bool is_negation_arg, Item *right_arg)
495  : super(pos),
496  left(left_arg),
497  is_negation(is_negation_arg),
498  right(right_arg) {}
499 
500  bool itemize(Parse_context *pc, Item **res) override;
501 };
502 
505 
509 
510  public:
511  PTI_expr_with_alias(const POS &pos, Item *expr_arg,
512  const Symbol_location &expr_loc_arg,
513  const LEX_CSTRING &alias_arg)
514  : super(pos), expr(expr_arg), expr_loc(expr_loc_arg), alias(alias_arg) {}
515 
516  bool itemize(Parse_context *pc, Item **res) override;
517 };
518 
521 
524 
525  public:
526  PTI_limit_option_ident(const POS &pos, const LEX_CSTRING &ident_arg,
527  const Symbol_location &ident_loc_arg)
528  : super(pos), ident(ident_arg), ident_loc(ident_loc_arg) {}
529 
530  bool itemize(Parse_context *pc, Item **res) override;
531 };
532 
535 
537 
538  public:
540  Item_param *param_marker_arg)
541  : super(pos), param_marker(param_marker_arg) {}
542 
543  bool itemize(Parse_context *pc, Item **res) override;
544 };
545 
546 class PTI_context : public Parse_tree_item {
550 
551  protected:
552  PTI_context(const POS &pos, Item *expr_arg, enum_parsing_context place)
553  : super(pos), expr(expr_arg), m_parsing_place(place) {}
554 
555  public:
556  bool itemize(Parse_context *pc, Item **res) override;
557 };
558 
559 class PTI_where final : public PTI_context {
560  public:
561  PTI_where(const POS &pos, Item *expr_arg)
562  : PTI_context(pos, expr_arg, CTX_WHERE) {}
563 };
564 
565 class PTI_having final : public PTI_context {
566  public:
567  PTI_having(const POS &pos, Item *expr_arg)
568  : PTI_context(pos, expr_arg, CTX_HAVING) {}
569 };
570 
571 #endif /* PARSE_TREE_ITEMS_INCLUDED */
Item_hex_string
Definition: item.h:4463
PTI_expr_with_alias
Definition: parse_tree_items.h:503
null_name_string
const Name_string null_name_string(NULL, 0)
PTI_context::expr
Item * expr
Definition: parse_tree_items.h:548
PTI_udf_expr::super
Parse_tree_item super
Definition: parse_tree_items.h:195
MYSQL_LEX_CSTRING
Definition: mysql_lex_string.h:39
Item
Definition: item.h:665
PTI_limit_option_ident::PTI_limit_option_ident
PTI_limit_option_ident(const POS &pos, const LEX_CSTRING &ident_arg, const Symbol_location &ident_loc_arg)
Definition: parse_tree_items.h:526
PTI_text_literal_nchar_string
Definition: parse_tree_items.h:277
PTI_function_call_generic_2d::func
LEX_STRING func
Definition: parse_tree_items.h:239
field_types.h
This file contains the field type.
PTI_table_wild::table
const char * table
Definition: parse_tree_items.h:51
PTI_variable_aux_3d::ident2
LEX_STRING ident2
Definition: parse_tree_items.h:412
PTI_function_call_nonkeyword_now::PTI_function_call_nonkeyword_now
PTI_function_call_nonkeyword_now(const POS &pos, uint8 dec_arg)
Definition: parse_tree_items.h:176
PTI_udf_expr::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:219
PTI_where
Definition: parse_tree_items.h:559
PTI_literal_underscore_charset_hex_num
Definition: parse_tree_items.h:342
MY_REPERTOIRE_UNICODE30
#define MY_REPERTOIRE_UNICODE30
Definition: m_ctype.h:131
PTI_table_wild::schema
const char * schema
Definition: parse_tree_items.h:50
PTI_udf_expr::expr_loc
Symbol_location expr_loc
Definition: parse_tree_items.h:199
NULL
#define NULL
Definition: types.h:55
PTI_function_call_nonkeyword_now::super
Item_func_now_local super
Definition: parse_tree_items.h:173
Item_func_now_local
Definition: item_timefunc.h:1171
enum_parsing_context
enum_parsing_context
Names for different query parse tree parts.
Definition: parse_tree_node_base.h:55
PTI_simple_ident_q_3d::db
const char * db
Definition: parse_tree_items.h:134
PTI_comp_op_all::PTI_comp_op_all
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:102
PTI_text_literal_text_string::PTI_text_literal_text_string
PTI_text_literal_text_string(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:270
PTI_simple_ident_q_2d
Parse tree Item wrapper for 3-dimentional simple_ident-s.
Definition: parse_tree_items.h:149
PTI_function_call_nonkeyword_sysdate::PTI_function_call_nonkeyword_sysdate
PTI_function_call_nonkeyword_sysdate(const POS &pos, uint8 dec_arg)
Definition: parse_tree_items.h:188
PTI_udf_expr::expr
Item * expr
Definition: parse_tree_items.h:197
CHARSET_INFO
Definition: m_ctype.h:354
PTI_comp_op::right
Item * right
Definition: parse_tree_items.h:79
PTI_singlerow_subselect::subselect
PT_subquery * subselect
Definition: parse_tree_items.h:451
PTI_simple_ident_nospvar_ident::ident
LEX_STRING ident
Definition: parse_tree_items.h:163
PTI_simple_ident_ident::raw
Symbol_location raw
Definition: parse_tree_items.h:118
PTI_udf_expr::PTI_udf_expr
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:202
PTI_text_literal_concat
Definition: parse_tree_items.h:310
PTI_function_call_generic_2d::opt_expr_list
PT_item_list * opt_expr_list
Definition: parse_tree_items.h:240
PTI_function_call_generic_2d::db
LEX_STRING db
Definition: parse_tree_items.h:238
pos
char * pos
Definition: do_ctype.cc:76
PTI_handle_sql2003_note184_exception
Definition: parse_tree_items.h:485
PTI_comp_op_all
Definition: parse_tree_items.h:93
Parse_tree_node_tmpl
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:111
PTI_truth_transform::expr
Item * expr
Definition: parse_tree_items.h:64
PTI_variable_aux_3d::var_type
enum_var_type var_type
Definition: parse_tree_items.h:409
PTI_limit_option_param_marker::param_marker
Item_param * param_marker
Definition: parse_tree_items.h:536
PTI_limit_option_ident::ident
LEX_CSTRING ident
Definition: parse_tree_items.h:522
PTI_simple_ident_ident::PTI_simple_ident_ident
PTI_simple_ident_ident(const POS &pos, const LEX_CSTRING &ident_arg)
Definition: parse_tree_items.h:121
enum_var_type
enum_var_type
Definition: set_var.h:87
PTI_in_sum_expr::expr
Item * expr
Definition: parse_tree_items.h:439
Item::Bool_test
Bool_test
< Modifier for result transformation
Definition: item.h:749
PTI_count_sym::PTI_count_sym
PTI_count_sym(const POS &pos, PT_window *w)
Definition: parse_tree_items.h:431
PTI_having::PTI_having
PTI_having(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:567
PTI_comp_op_all::is_all
bool is_all
Definition: parse_tree_items.h:98
PTI_text_literal_underscore_charset::super
PTI_text_literal super
Definition: parse_tree_items.h:289
PTI_function_call_generic_2d::PTI_function_call_generic_2d
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:243
PTI_comp_op_all::super
Parse_tree_item super
Definition: parse_tree_items.h:94
PTI_limit_option_ident::ident_loc
Symbol_location ident_loc
Definition: parse_tree_items.h:523
PTI_comp_op_all::subselect
PT_subquery * subselect
Definition: parse_tree_items.h:99
PTI_handle_sql2003_note184_exception::super
Parse_tree_item super
Definition: parse_tree_items.h:486
PTI_handle_sql2003_note184_exception::is_negation
bool is_negation
Definition: parse_tree_items.h:489
PTI_variable_aux_set_var
Definition: parse_tree_items.h:381
PTI_odbc_date::ident
LEX_STRING ident
Definition: parse_tree_items.h:475
Item::str_value
String str_value
str_values's main purpose is to cache the value in save_in_field
Definition: item.h:2631
PTI_function_call_nonkeyword_now::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:488
udf_func
Definition: sql_udf.h:43
PTI_comp_op::boolfunc2creator
chooser_compare_func_creator boolfunc2creator
Definition: parse_tree_items.h:78
PTI_odbc_date
Definition: parse_tree_items.h:472
PTI_handle_sql2003_note184_exception::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:335
PTI_function_call_nonkeyword_sysdate::super
Parse_tree_item super
Definition: parse_tree_items.h:183
PTI_count_sym
Definition: parse_tree_items.h:427
PTI_literal_underscore_charset_bin_num::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.h:373
PTI_handle_sql2003_note184_exception::PTI_handle_sql2003_note184_exception
PTI_handle_sql2003_note184_exception(const POS &pos, Item *left_arg, bool is_negation_arg, Item *right_arg)
Definition: parse_tree_items.h:493
PTI_text_literal_nchar_string::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:313
PTI_odbc_date::expr
Item * expr
Definition: parse_tree_items.h:476
PTI_temporal_literal::cs
const CHARSET_INFO * cs
Definition: parse_tree_items.h:328
PTI_simple_ident_q_2d::PTI_simple_ident_q_2d
PTI_simple_ident_q_2d(const POS &pos, const char *table_arg, const char *field_arg)
Definition: parse_tree_items.h:153
item_func.h
Item_func_set_user_var
Definition: item_func.h:3035
PTI_temporal_literal
Definition: parse_tree_items.h:323
PTI_expr_with_alias::PTI_expr_with_alias
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:511
PTI_text_literal_text_string
Definition: parse_tree_items.h:266
PTI_context
Definition: parse_tree_items.h:546
PTI_truth_transform::super
Parse_tree_item super
Definition: parse_tree_items.h:62
PTI_variable_aux_set_var::PTI_variable_aux_set_var
PTI_variable_aux_set_var(const POS &pos, const LEX_STRING &var, Item *expr)
Definition: parse_tree_items.h:385
PTI_comp_op_all::comp_op
chooser_compare_func_creator comp_op
Definition: parse_tree_items.h:97
PTI_function_call_generic_ident_sys::PTI_function_call_generic_ident_sys
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:222
Item_string
Definition: item.h:4183
PTI_odbc_date::PTI_odbc_date
PTI_odbc_date(const POS &pos, const LEX_STRING &ident_arg, Item *expr_arg)
Definition: parse_tree_items.h:479
PTI_text_literal::literal
LEX_STRING literal
Definition: parse_tree_items.h:259
PTI_variable_aux_3d::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:565
Item_string::set_cs_specified
void set_cs_specified(bool cs_specified)
Set the value of m_cs_specified attribute.
Definition: item.h:4363
PTI_simple_ident_q_2d::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:417
PTI_function_call_nonkeyword_now
Definition: parse_tree_items.h:172
PTI_in_sum_expr
Definition: parse_tree_items.h:436
PTI_text_literal_underscore_charset::cs
const CHARSET_INFO * cs
Definition: parse_tree_items.h:291
PTI_limit_option_param_marker::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:691
PTI_function_call_generic_ident_sys::super
Parse_tree_item super
Definition: parse_tree_items.h:214
Item_string::set_repertoire_from_value
void set_repertoire_from_value()
Definition: item.h:4297
PTI_exists_subselect::subselect
PT_subquery * subselect
Definition: parse_tree_items.h:463
Symbol_location
Helper class for the YYLTYPE.
Definition: parse_location.h:32
PTI_simple_ident_q_3d::PTI_simple_ident_q_3d
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:139
PTI_simple_ident_ident::ident
LEX_CSTRING ident
Definition: parse_tree_items.h:117
Parse_tree_item
Base class for parse-time Item objects.
Definition: parse_tree_helpers.h:61
my_inttypes.h
PTI_text_literal_concat::PTI_text_literal_concat
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:316
PTI_comp_op_all::left
Item * left
Definition: parse_tree_items.h:96
PTI_variable_aux_ident_or_text
Definition: parse_tree_items.h:391
PTI_function_call_generic_ident_sys::opt_udf_expr_list
PT_item_list * opt_udf_expr_list
Definition: parse_tree_items.h:217
field.h
PTI_simple_ident_q_2d::super
PTI_simple_ident_q_3d super
Definition: parse_tree_items.h:150
PTI_text_literal_concat::super
PTI_text_literal super
Definition: parse_tree_items.h:311
PTI_variable_aux_3d
Parse tree Item wrapper for 3-dimentional variable names.
Definition: parse_tree_items.h:406
m_ctype.h
PT_subquery
Definition: parse_tree_nodes.h:1660
PTI_truth_transform::PTI_truth_transform
PTI_truth_transform(const POS &pos, Item *expr_arg, Bool_test truth_test)
Definition: parse_tree_items.h:68
PTI_handle_sql2003_note184_exception::left
Item * left
Definition: parse_tree_items.h:488
item_subselect.h
PTI_variable_aux_3d::ident1_pos
POS ident1_pos
Definition: parse_tree_items.h:411
Item_param
Placeholder ('?') of prepared statement.
Definition: item.h:3649
lex_string.h
Item_bin_string
Definition: item.h:4515
PTI_table_wild::itemize
bool itemize(Parse_context *pc, Item **item) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:164
PTI_limit_option_ident::super
Parse_tree_item super
Definition: parse_tree_items.h:520
parse_location.h
PTI_literal_underscore_charset_bin_num::PTI_literal_underscore_charset_bin_num
PTI_literal_underscore_charset_bin_num(const POS &pos, const CHARSET_INFO *charset, const LEX_STRING &literal)
Definition: parse_tree_items.h:366
PTI_function_call_generic_ident_sys::udf
udf_func * udf
Definition: parse_tree_items.h:219
PTI_truth_transform::truth_test
Bool_test truth_test
Definition: parse_tree_items.h:65
PTI_literal_underscore_charset_hex_num::PTI_literal_underscore_charset_hex_num
PTI_literal_underscore_charset_hex_num(const POS &pos, const CHARSET_INFO *charset, const LEX_STRING &literal)
Definition: parse_tree_items.h:346
set_var.h
PTI_function_call_generic_2d::super
Parse_tree_item super
Definition: parse_tree_items.h:236
PTI_simple_ident_nospvar_ident::PTI_simple_ident_nospvar_ident
PTI_simple_ident_nospvar_ident(const POS &pos, const LEX_STRING &ident_arg)
Definition: parse_tree_items.h:166
enum_field_types
enum_field_types
Column types for MySQL.
Definition: field_types.h:52
PTI_text_literal_underscore_charset::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.h:299
PTI_context::m_parsing_place
const enum_parsing_context m_parsing_place
Definition: parse_tree_items.h:549
PTI_comp_op_all::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:185
PTI_limit_option_ident::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:667
PTI_handle_sql2003_note184_exception::right
Item * right
Definition: parse_tree_items.h:490
PTI_temporal_literal::literal
LEX_STRING literal
Definition: parse_tree_items.h:326
PTI_text_literal::is_7bit
bool is_7bit
Definition: parse_tree_items.h:258
Item_func_get_user_var
Definition: item_func.h:3140
chooser_compare_func_creator
Comp_creator *(* chooser_compare_func_creator)(bool invert)
Convenience typedef used in this file, and further used by any files including this file.
Definition: item_subselect.h:71
PTI_where::PTI_where
PTI_where(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:561
PTI_simple_ident_q_3d::super
Parse_tree_item super
Definition: parse_tree_items.h:131
PTI_function_call_generic_2d::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:285
CTX_WHERE
@ CTX_WHERE
Subquery in WHERE clause item tree.
Definition: parse_tree_node_base.h:68
PTI_singlerow_subselect::PTI_singlerow_subselect
PTI_singlerow_subselect(const POS &pos, PT_subquery *subselect_arg)
Definition: parse_tree_items.h:454
PTI_expr_with_alias::expr
Item * expr
Definition: parse_tree_items.h:506
PTI_in_sum_expr::PTI_in_sum_expr
PTI_in_sum_expr(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:442
PTI_text_literal_underscore_charset
Definition: parse_tree_items.h:288
PTI_text_literal
Definition: parse_tree_items.h:254
parse_tree_helpers.h
PTI_simple_ident_ident::super
Parse_tree_item super
Definition: parse_tree_items.h:115
PTI_simple_ident_q_3d
Parse tree Item wrapper for 3-dimentional simple_ident-s.
Definition: parse_tree_items.h:130
PTI_simple_ident_nospvar_ident
Definition: parse_tree_items.h:160
PTI_context::PTI_context
PTI_context(const POS &pos, Item *expr_arg, enum_parsing_context place)
Definition: parse_tree_items.h:552
PTI_udf_expr
Definition: parse_tree_items.h:194
PTI_function_call_nonkeyword_sysdate
Definition: parse_tree_items.h:182
DERIVATION_COERCIBLE
@ DERIVATION_COERCIBLE
Definition: field.h:178
PTI_text_literal::PTI_text_literal
PTI_text_literal(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:261
PTI_simple_ident_q_3d::table
const char * table
Definition: parse_tree_items.h:135
CTX_HAVING
@ CTX_HAVING
Subquery in HAVING clause item tree.
Definition: parse_tree_node_base.h:71
PTI_function_call_generic_2d
Parse tree Item wrapper for 2-dimentional functional names (ex.
Definition: parse_tree_items.h:235
PTI_text_literal_concat::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:516
PTI_simple_ident_nospvar_ident::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:468
PTI_limit_option_param_marker
Definition: parse_tree_items.h:533
PTI_table_wild::PTI_table_wild
PTI_table_wild(const POS &pos, const char *schema_arg, const char *table_arg)
Definition: parse_tree_items.h:54
PTI_expr_with_alias::alias
LEX_CSTRING alias
Definition: parse_tree_items.h:508
PT_item_list
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:96
PTI_simple_ident_ident::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:362
item_timefunc.h
PTI_singlerow_subselect::super
Parse_tree_item super
Definition: parse_tree_items.h:449
PTI_text_literal_text_string::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:495
PTI_expr_with_alias::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:344
Item::itemize
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize() but with additional parameter.
Definition: item.cc:588
PT_window
Parse tree node for a window; just a shallow wrapper for class Window, q.v.
Definition: parse_tree_nodes.h:1393
PTI_variable_aux_ident_or_text::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:553
PTI_limit_option_param_marker::PTI_limit_option_param_marker
PTI_limit_option_param_marker(const POS &pos, Item_param *param_marker_arg)
Definition: parse_tree_items.h:539
PTI_table_wild
Definition: parse_tree_items.h:47
PTI_comp_op::left
Item * left
Definition: parse_tree_items.h:77
MYSQL_LEX_STRING
Definition: mysql_lex_string.h:34
YYLTYPE
Bison "location" class.
Definition: parse_location.h:43
PTI_text_literal_nchar_string::PTI_text_literal_nchar_string
PTI_text_literal_nchar_string(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:281
PTI_expr_with_alias::expr_loc
Symbol_location expr_loc
Definition: parse_tree_items.h:507
uint8
uint8_t uint8
Definition: my_inttypes.h:62
PTI_exists_subselect::super
Parse_tree_item super
Definition: parse_tree_items.h:461
PTI_exists_subselect::PTI_exists_subselect
PTI_exists_subselect(const POS &pos, PT_subquery *subselect_arg)
Definition: parse_tree_items.h:466
PTI_simple_ident_q_3d::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:397
PTI_count_sym::super
Item_sum_count super
Definition: parse_tree_items.h:428
PTI_limit_option_param_marker::super
Parse_tree_item super
Definition: parse_tree_items.h:534
PTI_variable_aux_3d::super
Parse_tree_item super
Definition: parse_tree_items.h:407
PTI_count_sym::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:615
PTI_context::super
Parse_tree_item super
Definition: parse_tree_items.h:547
PTI_text_literal_text_string::super
PTI_text_literal super
Definition: parse_tree_items.h:267
PTI_variable_aux_set_var::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:541
PTI_function_call_generic_ident_sys::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:244
Item_sum_count
Definition: item_sum.h:1020
PTI_comp_op::PTI_comp_op
PTI_comp_op(const POS &pos, Item *left_arg, chooser_compare_func_creator boolfunc2creator_arg, Item *right_arg)
Definition: parse_tree_items.h:82
PTI_odbc_date::super
Parse_tree_item super
Definition: parse_tree_items.h:473
PTI_truth_transform::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:481
Parse_context
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:99
PTI_expr_with_alias::super
Parse_tree_item super
Definition: parse_tree_items.h:504
PTI_variable_aux_set_var::super
Item_func_set_user_var super
Definition: parse_tree_items.h:382
PTI_variable_aux_ident_or_text::PTI_variable_aux_ident_or_text
PTI_variable_aux_ident_or_text(const POS &pos, const LEX_STRING &var)
Definition: parse_tree_items.h:395
PTI_comp_op
Definition: parse_tree_items.h:74
PTI_exists_subselect::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:329
PTI_table_wild::super
Parse_tree_item super
Definition: parse_tree_items.h:48
PTI_comp_op::super
Parse_tree_item super
Definition: parse_tree_items.h:75
gis::length
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
PTI_simple_ident_nospvar_ident::super
Parse_tree_item super
Definition: parse_tree_items.h:161
PTI_temporal_literal::field_type
enum_field_types field_type
Definition: parse_tree_items.h:327
Item::check_well_formed_result
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:5617
PTI_singlerow_subselect::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:323
PTI_context::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:711
PTI_temporal_literal::super
Parse_tree_item super
Definition: parse_tree_items.h:324
parse_tree_node_base.h
PTI_variable_aux_3d::ident1
LEX_STRING ident1
Definition: parse_tree_items.h:410
PTI_odbc_date::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:629
MYSQL_LEX_STRING::str
char * str
Definition: mysql_lex_string.h:35
PTI_literal_underscore_charset_bin_num
Definition: parse_tree_items.h:362
PTI_udf_expr::select_alias
LEX_STRING select_alias
Definition: parse_tree_items.h:198
udf_ext::consts::charset
const std::string charset("charset")
PTI_simple_ident_q_3d::field
const char * field
Definition: parse_tree_items.h:136
PTI_function_call_nonkeyword_sysdate::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:195
PTI_literal_underscore_charset_hex_num::super
Item_string super
Definition: parse_tree_items.h:343
MYSQL_LEX_STRING::length
size_t length
Definition: mysql_lex_string.h:36
PTI_simple_ident_ident
Definition: parse_tree_items.h:114
PTI_literal_underscore_charset_bin_num::super
Item_string super
Definition: parse_tree_items.h:363
PTI_in_sum_expr::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:621
PTI_exists_subselect
Definition: parse_tree_items.h:460
final
#define final(a, b, c)
Definition: hash.c:109
PTI_variable_aux_ident_or_text::super
Item_func_get_user_var super
Definition: parse_tree_items.h:392
PTI_in_sum_expr::super
Parse_tree_item super
Definition: parse_tree_items.h:437
PTI_text_literal::super
Item_string super
Definition: parse_tree_items.h:255
PTI_singlerow_subselect
Definition: parse_tree_items.h:448
PTI_function_call_generic_ident_sys
Definition: parse_tree_items.h:213
PTI_temporal_literal::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:533
PTI_text_literal_nchar_string::super
PTI_text_literal super
Definition: parse_tree_items.h:278
PTI_truth_transform
Definition: parse_tree_items.h:61
PTI_literal_underscore_charset_hex_num::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.h:353
PTI_comp_op::itemize
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: parse_tree_items.cc:176
PTI_variable_aux_3d::PTI_variable_aux_3d
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:415
PTI_text_literal_underscore_charset::PTI_text_literal_underscore_charset
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:294
item_sum.h
PTI_function_call_nonkeyword_sysdate::dec
uint8 dec
Definition: parse_tree_items.h:185
PTI_text_literal_concat::head
PTI_text_literal * head
Definition: parse_tree_items.h:313
Item_string::init
void init(const char *str, size_t length, const CHARSET_INFO *cs, Derivation dv, uint repertoire)
Definition: item.h:4191
PTI_function_call_generic_ident_sys::ident
LEX_STRING ident
Definition: parse_tree_items.h:216
PTI_having
Definition: parse_tree_items.h:565
PTI_temporal_literal::PTI_temporal_literal
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:331
PTI_limit_option_ident
Definition: parse_tree_items.h:519
false
#define false
Definition: config_static.h:43
item.h