MySQL  8.0.17
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 #include <sys/types.h>
28 
29 #include "field_types.h" // enum_field_types
30 #include "lex_string.h"
31 #include "m_ctype.h"
32 #include "m_string.h"
33 #include "my_dbug.h"
34 #include "my_inttypes.h"
35 #include "my_sys.h"
36 #include "my_time.h"
37 #include "mysql_com.h"
38 #include "mysqld_error.h"
39 #include "sql/field.h"
40 #include "sql/item.h"
41 #include "sql/item_create.h" // Create_func
42 #include "sql/item_func.h"
43 #include "sql/item_strfunc.h"
44 #include "sql/item_subselect.h"
45 #include "sql/item_sum.h" // Item_sum_count
46 #include "sql/item_timefunc.h" // Item_func_now_local
47 #include "sql/parse_location.h"
48 #include "sql/parse_tree_helpers.h" // Parse_tree_item
50 #include "sql/protocol.h"
51 #include "sql/set_var.h"
52 #include "sql/sp_head.h" // sp_head
53 #include "sql/sql_class.h"
54 #include "sql/sql_error.h"
55 #include "sql/sql_lex.h"
56 #include "sql/sql_list.h"
57 #include "sql/system_variables.h"
58 #include "sql_string.h"
59 
60 class PT_subquery;
61 class PT_window;
62 struct udf_func;
63 
66 
67  const char *schema;
68  const char *table;
69 
70  public:
71  explicit PTI_table_wild(const POS &pos, const char *schema_arg,
72  const char *table_arg)
73  : super(pos), schema(schema_arg), table(table_arg) {}
74 
75  virtual bool itemize(Parse_context *pc, Item **item);
76 };
77 
80 
83 
84  public:
86  : super(pos), expr(expr_arg), truth_test(truth_test) {}
87 
88  virtual bool itemize(Parse_context *pc, Item **res);
89 };
90 
91 class PTI_comp_op : public Parse_tree_item {
93 
97 
98  public:
99  PTI_comp_op(const POS &pos, Item *left_arg,
100  chooser_compare_func_creator boolfunc2creator_arg,
101  Item *right_arg)
102  : super(pos),
103  left(left_arg),
104  boolfunc2creator(boolfunc2creator_arg),
105  right(right_arg) {}
106 
107  virtual bool itemize(Parse_context *pc, Item **res);
108 };
109 
112 
115  bool is_all;
117 
118  public:
119  PTI_comp_op_all(const POS &pos, Item *left_arg,
120  chooser_compare_func_creator comp_op_arg, bool is_all_arg,
121  PT_subquery *subselect_arg)
122  : super(pos),
123  left(left_arg),
124  comp_op(comp_op_arg),
125  is_all(is_all_arg),
126  subselect(subselect_arg) {}
127 
128  virtual bool itemize(Parse_context *pc, Item **res);
129 };
130 
133 
136 
137  public:
138  PTI_simple_ident_ident(const POS &pos, const LEX_STRING &ident_arg)
139  : super(pos), ident(ident_arg), raw(pos.raw) {}
140 
141  virtual bool itemize(Parse_context *pc, Item **res);
142 };
143 
144 /**
145  Parse tree Item wrapper for 3-dimentional simple_ident-s
146 */
149 
150  protected:
151  const char *db;
152  const char *table;
153  const char *field;
154 
155  public:
156  PTI_simple_ident_q_3d(const POS &pos, const char *db_arg,
157  const char *table_arg, const char *field_arg)
158  : super(pos), db(db_arg), table(table_arg), field(field_arg) {}
159 
160  virtual bool itemize(Parse_context *pc, Item **res) {
161  if (super::itemize(pc, res)) return true;
162 
163  THD *thd = pc->thd;
164  const char *schema =
166  : db;
167  if (pc->select->no_table_names_allowed) {
168  my_error(ER_TABLENAME_NOT_ALLOWED_HERE, MYF(0), table, thd->where);
169  }
170  if ((pc->select->parsing_place != CTX_HAVING) ||
171  (pc->select->get_in_sum_expr() > 0)) {
172  *res = new (pc->mem_root) Item_field(POS(), schema, table, field);
173  } else {
174  *res = new (pc->mem_root) Item_ref(POS(), schema, table, field);
175  }
176  return *res == NULL || (*res)->itemize(pc, res);
177  }
178 };
179 
180 /**
181  Parse tree Item wrapper for 3-dimentional simple_ident-s
182 */
185 
186  public:
187  PTI_simple_ident_q_2d(const POS &pos, const char *table_arg,
188  const char *field_arg)
189  : super(pos, NULL, table_arg, field_arg) {}
190 
191  virtual bool itemize(Parse_context *pc, Item **res);
192 };
193 
196 
198 
199  public:
201  : super(pos), ident(ident_arg) {}
202 
203  virtual bool itemize(Parse_context *pc, Item **res) {
204  if (super::itemize(pc, res)) return true;
205 
206  if ((pc->select->parsing_place != CTX_HAVING) ||
207  (pc->select->get_in_sum_expr() > 0)) {
208  *res = new (pc->mem_root) Item_field(POS(), NullS, NullS, ident.str);
209  } else {
210  *res = new (pc->mem_root) Item_ref(POS(), NullS, NullS, ident.str);
211  }
212  return *res == NULL || (*res)->itemize(pc, res);
213  }
214 };
215 
218 
219  public:
221  : super(pos, dec_arg) {}
222 
223  bool itemize(Parse_context *pc, Item **res) override {
224  if (super::itemize(pc, res)) return true;
225 
226  pc->thd->lex->safe_to_cache_query = 0;
227  return false;
228  }
229 };
230 
233 
235 
236  public:
238  : super(pos), dec(dec_arg) {}
239 
240  virtual bool itemize(Parse_context *pc, Item **res);
241 };
242 
245 
249 
250  public:
251  PTI_udf_expr(const POS &pos, Item *expr_arg,
252  const LEX_STRING &select_alias_arg,
253  const Symbol_location &expr_loc_arg)
254  : super(pos),
255  expr(expr_arg),
256  select_alias(select_alias_arg),
257  expr_loc(expr_loc_arg) {}
258 
259  virtual bool itemize(Parse_context *pc, Item **res);
260 };
261 
264 
267 
269 
270  public:
272  const LEX_STRING &ident_arg,
273  PT_item_list *opt_udf_expr_list_arg)
274  : super(pos),
275  ident(ident_arg),
276  opt_udf_expr_list(opt_udf_expr_list_arg) {}
277 
278  virtual bool itemize(Parse_context *pc, Item **res);
279 };
280 
281 /**
282  Parse tree Item wrapper for 2-dimentional functional names (ex.: db.func_name)
283 */
286 
290 
291  public:
293  const LEX_STRING &func_arg,
294  PT_item_list *opt_expr_list_arg)
295  : super(pos),
296  db(db_arg),
297  func(func_arg),
298  opt_expr_list(opt_expr_list_arg) {}
299 
300  virtual bool itemize(Parse_context *pc, Item **res);
301 };
302 
305 
306  protected:
307  bool is_7bit;
309 
310  PTI_text_literal(const POS &pos, bool is_7bit_arg,
311  const LEX_STRING &literal_arg)
312  : super(pos), is_7bit(is_7bit_arg), literal(literal_arg) {}
313 };
314 
317 
318  public:
319  PTI_text_literal_text_string(const POS &pos, bool is_7bit_arg,
320  const LEX_STRING &literal_arg)
321  : super(pos, is_7bit_arg, literal_arg) {}
322 
323  virtual bool itemize(Parse_context *pc, Item **res) {
324  if (super::itemize(pc, res)) return true;
325 
326  THD *thd = pc->thd;
327  LEX_STRING tmp;
328  const CHARSET_INFO *cs_con = thd->variables.collation_connection;
329  const CHARSET_INFO *cs_cli = thd->variables.character_set_client;
330  uint repertoire = is_7bit && my_charset_is_ascii_based(cs_cli)
334  (repertoire == MY_REPERTOIRE_ASCII &&
335  my_charset_is_ascii_based(cs_con)))
336  tmp = literal;
337  else {
338  if (thd->convert_string(&tmp, cs_con, literal.str, literal.length,
339  cs_cli))
340  return true;
341  }
342  init(tmp.str, tmp.length, cs_con, DERIVATION_COERCIBLE, repertoire);
343  return false;
344  }
345 };
346 
349 
350  public:
351  PTI_text_literal_nchar_string(const POS &pos, bool is_7bit_arg,
352  const LEX_STRING &literal_arg)
353  : super(pos, is_7bit_arg, literal_arg) {}
354 
355  virtual bool itemize(Parse_context *pc, Item **res);
356 };
357 
360 
361  const CHARSET_INFO *cs;
362 
363  public:
364  PTI_text_literal_underscore_charset(const POS &pos, bool is_7bit_arg,
365  const CHARSET_INFO *cs_arg,
366  const LEX_STRING &literal_arg)
367  : super(pos, is_7bit_arg, literal_arg), cs(cs_arg) {}
368 
369  virtual bool itemize(Parse_context *pc, Item **res) {
370  if (super::itemize(pc, res)) return true;
371 
375  set_cs_specified(true);
376  return false;
377  }
378 };
379 
382 
384 
385  public:
386  PTI_text_literal_concat(const POS &pos, bool is_7bit_arg,
387  PTI_text_literal *head_arg, const LEX_STRING &tail)
388  : super(pos, is_7bit_arg, tail), head(head_arg) {}
389 
390  virtual bool itemize(Parse_context *pc, Item **res) {
391  Item *tmp_head;
392  if (super::itemize(pc, res) || head->itemize(pc, &tmp_head)) return true;
393 
394  DBUG_ASSERT(tmp_head->type() == STRING_ITEM);
395  Item_string *head_str = static_cast<Item_string *>(tmp_head);
396 
397  head_str->append(literal.str, literal.length);
398  if (!(head_str->collation.repertoire & MY_REPERTOIRE_EXTENDED)) {
399  /*
400  If the string has been pure ASCII so far,
401  check the new part.
402  */
404  head_str->collation.repertoire |=
406  }
407  *res = head_str;
408  return false;
409  }
410 };
411 
414 
417  const CHARSET_INFO *cs;
418 
419  public:
420  PTI_temporal_literal(const POS &pos, const LEX_STRING &literal_arg,
421  enum_field_types field_type_arg,
422  const CHARSET_INFO *cs_arg)
423  : super(pos),
424  literal(literal_arg),
425  field_type(field_type_arg),
426  cs(cs_arg) {}
427 
428  virtual bool itemize(Parse_context *pc, Item **res) {
429  if (super::itemize(pc, res)) return true;
430 
432  field_type, true);
433  return *res == NULL;
434  }
435 };
436 
439 
440  public:
442  const CHARSET_INFO *charset,
443  const LEX_STRING &literal)
445  Item_hex_string::make_hex_str(literal.str, literal.length),
446  charset) {}
447 
448  virtual bool itemize(Parse_context *pc, Item **res) {
449  if (super::itemize(pc, res)) return true;
450 
452  set_cs_specified(true);
453  return check_well_formed_result(&str_value, true, true) == NULL;
454  }
455 };
456 
459 
460  public:
462  const CHARSET_INFO *charset,
463  const LEX_STRING &literal)
465  Item_bin_string::make_bin_str(literal.str, literal.length),
466  charset) {}
467 
468  virtual bool itemize(Parse_context *pc, Item **res) {
469  if (super::itemize(pc, res)) return true;
470 
471  set_cs_specified(true);
472  return check_well_formed_result(&str_value, true, true) == NULL;
473  }
474 };
475 
478 
479  public:
480  PTI_variable_aux_set_var(const POS &pos, const LEX_STRING &var, Item *expr)
481  : super(pos, var, expr, false) {}
482 
483  virtual bool itemize(Parse_context *pc, Item **res) {
484  if (super::itemize(pc, res)) return true;
485 
486  LEX *lex = pc->thd->lex;
487  if (!lex->parsing_options.allows_variable) {
488  my_error(ER_VIEW_SELECT_VARIABLE, MYF(0));
489  return true;
490  }
492  lex->set_var_list.push_back(this);
493  return false;
494  }
495 };
496 
499 
500  public:
502  : super(pos, var) {}
503 
504  virtual bool itemize(Parse_context *pc, Item **res) {
505  if (super::itemize(pc, res)) return true;
506 
507  LEX *lex = pc->thd->lex;
508  if (!lex->parsing_options.allows_variable) {
509  my_error(ER_VIEW_SELECT_VARIABLE, MYF(0));
510  return true;
511  }
513  return false;
514  }
515 };
516 
517 /**
518  Parse tree Item wrapper for 3-dimentional variable names
519 
520  Example: \@global.default.x
521 */
524 
529 
530  public:
531  PTI_variable_aux_3d(const POS &pos, enum_var_type var_type_arg,
532  const LEX_STRING &ident1_arg, const POS &ident1_pos_arg,
533  const LEX_STRING &ident2_arg)
534  : super(pos),
535  var_type(var_type_arg),
536  ident1(ident1_arg),
537  ident1_pos(ident1_pos_arg),
538  ident2(ident2_arg) {}
539 
540  virtual bool itemize(Parse_context *pc, Item **res) {
541  if (super::itemize(pc, res)) return true;
542 
543  LEX *lex = pc->thd->lex;
544  if (!lex->parsing_options.allows_variable) {
545  my_error(ER_VIEW_SELECT_VARIABLE, MYF(0));
546  return true;
547  }
548 
549  /* disallow "SELECT @@global.global.variable" */
551  error(pc, ident1_pos);
552  return true;
553  }
554 
555  LEX_STRING *domain;
556  LEX_STRING *variable;
558  LEX_STRING component_var;
559  domain = &ident1;
560  variable = &ident2;
561  String tmp_name;
562  if (tmp_name.reserve(domain->length + 1 + variable->length + 1) ||
563  tmp_name.append(domain->str) || tmp_name.append(".") ||
564  tmp_name.append(variable->str))
565  return true; // OOM
566  component_var.str = tmp_name.c_ptr();
567  component_var.length = tmp_name.length();
568  variable->str = NullS;
569  variable->length = 0;
570  *res = get_system_var(pc, var_type, component_var, *variable);
571  } else
572  *res = get_system_var(pc, var_type, ident1, ident2);
573  if (!(*res)) return true;
574  if (is_identifier(ident1, "warning_count") ||
575  is_identifier(ident1, "error_count")) {
576  /*
577  "Diagnostics variable" used in a non-diagnostics statement.
578  Save the information we need for the former, but clear the
579  rest of the diagnostics area on account of the latter.
580  See reset_condition_info().
581  */
583  }
584  if (!((Item_func_get_system_var *)*res)->is_written_to_binlog())
586 
587  return false;
588  }
589 };
590 
593 
594  public:
595  PTI_count_sym(const POS &pos, PT_window *w) : super(pos, (Item *)NULL, w) {}
596 
597  virtual bool itemize(Parse_context *pc, Item **res) {
598  args[0] = new (pc->mem_root) Item_int((int32)0L, 1);
599  if (args[0] == NULL) return true;
600 
601  return super::itemize(pc, res);
602  }
603 };
604 
607 
609 
610  public:
611  PTI_in_sum_expr(const POS &pos, Item *expr_arg)
612  : super(pos), expr(expr_arg) {}
613 
614  virtual bool itemize(Parse_context *pc, Item **res) {
615  pc->select->in_sum_expr++;
616 
617  if (super::itemize(pc, res) || expr->itemize(pc, &expr)) return true;
618 
619  pc->select->in_sum_expr--;
620 
621  *res = expr;
622  return false;
623  }
624 };
625 
628 
630 
631  public:
632  PTI_singlerow_subselect(const POS &pos, PT_subquery *subselect_arg)
633  : super(pos), subselect(subselect_arg) {}
634 
635  bool itemize(Parse_context *pc, Item **res);
636 };
637 
640 
642 
643  public:
644  PTI_exists_subselect(const POS &pos, PT_subquery *subselect_arg)
645  : super(pos), subselect(subselect_arg) {}
646 
647  bool itemize(Parse_context *pc, Item **res);
648 };
649 
652 
655 
656  public:
657  PTI_odbc_date(const POS &pos, const LEX_STRING &ident_arg, Item *expr_arg)
658  : super(pos), ident(ident_arg), expr(expr_arg) {}
659 
660  bool itemize(Parse_context *pc, Item **res) {
661  if (super::itemize(pc, res) || expr->itemize(pc, &expr)) return true;
662 
663  *res = NULL;
664  /*
665  If "expr" is reasonably short pure ASCII string literal,
666  try to parse known ODBC style date, time or timestamp literals,
667  e.g:
668  SELECT {d'2001-01-01'};
669  SELECT {t'10:20:30'};
670  SELECT {ts'2001-01-01 10:20:30'};
671  */
672  if (expr->type() == Item::STRING_ITEM &&
674  String buf;
675  String *tmp_str = expr->val_str(&buf);
676  if (tmp_str->length() < MAX_DATE_STRING_REP_LENGTH * 4) {
678  ErrConvString str(tmp_str);
679  LEX_STRING *ls = &ident;
680  if (ls->length == 1) {
681  if (ls->str[0] == 'd') /* {d'2001-01-01'} */
683  else if (ls->str[0] == 't') /* {t'10:20:30'} */
685  } else if (ls->length == 2) /* {ts'2001-01-01 10:20:30'} */
686  {
687  if (ls->str[0] == 't' && ls->str[1] == 's')
689  }
690  if (type != MYSQL_TYPE_STRING)
691  *res = create_temporal_literal(pc->thd, str.ptr(), str.length(),
692  system_charset_info, type, false);
693  }
694  }
695  if (*res == NULL) *res = expr;
696  return false;
697  }
698 };
699 
702 
706 
707  public:
709  bool is_negation_arg, Item *right_arg)
710  : super(pos),
711  left(left_arg),
712  is_negation(is_negation_arg),
713  right(right_arg) {}
714 
715  virtual bool itemize(Parse_context *pc, Item **res);
716 };
717 
720 
724 
725  public:
726  PTI_expr_with_alias(const POS &pos, Item *expr_arg,
727  const Symbol_location &expr_loc_arg,
728  const LEX_STRING &alias_arg)
729  : super(pos), expr(expr_arg), expr_loc(expr_loc_arg), alias(alias_arg) {}
730 
731  virtual bool itemize(Parse_context *pc, Item **res);
732 };
733 
736 
739 
740  public:
741  explicit PTI_limit_option_ident(const POS &pos, const LEX_STRING &ident_arg,
742  const Symbol_location &ident_loc_arg)
743  : super(pos), ident(ident_arg), ident_loc(ident_loc_arg) {}
744 
745  virtual bool itemize(Parse_context *pc, Item **res) {
746  if (super::itemize(pc, res)) return true;
747 
748  LEX *lex = pc->thd->lex;
749  sp_head *sp = lex->sphead;
750  const char *query_start_ptr =
752 
754  pc->thd, ident, NULL, query_start_ptr, ident_loc.start, ident_loc.end);
755  if (!v) return true;
756 
757  lex->safe_to_cache_query = false;
758 
759  if (v->type() != Item::INT_ITEM) {
760  my_error(ER_WRONG_SPVAR_TYPE_IN_LIMIT, MYF(0));
761  return true;
762  }
763 
764  v->limit_clause_param = true;
765  *res = v;
766  return false;
767  }
768 };
769 
772 
774 
775  public:
777  Item_param *param_marker_arg)
778  : super(pos), param_marker(param_marker_arg) {}
779 
780  virtual bool itemize(Parse_context *pc, Item **res) {
781  Item *tmp_param;
782  if (super::itemize(pc, res) || param_marker->itemize(pc, &tmp_param))
783  return true;
784  /*
785  The Item_param::type() function may return various values, so we can't
786  simply compare tmp_param->type() with some constant, cast tmp_param
787  to Item_param* and assign the result back to param_marker.
788  OTOH we ensure that Item_param::itemize() always substitute the output
789  parameter with "this" pointer of Item_param object, so we can skip
790  the check and the assignment.
791  */
792  DBUG_ASSERT(tmp_param == param_marker);
793 
795  *res = param_marker;
796  return false;
797  }
798 };
799 
800 template <enum_parsing_context Context>
801 class PTI_context : public Parse_tree_item {
803 
805 
806  public:
807  PTI_context(const POS &pos, Item *expr_arg) : super(pos), expr(expr_arg) {}
808 
809  virtual bool itemize(Parse_context *pc, Item **res) {
810  if (super::itemize(pc, res)) return true;
811 
812  pc->select->parsing_place = Context;
813 
814  if (expr->itemize(pc, &expr)) return true;
815 
816  if (!expr->is_bool_func()) {
817  expr = make_condition(pc, expr);
818  if (expr == nullptr) return true;
819  }
820  // Ensure we're resetting parsing place of the right select
821  DBUG_ASSERT(pc->select->parsing_place == Context);
823  DBUG_ASSERT(expr != NULL);
824  expr->apply_is_true();
825 
826  *res = expr;
827  return false;
828  }
829 };
830 
831 #endif /* PARSE_TREE_ITEMS_INCLUDED */
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:809
Definition: sql_udf.h:42
Definition: parse_tree_items.h:347
POS ident1_pos
Definition: parse_tree_items.h:527
Builder for SQL functions.
Definition: item.h:3349
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: item.cc:587
PTI_text_literal_text_string(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:319
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:468
MEM_ROOT * mem_root
Current MEM_ROOT.
Definition: parse_tree_node_base.h:101
This file contains the field type.
udf_func * udf
Definition: parse_tree_items.h:268
char * str
Definition: mysql_lex_string.h:35
Definition: sql_error.h:220
Our own string classes, used pervasively throughout the executor.
bool safe_to_cache_query
Whether this query will return the same answer every time, given unchanged data.
Definition: sql_lex.h:3284
Parse_tree_item super
Definition: parse_tree_items.h:79
int reserve(size_t space_needed)
Definition: sql_string.h:530
Parse_tree_item super
Definition: parse_tree_items.h:65
const char * table
Definition: parse_tree_items.h:152
PT_subquery * subselect
Definition: parse_tree_items.h:641
Parse_tree_item super
Definition: parse_tree_items.h:735
"public" interface to sys_var - server configuration variables.
t pos
Definition: dbug_analyze.cc:148
Definition: parse_tree_items.h:243
PTI_expr_with_alias(const POS &pos, Item *expr_arg, const Symbol_location &expr_loc_arg, const LEX_STRING &alias_arg)
Definition: parse_tree_items.h:726
LEX_STRING alias
Definition: parse_tree_items.h:723
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:168
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:420
Definition: mysql_lex_string.h:34
PTI_limit_option_param_marker(const POS &pos, Item_param *param_marker_arg)
Definition: parse_tree_items.h:776
const char * where
Definition: sql_class.h:1235
Definition: parse_tree_items.h:78
LEX_STRING ident
Definition: parse_tree_items.h:737
bool allows_variable
Definition: sql_lex.h:2546
Definition: item_func.h:3097
Definition: sql_lex.h:3063
MYSQL_PLUGIN_IMPORT CHARSET_INFO * system_charset_info
Definition: mysqld.cc:1318
SELECT_LEX * select
Current SELECT_LEX object.
Definition: parse_tree_node_base.h:102
Definition: parse_tree_items.h:476
uint my_string_repertoire(const CHARSET_INFO *cs, const char *str, size_t len)
Definition: ctype.cc:765
PT_item_list * opt_expr_list
Definition: parse_tree_items.h:289
Some integer typedefs for easier portability.
void my_error(int nr, myf MyFlags,...)
Fill in and print a previously registered error message.
Definition: my_error.cc:215
Parse_tree_item super
Definition: parse_tree_items.h:132
Definition: parse_tree_items.h:801
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:380
Definition: item.h:2941
Item_func_set_user_var super
Definition: parse_tree_items.h:477
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:745
virtual void apply_is_true()
Apply the IS TRUE truth property, meaning that an UNKNOWN result and a FALSE result are treated the s...
Definition: item.h:1920
Item * right
Definition: parse_tree_items.h:705
LEX_STRING ident
Definition: parse_tree_items.h:134
Item_param * param_marker
Definition: parse_tree_items.h:773
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:323
virtual enum Type type() const
Definition: parse_tree_helpers.h:65
Item * make_condition(Parse_context *pc, Item *item)
Ensure that all expressions involved in conditions are boolean functions.
Definition: item_cmpfunc.cc:4892
PTI_text_literal * head
Definition: parse_tree_items.h:383
struct System_variables variables
Definition: sql_class.h:956
Definition: field_types.h:68
Parse_tree_item super
Definition: parse_tree_items.h:523
Definition: item.h:4200
#define MY_REPERTOIRE_ASCII
Definition: m_ctype.h:134
Definition: item_sum.h:1019
PTI_simple_ident_q_2d(const POS &pos, const char *table_arg, const char *field_arg)
Definition: parse_tree_items.h:187
Sergei Dialog Client Authentication NULL
Definition: dialog.cc:352
sp_head * sphead
Definition: sql_lex.h:3306
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:390
Definition: parse_tree_items.h:131
LEX_STRING db
Definition: parse_tree_items.h:287
Parse_tree_item super
Definition: parse_tree_items.h:244
Parse tree node for a window; just a shallow wrapper for class Window, q.v.
Definition: parse_tree_nodes.h:1728
LEX_STRING ident
Definition: parse_tree_items.h:197
Item * left
Definition: parse_tree_items.h:94
Parse_tree_item super
Definition: parse_tree_items.h:719
#define NullS
Definition of the null string (a null pointer of type char *), used in some of our string handling co...
Definition: m_string.h:49
Item_func_now_local super
Definition: parse_tree_items.h:217
char * c_ptr()
Definition: sql_string.h:243
const char * start
Definition: parse_location.h:33
const Name_string null_name_string(NULL, 0)
uint repertoire
Definition: item.h:172
PTI_singlerow_subselect(const POS &pos, PT_subquery *subselect_arg)
Definition: parse_tree_items.h:632
const char * ptr() const
Definition: sql_error.h:256
const char * get_current_stmt_start_ptr() const
Definition: sp_head.h:225
#define CLIENT_NO_SCHEMA
Don&#39;t allow database.table.column.
Definition: mysql_com.h:312
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:428
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:119
Parse tree Item wrapper for 3-dimentional variable names.
Definition: parse_tree_items.h:522
bool charset_is_collation_connection
Definition: sql_class.h:2348
Using most system variables is unsafe, because slave may run with different options than master...
Definition: sql_lex.h:2087
Definition: parse_tree_items.h:412
keep @warning_count / @error_count
Definition: sql_lex.h:163
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:364
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:5606
chooser_compare_func_creator boolfunc2creator
Definition: parse_tree_items.h:95
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
bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:312
Parse_tree_item super
Definition: parse_tree_items.h:111
bool is_identifier(const char *str, const char *ident)
Definition: parse_tree_helpers.h:238
Definition: item.h:4480
const char * table
Definition: parse_tree_items.h:68
Item_string super
Definition: parse_tree_items.h:458
Item * right
Definition: parse_tree_items.h:96
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:345
Parse tree Item wrapper for 3-dimentional simple_ident-s.
Definition: parse_tree_items.h:147
Using this class is fraught with peril, and you need to be very careful when doing so...
Definition: sql_string.h:159
Item * expr
Definition: parse_tree_items.h:246
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:292
PTI_text_literal_nchar_string(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:351
Item * left
Definition: parse_tree_items.h:703
virtual bool is_bool_func() const
Definition: item.h:1929
const char * end
Definition: parse_location.h:34
Definition: parse_tree_items.h:303
Definition: parse_tree_items.h:315
Symbol_location expr_loc
Definition: parse_tree_items.h:722
void append(char *str, size_t length)
Definition: item.h:4340
Parse_tree_item super
Definition: parse_tree_items.h:606
uint8 dec
Definition: parse_tree_items.h:234
Definition: parse_tree_items.h:650
Definition: field.h:183
PTI_odbc_date(const POS &pos, const LEX_STRING &ident_arg, Item *expr_arg)
Definition: parse_tree_items.h:657
Common definition between mysql server & client.
bool no_table_names_allowed
used for global order by
Definition: sql_lex.h:956
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize()/contextualize_() but with additional parameter.
Definition: item_func.cc:213
constexpr const std::size_t MAX_DATE_STRING_REP_LENGTH
Required buffer length for my_time_to_str, my_date_to_str, my_datetime_to_str and TIME_to_string func...
Definition: my_time.h:360
const char * db
Definition: parse_tree_items.h:151
enum_keep_diagnostics keep_diagnostics
Definition: sql_lex.h:3311
bool itemize(Parse_context *pc, Item **item) override
The same as contextualize()/contextualize_() but with additional parameter.
Definition: item.cc:3244
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:227
Parse_tree_item super
Definition: parse_tree_items.h:92
Definition: parse_tree_items.h:216
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:268
Placeholder (&#39;?&#39;) of prepared statement.
Definition: item.h:3667
LEX_STRING ident1
Definition: parse_tree_items.h:526
bool is_negation
Definition: parse_tree_items.h:704
bool limit_clause_param
Item is a argument to a limit clause.
Definition: item.h:3811
const CHARSET_INFO * cs
Definition: parse_tree_items.h:417
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:203
Item_string super
Definition: parse_tree_items.h:304
Subquery in HAVING clause item tree.
Definition: parse_tree_node_base.h:71
PT_subquery * subselect
Definition: parse_tree_items.h:629
#define DBUG_ASSERT(A)
Definition: my_dbug.h:183
Definition: parse_tree_items.h:231
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:327
PTI_simple_ident_nospvar_ident(const POS &pos, const LEX_STRING &ident_arg)
Definition: parse_tree_items.h:200
bool my_charset_is_ascii_based(const CHARSET_INFO *cs)
Definition: ctype.cc:818
#define MY_REPERTOIRE_UNICODE30
Definition: m_ctype.h:136
Bool_test truth_test
Definition: parse_tree_items.h:82
void init(const char *str, size_t length, const CHARSET_INFO *cs, Derivation dv, uint repertoire)
Definition: item.h:4208
Definition: item_func.h:3217
const CHARSET_INFO * collation_connection
Definition: system_variables.h:292
bool append(const String &s)
Definition: sql_string.cc:449
Definition: item.h:707
#define MY_REPERTOIRE_EXTENDED
Definition: m_ctype.h:135
Definition: item.h:4650
Definition: parse_tree_items.h:700
Helper class for the YYLTYPE.
Definition: parse_location.h:32
Parse_tree_item super
Definition: parse_tree_items.h:627
Item * expr
Definition: parse_tree_items.h:804
Definition: parse_tree_items.h:194
LEX_STRING ident
Definition: parse_tree_items.h:265
Bison "location" class.
Definition: parse_location.h:43
const char * field
Definition: parse_tree_items.h:153
Parse tree Item wrapper for 2-dimentional functional names (ex.
Definition: parse_tree_items.h:284
void set_repertoire_from_value()
Definition: item.h:4314
bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:660
void error(Context *pc, const POS &pos) const
syntax_error() function replacement for deferred reporting of syntax errors
Definition: parse_tree_node_base.h:223
const CHARSET_INFO * character_set_client
Definition: system_variables.h:286
PTI_simple_ident_ident(const POS &pos, const LEX_STRING &ident_arg)
Definition: parse_tree_items.h:138
Parse_tree_item super
Definition: parse_tree_items.h:639
Item * expr
Definition: parse_tree_items.h:654
void set_uncacheable(SELECT_LEX *curr_select, uint8 cause)
Set the current query as uncacheable.
Definition: sql_lex.h:3481
Item * expr
Definition: parse_tree_items.h:81
bool check_reserved_words(LEX_STRING *name)
Definition: item_func.cc:136
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:386
Parse_tree_item super
Definition: parse_tree_items.h:701
virtual bool itemize(Parse_context *pc, Item **item)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:147
PTI_text_literal super
Definition: parse_tree_items.h:348
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:531
PTI_comp_op(const POS &pos, Item *left_arg, chooser_compare_func_creator boolfunc2creator_arg, Item *right_arg)
Definition: parse_tree_items.h:99
PTI_count_sym(const POS &pos, PT_window *w)
Definition: parse_tree_items.h:595
enum_parsing_context parsing_place
Parse context: indicates where the current expression is being parsed.
Definition: sql_lex.h:1130
Definition: parse_tree_items.h:770
List< Item_func_set_user_var > set_var_list
Definition: sql_lex.h:3145
Item ** args
Definition: item_sum.h:489
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize()/contextualize_() but with additional parameter.
Definition: item_sum.cc:83
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:504
enum_field_types
Column types for MySQL.
Definition: field_types.h:52
Definition: parse_tree_items.h:437
Definition: item.h:666
Definition: parse_tree_items.h:591
unsigned int uint
Definition: uca-dump.cc:29
#define final(a, b, c)
Definition: hash.c:109
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:111
THD *const thd
Current thread handler.
Definition: parse_tree_node_base.h:100
Item_string super
Definition: parse_tree_items.h:438
Definition: field_types.h:87
Definition: parse_tree_nodes.h:1945
bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:306
Symbol_location expr_loc
Definition: parse_tree_items.h:248
PTI_handle_sql2003_note184_exception(const POS &pos, Item *left_arg, bool is_negation_arg, Item *right_arg)
Definition: parse_tree_items.h:708
#define MYF(v)
Definition: my_inttypes.h:124
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:369
LEX_STRING literal
Definition: parse_tree_items.h:308
Bool_test
< Modifier for result transformation
Definition: item.h:749
PTI_function_call_nonkeyword_now(const POS &pos, uint8 dec_arg)
Definition: parse_tree_items.h:220
Definition: item.h:4532
Symbol_location raw
Definition: parse_tree_items.h:135
Definition: parse_tree_items.h:110
LEX_STRING ident2
Definition: parse_tree_items.h:528
Definition: m_ctype.h:359
uint8_t uint8
Definition: my_inttypes.h:58
virtual String * val_str(String *str)=0
PTI_text_literal super
Definition: parse_tree_items.h:381
Definition: item.h:708
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:99
PT_subquery * subselect
Definition: parse_tree_items.h:116
Definition: item_timefunc.h:1166
PTI_in_sum_expr(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:611
sp_head represents one instance of a stored program.
Definition: sp_head.h:405
Common header for many mysys elements.
enum_var_type var_type
Definition: parse_tree_items.h:525
size_t length
Definition: mysql_lex_string.h:36
Definition: parse_tree_items.h:605
Definition: parse_tree_items.h:638
Definition: parse_tree_items.h:497
#define UNCACHEABLE_RAND
Definition: parse_tree_node_base.h:45
LEX_STRING ident
Definition: parse_tree_items.h:653
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:160
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:431
LEX * lex
Definition: sql_class.h:837
Parse_tree_item super
Definition: parse_tree_items.h:413
bool convert_string(LEX_STRING *to, const CHARSET_INFO *to_cs, const char *from, size_t from_length, const CHARSET_INFO *from_cs, bool report_error=false)
Definition: sql_class.cc:1477
bool limit_clause_param
Definition: item.h:2955
Definition: parse_tree_items.h:91
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:178
PTI_simple_ident_q_3d super
Definition: parse_tree_items.h:184
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:597
PTI_literal_underscore_charset_bin_num(const POS &pos, const CHARSET_INFO *charset, const LEX_STRING &literal)
Definition: parse_tree_items.h:461
void set_stmt_unsafe(enum_binlog_stmt_unsafe unsafe_type)
Flag the current (top-level) statement as unsafe.
Definition: sql_lex.h:2234
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:614
Definition: parse_tree_items.h:457
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:223
PTI_variable_aux_set_var(const POS &pos, const LEX_STRING &var, Item *expr)
Definition: parse_tree_items.h:480
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:448
Definition: parse_tree_items.h:380
const char * schema
Definition: parse_tree_items.h:67
Parse_tree_item super
Definition: parse_tree_items.h:285
Definition: parse_tree_items.h:734
enum_var_type
Definition: set_var.h:87
Base class for parse-time Item objects.
Definition: parse_tree_helpers.h:61
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:156
Item * create_temporal_literal(THD *thd, const char *str, size_t length, const CHARSET_INFO *cs, enum_field_types type, bool send_error)
Builder for datetime literals: TIME&#39;00:00:00&#39;, DATE&#39;2001-01-01&#39;, TIMESTAMP&#39;2001-01-01 00:00:00&#39;...
Definition: item_create.cc:1999
bool is_7bit
Definition: parse_tree_items.h:307
YYLTYPE POS
Definition: show.h:31
DTCollation collation
Character set and collation properties assigned for this Item.
Definition: item.h:2653
Symbol_location ident_loc
Definition: parse_tree_items.h:738
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:251
PTI_truth_transform(const POS &pos, Item *expr_arg, Bool_test truth_test)
Definition: parse_tree_items.h:85
Definition: parse_tree_items.h:626
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:159
Item * get_system_var(Parse_context *pc, enum_var_type var_type, LEX_STRING name, LEX_STRING component)
Return value of an system variable base[.name] as a constant item.
Definition: item_func.cc:7211
const Protocol * get_protocol() const
Definition: sql_class.h:1100
Parse_tree_item super
Definition: parse_tree_items.h:195
Parse tree Item wrapper for 3-dimentional simple_ident-s.
Definition: parse_tree_items.h:183
PTI_variable_aux_ident_or_text(const POS &pos, const LEX_STRING &var)
Definition: parse_tree_items.h:501
Definition: parse_tree_items.h:262
PTI_text_literal(const POS &pos, bool is_7bit_arg, const LEX_STRING &literal_arg)
Definition: parse_tree_items.h:310
Parse_tree_item super
Definition: parse_tree_items.h:771
PTI_limit_option_ident(const POS &pos, const LEX_STRING &ident_arg, const Symbol_location &ident_loc_arg)
Definition: parse_tree_items.h:741
LEX_STRING literal
Definition: parse_tree_items.h:415
Item * expr
Definition: parse_tree_items.h:608
PTI_function_call_nonkeyword_sysdate(const POS &pos, uint8 dec_arg)
Definition: parse_tree_items.h:237
Definition: item.h:3866
Definition: field_types.h:69
uint get_in_sum_expr() const
Definition: sql_lex.h:1316
bool is_key_cache_variable_suffix(const char *suffix)
Definition: my_getopt.cc:116
int32_t int32
Definition: my_inttypes.h:61
Item_sum_count super
Definition: parse_tree_items.h:592
#define L
Definition: ctype-tis620.cc:73
st_parsing_options parsing_options
Definition: sql_lex.h:3293
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:318
Definition: parse_tree_items.h:358
String str_value
str_values&#39;s main purpose is to cache the value in save_in_field
Definition: item.h:2646
A better implementation of the UNIX ctype(3) library.
Parse_tree_item super
Definition: parse_tree_items.h:232
bool is_all
Definition: parse_tree_items.h:115
Interface for low level time utilities.
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:296
Item_func_get_user_var super
Definition: parse_tree_items.h:498
uint in_sum_expr
Parse context: is inside a set function if this is positive.
Definition: sql_lex.h:1132
size_t length() const
Definition: sql_error.h:257
PTI_context(const POS &pos, Item *expr_arg)
Definition: parse_tree_items.h:807
Definition: field_types.h:67
Item * left
Definition: parse_tree_items.h:113
chooser_compare_func_creator comp_op
Definition: parse_tree_items.h:114
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:780
enum_field_types field_type
Definition: parse_tree_items.h:416
LEX_STRING select_alias
Definition: parse_tree_items.h:247
bool push_back(T *a)
Definition: sql_list.h:442
PT_item_list * opt_udf_expr_list
Definition: parse_tree_items.h:266
Definition: item_func.h:2992
Definition: parse_tree_items.h:64
PTI_text_literal super
Definition: parse_tree_items.h:316
Item * expr
Definition: parse_tree_items.h:721
PTI_table_wild(const POS &pos, const char *schema_arg, const char *table_arg)
Definition: parse_tree_items.h:71
PTI_literal_underscore_charset_hex_num(const POS &pos, const CHARSET_INFO *charset, const LEX_STRING &literal)
Definition: parse_tree_items.h:441
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:271
PTI_text_literal super
Definition: parse_tree_items.h:359
virtual enum Type type() const =0
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:69
Parse_tree_item super
Definition: parse_tree_items.h:263
virtual bool has_client_capability(unsigned long client_capability)=0
Checks if the client capabilities include the one specified as parameter.
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:540
void set_cs_specified(bool cs_specified)
Set the value of m_cs_specified attribute.
Definition: item.h:4380
Empty value.
Definition: parse_tree_node_base.h:56
#define false
Definition: config_static.h:43
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 Type type() const override
Definition: item.h:2992
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.cc:202
size_t length() const
Definition: sql_string.h:233
Item_splocal * create_item_for_sp_var(THD *thd, LEX_STRING name, sp_variable *spv, const char *query_start_ptr, const char *start, const char *end)
Create an object to represent a SP variable in the Item-hierarchy.
Definition: parse_tree_helpers.cc:68
Parse_tree_item super
Definition: parse_tree_items.h:651
Parse_tree_item super
Definition: parse_tree_items.h:148
sp_parser_data m_parser_data
Attributes used during the parsing stage only.
Definition: sp_head.h:460
Definition: parse_tree_items.h:718
const CHARSET_INFO * cs
Definition: parse_tree_items.h:361
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_class.h:777
LEX_STRING func
Definition: parse_tree_items.h:288
virtual bool itemize(Parse_context *pc, Item **res)
The same as contextualize()/contextualize_() but with additional parameter.
Definition: parse_tree_items.h:483
PTI_exists_subselect(const POS &pos, PT_subquery *subselect_arg)
Definition: parse_tree_items.h:644
Parse_tree_item super
Definition: parse_tree_items.h:802