MySQL 8.0.41
Source Code Documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
parse_tree_nodes.h
Go to the documentation of this file.
1/* Copyright (c) 2013, 2024, Oracle and/or its affiliates.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License, version 2.0,
5 as published by the Free Software Foundation.
6
7 This program is designed to work with certain software (including
8 but not limited to OpenSSL) that is licensed under separate terms,
9 as designated in a particular file or component or in included license
10 documentation. The authors of MySQL hereby grant you an additional
11 permission to link the program and your derivative works with the
12 separately licensed software that they have either included with
13 the program or referenced in the documentation.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License, version 2.0, for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
23
24#ifndef PARSE_TREE_NODES_INCLUDED
25#define PARSE_TREE_NODES_INCLUDED
26
27#include <assert.h>
28#include <sys/types.h> // TODO: replace with cstdint
29
30#include <cctype> // std::isspace
31#include <cstddef>
32#include <memory>
33
34#include "lex_string.h"
35#include "my_alloc.h"
36#include "my_base.h"
37#include "my_bit.h" // is_single_bit
38
39#include "my_inttypes.h" // TODO: replace with cstdint
40#include "my_list.h"
41#include "my_sqlcommand.h"
42#include "my_sys.h"
43#include "my_thread_local.h"
44#include "my_time.h"
45#include "mysqld_error.h"
46#include "sql/check_stack.h"
47#include "sql/enum_query_type.h"
48#include "sql/handler.h"
49#include "sql/key_spec.h"
50#include "sql/mem_root_array.h"
51#include "sql/opt_explain.h" // Sql_cmd_explain_other_thread
52#include "sql/parse_location.h"
53#include "sql/parse_tree_helpers.h" // PT_item_list
55#include "sql/parser_yystype.h"
56#include "sql/partition_info.h"
59#include "sql/set_var.h"
60#include "sql/sql_admin.h" // Sql_cmd_shutdown etc.
61#include "sql/sql_alter.h"
62#include "sql/sql_check_constraint.h" // Sql_check_constraint_spec
63#include "sql/sql_cmd_srs.h"
64#include "sql/sql_exchange.h"
65#include "sql/sql_lex.h" // LEX
66#include "sql/sql_list.h"
67#include "sql/sql_load.h" // Sql_cmd_load_table
69#include "sql/sql_restart_server.h" // Sql_cmd_restart_server
70#include "sql/sql_tablespace.h" // Tablespace_options
71#include "sql/sql_truncate.h" // Sql_cmd_truncate_table
72#include "sql/table.h" // Common_table_expr
73#include "sql/window_lex.h"
74#include "thr_lock.h"
75
76class Item;
77class Item_cache;
81class PT_hint_list;
84class PT_partition;
85class PT_subquery;
86class PT_type;
87class PT_window_list;
88class Sql_cmd;
89class String;
90class THD;
91class Window;
92class sp_head;
93class sp_name;
94struct CHARSET_INFO;
95
96/**
97 @defgroup ptn Parse tree nodes
98 @ingroup Parser
99*/
100/**
101 @defgroup ptn_stmt Nodes representing SQL statements
102 @ingroup ptn
103*/
104/**
105 @defgroup ptn_create_table CREATE TABLE statement
106 @ingroup ptn_stmt
107*/
108/**
109 @defgroup ptn_alter_table ALTER TABLE statement
110 @ingroup ptn_stmt
111*/
112/**
113 @defgroup ptn_create_table_stuff Clauses of CREATE TABLE statement
114 @ingroup ptn_create_table
115*/
116/**
117 @defgroup ptn_partitioning CREATE/ALTER TABLE partitioning-related stuff
118 @ingroup ptn_create_table ptn_alter_table
119*/
120/**
121 @defgroup ptn_part_options Partition options in CREATE/ALTER TABLE
122 @ingroup ptn_partitioning
123*/
124/**
125 @defgroup ptn_create_or_alter_table_options Table options of CREATE/ALTER
126 TABLE
127 @anchor ptn_create_or_alter_table_options
128 @ingroup ptn_create_table ptn_alter_table
129*/
130/**
131 @defgroup ptn_col_types Column types in CREATE/ALTER TABLE
132 @ingroup ptn_create_table ptn_alter_table
133*/
134/**
135 @defgroup ptn_col_attrs Column attributes in CREATE/ALTER TABLE
136 @ingroup ptn_create_table ptn_alter_table
137*/
138/**
139 @defgroup ptn_not_gcol_attr Non-generated column attributes in CREATE/ALTER
140 TABLE
141 @ingroup ptn_col_attrs ptn_alter_table
142*/
143
144/**
145 Calls contextualize() on every node in the array.
146*/
147template <class Node_type, class Parse_context_type>
149 Parse_context_type *pc) {
150 for (Node_type *i : nodes)
151 if (i->contextualize(pc)) return true;
152 return false;
153}
154
155/**
156 Base class for all top-level nodes of SQL statements
157
158 @ingroup ptn_stmt
159*/
162 void operator=(const Parse_tree_root &) = delete;
163
164 protected:
165 virtual ~Parse_tree_root() = default;
166 Parse_tree_root() = default;
167
168 public:
169 virtual Sql_cmd *make_cmd(THD *thd) = 0;
170};
171
173 public:
176
177 ~PT_table_ddl_stmt_base() override = 0; // force abstract class
178
179 protected:
181};
182
184
185/**
186 Parse context for the table DDL (ALTER TABLE and CREATE TABLE) nodes.
187
188 For internal use in the contextualization code.
189*/
191 Table_ddl_parse_context(THD *thd_arg, Query_block *select_arg,
196};
197
198/**
199 Base class for all table DDL (ALTER TABLE and CREATE TABLE) nodes.
200*/
202
203class PT_order_expr : public Parse_tree_node, public ORDER {
205
206 public:
208 item_initial = item_arg;
210 }
211
212 bool contextualize(Parse_context *pc) override;
213};
214
217
218 public:
220
221 public:
222 bool contextualize(Parse_context *pc) override {
223 if (super::contextualize(pc)) return true;
224 for (ORDER *o = value.first; o != nullptr; o = o->next) {
225 if (static_cast<PT_order_expr *>(o)->contextualize(pc)) return true;
226 }
227 return false;
228 }
229
231 order->used_alias = false;
232 order->used = 0;
233 value.link_in_list(order, &order->next);
234 }
235};
236
239
240 public:
241 bool contextualize(Parse_context *pc) override {
242 return super::contextualize(pc);
243 }
244};
245
246/**
247 Represents an element of the WITH list:
248 WITH [...], [...] SELECT ...,
249 ^ or ^
250 i.e. a Common Table Expression (CTE, or Query Name in SQL99 terms).
251*/
254
255 public:
256 explicit PT_common_table_expr(const LEX_STRING &name,
257 const LEX_STRING &subq_text,
258 uint subq_text_offset, PT_subquery *sn,
261
262 /// The name after AS
263 const LEX_STRING &name() const { return m_name; }
264 /**
265 @param thd Thread handler
266 @param[out] node PT_subquery
267 @returns a PT_subquery to attach to a table reference for this CTE
268 */
269 bool make_subquery_node(THD *thd, PT_subquery **node);
270 /**
271 @param tl Table reference to match
272 @param in_self If this is a recursive reference
273 @param[out] found Is set to true/false if matches or not
274 @returns true if error
275 */
276 bool match_table_ref(Table_ref *tl, bool in_self, bool *found);
277 /**
278 @returns true if 'other' is the same instance as 'this'
279 */
280 bool is(const Common_table_expr *other) const {
281 return other == &m_postparse;
282 }
283 void print(const THD *thd, String *str, enum_query_type query_type);
284
285 private:
287 /// Raw text of query expression (including parentheses)
289 /**
290 Offset in bytes of m_subq_text in original statement which had the WITH
291 clause.
292 */
294 /// Parsed version of subq_text
296 /// List of explicitly specified column names; if empty, no list.
298 /**
299 A Table_ref representing a CTE needs access to the WITH list
300 element it derives from. However, in order to:
301 - limit the members which Table_ref can access
302 - avoid including this header file everywhere Table_ref needs to
303 access these members, these members are relocated into a separate inferior
304 object whose declaration is in table.h, like that of Table_ref. It's
305 the "postparse" part. Table_ref accesses this inferior object only.
306 */
308
310};
311
312/**
313 Represents the WITH list.
314 WITH [...], [...] SELECT ...,
315 ^^^^^^^^^^^^
316*/
319
320 public:
321 /// @param mem_root where interior objects are allocated
325 return m_elements;
326 }
327
328 private:
330};
331
332/**
333 Represents the WITH clause:
334 WITH [...], [...] SELECT ...,
335 ^^^^^^^^^^^^^^^^^
336*/
339
340 public:
343
344 bool contextualize(Parse_context *pc) override;
345
346 /**
347 Looks up a table reference into the list of CTEs.
348 @param tl Table reference to look up
349 @param[out] found Is set to true/false if found or not
350 @returns true if error
351 */
352 bool lookup(Table_ref *tl, PT_common_table_expr **found);
353 /**
354 Call this to record in the WITH clause that we are contextualizing the
355 CTE definition inserted in table reference 'tl'.
356 @returns information which the caller must provide to
357 leave_parsing_definition().
358 */
360 auto old = m_most_inner_in_parsing;
362 return old;
363 }
366 }
367 void print(const THD *thd, String *str, enum_query_type query_type);
368
369 private:
370 /// All CTEs of this clause
371 const PT_with_list *const m_list;
372 /// True if the user has specified the RECURSIVE keyword.
373 const bool m_recursive;
374 /**
375 The innermost CTE reference which we're parsing at the
376 moment. Used to detect forward references, loops and recursiveness.
377 */
379
381};
382
385
386 public:
387 bool contextualize(Parse_context *pc) override;
388};
389
392
394
395 public:
396 PT_limit_clause(const Limit_options &limit_options_arg)
397 : limit_options(limit_options_arg) {}
398
399 bool contextualize(Parse_context *pc) override;
401};
402
403class PT_cross_join;
404class PT_joined_table;
405
407 public:
409
410 /**
411 Lets us build a parse tree top-down, which is necessary due to the
412 context-dependent nature of the join syntax. This function adds
413 the @<table_ref@> cross join as the left-most leaf in this join tree
414 rooted at this node.
415
416 @todo: comment on non-join PT_table_reference objects
417
418 @param cj This @<table ref@> will be added if it represents a cross join.
419
420 @return The new top-level join.
421 */
423};
424
427
430 const char *const opt_table_alias;
432
433 public:
435 List<String> *opt_use_partition_arg,
436 const LEX_CSTRING &opt_table_alias_arg,
437 List<Index_hint> *opt_key_definition_arg)
438 : table_ident(table_ident_arg),
439 opt_use_partition(opt_use_partition_arg),
440 opt_table_alias(opt_table_alias_arg.str),
441 opt_key_definition(opt_key_definition_arg) {}
442
443 bool contextualize(Parse_context *pc) override;
444};
445
447 public:
449};
450
453
454 public:
457 const LEX_STRING &table_alias)
458 : m_expr(expr),
459 m_path(path),
460 m_nested_columns(nested_cols),
461 m_table_alias(table_alias) {}
462
463 bool contextualize(Parse_context *pc) override;
464
465 private:
470};
471
474
476
477 public:
481
482 bool contextualize(Parse_context *pc) override;
483};
484
487
488 public:
489 PT_derived_table(bool lateral, PT_subquery *subquery,
490 const LEX_CSTRING &table_alias,
492
493 bool contextualize(Parse_context *pc) override;
494
495 private:
498 const char *const m_table_alias;
499 /// List of explicitly specified column names; if empty, no list.
501};
502
505
506 public:
508 : m_joined_table(joined_table) {}
509
510 bool contextualize(Parse_context *pc) override;
511
512 private:
514};
515
518
519 protected:
524
527
528 public:
529 PT_joined_table(PT_table_reference *tab1_node_arg, const POS &join_pos_arg,
531 : m_left_pt_table(tab1_node_arg),
532 m_join_pos(join_pos_arg),
533 m_type(type),
534 m_right_pt_table(tab2_node_arg) {
535 static_assert(is_single_bit(JTT_INNER), "not a single bit");
536 static_assert(is_single_bit(JTT_STRAIGHT), "not a single bit");
537 static_assert(is_single_bit(JTT_NATURAL), "not a single bit");
538 static_assert(is_single_bit(JTT_LEFT), "not a single bit");
539 static_assert(is_single_bit(JTT_RIGHT), "not a single bit");
540
541 assert(type == JTT_INNER || type == JTT_STRAIGHT_INNER ||
544 }
545
546 /**
547 Adds the cross join to this join operation. The cross join is nested as
548 the table reference on the left-hand side.
549 */
552 return this;
553 }
554
555 /// Adds the table reference as the right-hand side of this join.
557 assert(m_right_pt_table == nullptr);
558 m_right_pt_table = table;
559 }
560
561 bool contextualize(Parse_context *pc) override;
562
563 /// This class is being inherited, it should thus be abstract.
564 ~PT_joined_table() override = 0;
565
566 protected:
568};
569
570inline PT_joined_table::~PT_joined_table() = default;
571
574
575 public:
576 PT_cross_join(PT_table_reference *tab1_node_arg, const POS &join_pos_arg,
577 PT_joined_table_type Type_arg,
578 PT_table_reference *tab2_node_arg)
579 : PT_joined_table(tab1_node_arg, join_pos_arg, Type_arg, tab2_node_arg) {}
580
581 bool contextualize(Parse_context *pc) override;
582};
583
587
588 public:
589 PT_joined_table_on(PT_table_reference *tab1_node_arg, const POS &join_pos_arg,
591 PT_table_reference *tab2_node_arg, Item *on_arg)
592 : super(tab1_node_arg, join_pos_arg, type, tab2_node_arg), on(on_arg) {}
593
594 bool contextualize(Parse_context *pc) override;
595};
596
600
601 public:
603 const POS &join_pos_arg, PT_joined_table_type type,
604 PT_table_reference *tab2_node_arg,
605 List<String> *using_fields_arg)
606 : super(tab1_node_arg, join_pos_arg, type, tab2_node_arg),
607 using_fields(using_fields_arg) {}
608
609 /// A PT_joined_table_using without a list of columns denotes a natural join.
611 const POS &join_pos_arg, PT_joined_table_type type,
612 PT_table_reference *tab2_node_arg)
613 : PT_joined_table_using(tab1_node_arg, join_pos_arg, type, tab2_node_arg,
614 nullptr) {}
615
616 bool contextualize(Parse_context *pc) override;
617};
618
619class PT_group : public Parse_tree_node {
621
624
625 public:
626 PT_group(PT_order_list *group_list_arg, olap_type olap_arg)
627 : group_list(group_list_arg), olap(olap_arg) {}
628
629 bool contextualize(Parse_context *pc) override;
630};
631
632class PT_order : public Parse_tree_node {
634
635 public:
637 explicit PT_order(PT_order_list *order_list_arg)
638 : order_list(order_list_arg) {}
639
640 bool contextualize(Parse_context *pc) override;
641};
642
644 public:
647
648 bool contextualize(Parse_context *pc) final;
649
650 virtual bool set_lock_for_tables(Parse_context *pc) = 0;
651
653
654 protected:
656 thr_lock_type lock_type = TL_IGNORE;
657 switch (m_lock_strength) {
659 lock_type = TL_WRITE;
660 break;
662 lock_type = TL_READ_WITH_SHARED_LOCKS;
663 break;
664 }
665
666 return {lock_type, static_cast<thr_locked_row_action>(action())};
667 }
668
669 private:
672};
673
675 public:
677 Lock_strength strength,
679 : PT_locking_clause(strength, action) {}
680
681 bool set_lock_for_tables(Parse_context *pc) override;
682};
683
685 public:
687
691 : PT_locking_clause(strength, action), m_tables(tables) {}
692
693 bool set_lock_for_tables(Parse_context *pc) override;
694
695 private:
696 /// @todo Move this function to Table_ident?
697 void print_table_ident(const THD *thd, const Table_ident *ident, String *s);
698
699 bool raise_error(THD *thd, const Table_ident *name, int error);
700
701 bool raise_error(int error);
702
704};
705
707 public:
710 }
711
712 bool push_back(PT_locking_clause *locking_clause) {
713 return m_locking_clauses.push_back(locking_clause);
714 }
715
716 bool contextualize(Parse_context *pc) override {
717 for (auto locking_clause : m_locking_clauses)
718 if (locking_clause->contextualize(pc)) return true;
719 return false;
720 }
721
722 private:
724};
725
727 public:
729 virtual Setop_type type() const { return NONE; }
730 virtual bool is_set_operation() const = 0;
731
732 /**
733 True if this query expression can absorb an extraneous order by/limit
734 clause. The `ORDER BY`/`LIMIT` syntax is mostly consistestent, i.e. a
735 trailing clause may not refer to the tables in the `<query primary>`, with
736 one glaring exception:
737
738 (...( SELECT ... )...) ORDER BY ...
739
740 If the nested query expression doesn't contain `ORDER BY`, the statement
741 is interpreted as if the `ORDER BY` was absorbed by the innermost query
742 expression, i.e.:
743
744 (...( SELECT ... ORDER BY ... )...)
745
746 There is no rewriting of the parse tree nor AST happening here, the
747 transformation is done by the contextualizer (see
748 PT_query_expression::contextualize_order_and_limit), which interprets the
749 parse tree, and builds the AST according to this interpretation. This
750 interpretation is governed by the following rule: An `ORDER BY` can be
751 absorbed if none the nested query expressions contains an `ORDER BY` *or*
752 `LIMIT`. The rule is complex, so here are some examples for illustration:
753
754 In these cases the `ORDER BY` *is* absorbed:
755
756 ( SELECT * FROM t1 ) ORDER BY t1.a;
757 (( SELECT * FROM t1 )) ORDER BY t1.a;
758
759 In these cases the ORDER BY is *not* absorbed:
760
761 ( SELECT * FROM t1 ORDER BY 1 ) ORDER BY t1.a;
762 (( SELECT * FROM t1 ) ORDER BY 1 ) ORDER BY t1.a;
763 ( SELECT * FROM t1 LIMIT 1 ) ORDER BY t1.a;
764 (( SELECT * FROM t1 ) LIMIT 1 ) ORDER BY t1.a;
765
766 The same happens with `LIMIT`, obviously, but the optimizer is freeer to
767 choose when to apply the limit, and there are name no resolution issues
768 involved.
769
770 @param order True if the outer query block has the ORDER BY clause.
771 @param limit True if the outer query block has the LIMIT clause.
772 */
773 virtual bool can_absorb_order_and_limit(bool order, bool limit) const = 0;
774 virtual bool has_into_clause() const = 0;
775 virtual bool has_trailing_into_clause() const = 0;
776
777 virtual bool is_table_value_constructor() const = 0;
779};
780
783
784 public:
785 PT_set_scoped_system_variable(const POS &pos, const LEX_CSTRING &opt_prefix,
786 const LEX_CSTRING &name, Item *opt_expr)
787 : m_pos{pos},
788 m_opt_prefix{opt_prefix},
789 m_name{name},
790 m_opt_expr{opt_expr} {}
791
792 bool contextualize(Parse_context *pc) override;
793
794 private:
795 const POS m_pos;
799};
800
802
805
806 public:
807 PT_set_variable(const POS &pos, const LEX_CSTRING &opt_prefix,
808 const LEX_CSTRING &name, const POS &expr_pos, Item *opt_expr)
809 : m_pos{pos},
810 m_opt_prefix{opt_prefix},
811 m_name{name},
812 m_expr_pos{expr_pos},
813 m_opt_expr{opt_expr} {}
814
815 bool contextualize(Parse_context *pc) override;
816
817 private:
818 const POS m_pos;
823};
824
828
831
832 public:
834 Item *expr_arg)
835 : name(name_arg), expr(expr_arg) {}
836
837 bool contextualize(Parse_context *pc) override;
838};
839
842
843 public:
845 const LEX_CSTRING &opt_prefix, const LEX_CSTRING &name,
846 Item *opt_expr)
847 : m_scope{scope},
848 m_name_pos{name_pos},
849 m_opt_prefix{opt_prefix},
850 m_name{name},
851 m_opt_expr{opt_expr} {}
852
853 bool contextualize(Parse_context *pc) override;
854
855 private:
861};
862
866
868
869 public:
871 : opt_charset(opt_charset_arg) {}
872
873 bool contextualize(Parse_context *pc) override;
874};
875
879
881
882 public:
884
885 bool contextualize(Parse_context *pc) override;
886};
887
890
893
894 public:
895 PT_set_names(const CHARSET_INFO *opt_charset_arg,
896 const CHARSET_INFO *opt_collation_arg)
897 : opt_charset(opt_charset_arg), opt_collation(opt_collation_arg) {}
898
899 bool contextualize(Parse_context *pc) override;
900};
901
903
907
908 const char *password;
909 const char *current_password;
913
914 public:
916 const char *current_password_arg,
917 bool retain_current,
918 bool random_password,
919 const POS &expr_pos_arg)
920 : password(password_arg),
921 current_password(current_password_arg),
922 retain_current_password(retain_current),
923 random_password_generator(random_password),
924 expr_pos(expr_pos_arg) {}
925
926 bool contextualize(Parse_context *pc) override;
927};
928
932
934 const char *password;
935 const char *current_password;
939
940 public:
942 const char *password_arg,
943 const char *current_password_arg,
944 bool retain_current,
945 bool random_pass,
946 const POS &expr_pos_arg)
947 : user(user_arg),
948 password(password_arg),
949 current_password(current_password_arg),
950 retain_current_password(retain_current),
951 random_password_generator(random_pass),
952 expr_pos(expr_pos_arg) {}
953
954 bool contextualize(Parse_context *pc) override;
955};
956
959
962
963 public:
966 : type(type_arg), value(value_arg) {}
967
968 bool contextualize(Parse_context *pc) override;
969};
970
973
977
978 public:
979 PT_option_value_list_head(const POS &delimiter_pos_arg,
980 Parse_tree_node *value_arg,
981 const POS &value_pos_arg)
982 : delimiter_pos(delimiter_pos_arg),
983 value(value_arg),
984 value_pos(value_pos_arg) {}
985
986 bool contextualize(Parse_context *pc) override;
987};
988
991
993
994 public:
996 const POS &delimiter_pos_arg, Parse_tree_node *tail,
997 const POS &tail_pos)
998 : super(delimiter_pos_arg, tail, tail_pos), head(head_arg) {}
999
1000 bool contextualize(Parse_context *pc) override {
1001 uchar dummy;
1002 if (check_stack_overrun(pc->thd, STACK_MIN_SIZE, &dummy)) return true;
1003 return head->contextualize(pc) || super::contextualize(pc);
1004 }
1005};
1006
1009
1013
1014 public:
1016 const POS &head_pos_arg,
1017 PT_option_value_list_head *tail_arg)
1018 : head(head_arg), head_pos(head_pos_arg), tail(tail_arg) {}
1019
1020 bool contextualize(Parse_context *pc) override;
1021};
1022
1025
1026 const char *name;
1028
1029 public:
1030 PT_transaction_characteristic(const char *name_arg, int32 value_arg)
1031 : name(name_arg), value(value_arg) {}
1032
1033 bool contextualize(Parse_context *pc) override;
1034};
1035
1038
1039 public:
1040 explicit PT_transaction_access_mode(bool is_read_only)
1041 : super("transaction_read_only", (int32)is_read_only) {}
1042};
1043
1046
1047 public:
1049 : super("transaction_isolation", (int32)level) {}
1050};
1051
1054
1057
1058 public:
1060 PT_transaction_characteristic *opt_tail_arg)
1061 : head(head_arg), opt_tail(opt_tail_arg) {}
1062
1063 bool contextualize(Parse_context *pc) override {
1064 return (super::contextualize(pc) || head->contextualize(pc) ||
1065 (opt_tail != nullptr && opt_tail->contextualize(pc)));
1066 }
1067};
1068
1072
1075
1076 public:
1078 PT_transaction_characteristics *characteristics_arg,
1079 const POS &end_pos_arg)
1080 : characteristics(characteristics_arg), end_pos(end_pos_arg) {}
1081
1082 bool contextualize(Parse_context *pc) override;
1083};
1084
1086 : public Parse_tree_node {};
1087
1091
1095
1096 public:
1098 PT_set_scoped_system_variable *head_arg, const POS &head_pos_arg,
1099 PT_option_value_list_head *opt_tail_arg)
1100 : head(head_arg), head_pos(head_pos_arg), opt_tail(opt_tail_arg) {}
1101
1102 bool contextualize(Parse_context *pc) override;
1103};
1104
1108
1111
1112 public:
1114 PT_transaction_characteristics *characteristics_arg,
1115 const POS &characteristics_pos_arg)
1116 : characteristics(characteristics_arg),
1117 characteristics_pos(characteristics_pos_arg) {}
1118
1119 bool contextualize(Parse_context *pc) override;
1120};
1121
1124
1127
1128 public:
1130 enum_var_type type_arg,
1132 : type(type_arg), list(list_arg) {}
1133
1134 bool contextualize(Parse_context *pc) override;
1135};
1136
1137class PT_set : public Parse_tree_node {
1139
1142
1143 public:
1144 PT_set(const POS &set_pos_arg, PT_start_option_value_list *list_arg)
1145 : set_pos(set_pos_arg), list(list_arg) {}
1146
1147 bool contextualize(Parse_context *pc) override;
1148};
1149
1153
1154 protected:
1155 PT_into_destination(const POS &pos) : m_pos(pos) {}
1156
1157 public:
1158 bool contextualize(Parse_context *pc) override;
1159};
1160
1163
1164 public:
1165 PT_into_destination_outfile(const POS &pos, const LEX_STRING &file_name_arg,
1166 const CHARSET_INFO *charset_arg,
1167 const Field_separators &field_term_arg,
1168 const Line_separators &line_term_arg)
1169 : PT_into_destination(pos), m_exchange(file_name_arg.str, false) {
1170 m_exchange.cs = charset_arg;
1171 m_exchange.field.merge_field_separators(field_term_arg);
1172 m_exchange.line.merge_line_separators(line_term_arg);
1173 }
1174
1175 bool contextualize(Parse_context *pc) override;
1176
1177 private:
1179};
1180
1183
1184 public:
1185 PT_into_destination_dumpfile(const POS &pos, const LEX_STRING &file_name_arg)
1186 : PT_into_destination(pos), m_exchange(file_name_arg.str, true) {}
1187
1188 bool contextualize(Parse_context *pc) override;
1189
1190 private:
1192};
1193
1195 public:
1197
1198 explicit PT_select_var(const LEX_STRING &name_arg) : name(name_arg) {}
1199
1200 virtual bool is_local() const { return false; }
1201 virtual uint get_offset() const {
1202 assert(0);
1203 return 0;
1204 }
1205};
1206
1209
1211
1212#ifndef NDEBUG
1213 /*
1214 Routine to which this Item_splocal belongs. Used for checking if correct
1215 runtime context is used for variable handling.
1216 */
1218#endif
1219
1220 public:
1221 PT_select_sp_var(const LEX_STRING &name_arg) : super(name_arg) {}
1222
1223 bool is_local() const override { return true; }
1224 uint get_offset() const override { return offset; }
1225
1226 bool contextualize(Parse_context *pc) override;
1227};
1228
1231
1232 public:
1233 explicit PT_select_var_list(const POS &pos) : PT_into_destination(pos) {}
1234
1236
1237 bool contextualize(Parse_context *pc) override;
1238
1239 bool push_back(PT_select_var *var) { return value.push_back(var); }
1240};
1241
1242/**
1243 Parse tree node for a single of a window extent's borders,
1244 cf. <window frame extent> in SQL 2003.
1245*/
1247 friend class Window;
1248 Item *m_value{nullptr}; ///< only relevant iff m_border_type == WBT_VALUE_*
1249 public:
1251 const bool m_date_time;
1253
1254 ///< For unbounded border
1256 : m_border_type(type), m_date_time(false) {
1258 }
1259
1260 ///< For bounded non-temporal border, e.g. 2 PRECEDING: 'value' is 2.
1262 : m_value(value), m_border_type(type), m_date_time(false) {}
1263
1264 ///< For bounded INTERVAL 2 DAYS, 'value' is 2, int_type is DAYS.
1266 : m_value(value),
1268 m_date_time(true),
1269 m_int_type(int_type) {}
1270
1271 ///< @returns the '2' in '2 PRECEDING' or 'INTERVAL 2 DAYS PRECEDING'
1272 Item *border() const { return m_value; }
1273 /// Need such low-level access so that fix_fields updates the right pointer
1274 Item **border_ptr() { return &m_value; }
1275
1276 /**
1277 @returns Addition operator for computation of frames, nullptr if error.
1278 @param order_expr Expression to add to/subtract from
1279 @param prec true if PRECEDING
1280 @param asc true if ASC
1281 @param window only used for error generation
1282 */
1283 Item *build_addop(Item_cache *order_expr, bool prec, bool asc,
1284 const Window *window);
1285};
1286
1287/**
1288 Parse tree node for one or both of a window extent's borders, cf.
1289 <window frame extent> in SQL 2003.
1290*/
1293 friend class PT_frame;
1294
1295 public:
1296 /**
1297 Constructor.
1298
1299 Frames of the form "frame_start no_frame_end" are translated during
1300 parsing to "BETWEEN frame_start AND CURRENT ROW". So both 'start' and
1301 'end' are non-nullptr.
1302 */
1304 m_borders[0] = start;
1305 m_borders[1] = end;
1306 }
1307};
1308
1309/**
1310 Parse tree node for a window frame's exclusions, cf. the
1311 <window frame exclusion> clause in SQL 2003.
1312*/
1315
1316 public:
1318 // enum_window_frame_exclusion exclusion() { return m_exclusion; }
1319};
1320
1321/**
1322 Parse tree node for a window's frame, cf. the <window frame clause>
1323 in SQL 2003.
1324*/
1326 public:
1328
1331
1333
1334 /// If true, this is an artificial frame, not specified by the user
1336
1338 PT_exclusion *exclusion)
1339 : m_query_expression(unit),
1340 m_from(from_to->m_borders[0]),
1341 m_to(from_to->m_borders[1]),
1342 m_exclusion(exclusion) {}
1343};
1344
1346
1349
1360
1361 public:
1363 PT_hint_list *opt_hints_arg, const Query_options &options_arg,
1364 PT_item_list *item_list_arg, PT_into_destination *opt_into1_arg,
1365 const Mem_root_array_YY<PT_table_reference *> &from_clause_arg,
1366 Item *opt_where_clause_arg, PT_group *opt_group_clause_arg,
1367 Item *opt_having_clause_arg, PT_window_list *opt_window_clause_arg,
1368 bool implicit_from_clause)
1369 : opt_hints(opt_hints_arg),
1370 options(options_arg),
1371 item_list(item_list_arg),
1372 opt_into1(opt_into1_arg),
1373 m_is_from_clause_implicit{implicit_from_clause},
1374 from_clause(from_clause_arg),
1375 opt_where_clause(opt_where_clause_arg),
1376 opt_group_clause(opt_group_clause_arg),
1377 opt_having_clause(opt_having_clause_arg),
1378 opt_window_clause(opt_window_clause_arg) {
1379 assert(implicit_from_clause ? from_clause.empty() : true);
1380 }
1381
1383 const Query_options &options_arg, PT_item_list *item_list_arg,
1384 const Mem_root_array_YY<PT_table_reference *> &from_clause_arg,
1385 Item *opt_where_clause_arg)
1386 : opt_hints(nullptr),
1387 options(options_arg),
1388 item_list(item_list_arg),
1391 from_clause(from_clause_arg),
1392 opt_where_clause(opt_where_clause_arg),
1396
1398 PT_item_list *item_list_arg)
1399 : opt_hints(nullptr),
1400 options(options_arg),
1401 item_list(item_list_arg),
1404 from_clause{},
1409
1410 bool contextualize(Parse_context *pc) override;
1411
1412 bool has_into_clause() const override { return opt_into1 != nullptr; }
1413 bool has_trailing_into_clause() const override {
1415 opt_where_clause == nullptr && opt_group_clause == nullptr &&
1416 opt_having_clause == nullptr && opt_window_clause == nullptr);
1417 }
1418
1419 bool is_set_operation() const override { return false; }
1420
1421 bool can_absorb_order_and_limit(bool, bool) const override { return true; }
1422
1423 bool is_table_value_constructor() const override { return false; }
1424 PT_insert_values_list *get_row_value_list() const override { return nullptr; }
1425
1426 private:
1428};
1429
1432
1434
1435 public:
1437 : row_value_list(row_value_list_arg) {}
1438
1439 bool contextualize(Parse_context *pc) override;
1440
1441 bool has_into_clause() const override { return false; }
1442 bool has_trailing_into_clause() const override { return false; }
1443
1444 bool is_set_operation() const override { return false; }
1445
1446 bool can_absorb_order_and_limit(bool, bool) const override { return true; }
1447
1448 bool is_table_value_constructor() const override { return true; }
1449
1451 return row_value_list;
1452 }
1453};
1454
1457
1458 public:
1460 const Query_options &options_arg, PT_item_list *item_list_arg,
1461 const Mem_root_array_YY<PT_table_reference *> &from_clause_arg)
1462 : super(options_arg, item_list_arg, from_clause_arg, nullptr) {}
1463};
1464
1466 public:
1468 PT_query_expression_body *body, PT_order *order,
1469 PT_limit_clause *limit)
1470 : m_body(body),
1471 m_order(order),
1472 m_limit(limit),
1473 m_with_clause(with_clause) {}
1474
1476 PT_limit_clause *limit)
1477 : PT_query_expression(nullptr, body, order, limit) {}
1478
1481
1482 bool contextualize(Parse_context *pc) override;
1483
1484 bool is_set_operation() const override { return m_body->is_set_operation(); }
1485
1486 bool has_into_clause() const override { return m_body->has_into_clause(); }
1487 bool has_trailing_into_clause() const override {
1488 return (m_body->has_trailing_into_clause() && m_order == nullptr &&
1489 m_limit == nullptr);
1490 }
1491
1492 bool can_absorb_order_and_limit(bool order, bool limit) const override {
1493 if (m_body->is_set_operation()) {
1494 return false;
1495 }
1496 if (m_order == nullptr && m_limit == nullptr) {
1497 /*
1498 It is safe to push ORDER and/or LIMIT down in:
1499
1500 (SELECT ...<no order or limit clauses>) ORDER BY ... LIMIT ...;
1501 (SELECT ...<no order or limit clauses>) ORDER BY ...;
1502 (SELECT ...<no order or limit clauses>) LIMIT ...;
1503 */
1504 return true;
1505 }
1506 if (m_limit != nullptr && !order && limit) {
1507 /*
1508 In MySQL, it is ok(*) to push LIMIT down in:
1509
1510 (SELECT ... [ORDER BY ...] LIMIT a) LIMIT b;
1511
1512 *) MySQL doesn't follow the standard when overwriting `LIMIT a` with
1513 `LIMIT b` if a < b. Moreover, the result of:
1514
1515 (SELECT ... ORDER BY order1 LIMIT a) ORDER BY order1 LIMIT b; (1)
1516
1517 can diverge from:
1518
1519 (SELECT ... ORDER BY order1 LIMIT a) LIMIT b; (2)
1520
1521 since the example (1) never overwrites `LIMIT a` with `LIMIT b`,
1522 while the example (2) does overwrite.
1523
1524 TODO: add a warning, deprecate and replace this behavior with the
1525 standard one.
1526 */
1527 return true;
1528 }
1529 if (m_order != nullptr && m_limit == nullptr && !order && limit) {
1530 /*
1531 Allow pushdown of LIMIT into body with ORDER BY, e.g
1532
1533 (SELECT ... ORDER BY order1) LIMIT a;
1534 */
1535 return true;
1536 }
1537 return false;
1538 }
1539
1540 bool is_table_value_constructor() const override {
1542 }
1543
1545 return m_body->get_row_value_list();
1546 }
1547
1548 private:
1549 /**
1550 Contextualizes the order and limit clauses, re-interpreting them according
1551 to the rules. If the `<query expression body>` can absorb the clauses,
1552 they are simply contextualized into the current Query_block. If not, we
1553 have to create the "fake" Query_block unless there is one already
1554 (Query_expression::new_set_operation_query() is known to do this.)
1555
1556 @see PT_query_expression::can_absorb_order_and_limit()
1557 */
1559
1564};
1565
1566/*
1567 After the removal of the `... <locking_clause> <into_clause>` syntax
1568 PT_locking will disappear.
1569*/
1572
1573 public:
1575 PT_locking_clause_list *locking_clauses)
1576 : m_query_expression{qe}, m_locking_clauses{locking_clauses} {}
1577
1578 bool contextualize(Parse_context *pc) override {
1581 }
1582
1583 bool is_set_operation() const override {
1585 }
1586
1587 bool has_into_clause() const override {
1589 }
1590 bool has_trailing_into_clause() const override { return false; }
1591
1592 bool can_absorb_order_and_limit(bool order, bool limit) const override {
1593 return m_query_expression->can_absorb_order_and_limit(order, limit);
1594 }
1595
1596 bool is_table_value_constructor() const override {
1598 }
1599
1602 }
1603
1604 private:
1607};
1608
1611
1615
1616 public:
1618
1620 : qe(query_expression),
1621 pos(p),
1623 m_is_derived_table(false) {}
1624
1625 bool contextualize(Parse_context *pc) override;
1626
1628};
1629
1632
1633 public:
1636 bool is_rhs_in_parentheses = false)
1638 m_is_rhs_in_parentheses{is_rhs_in_parentheses} {
1639 m_list.push_back(lhs);
1640 m_list.push_back(rhs);
1641 }
1642
1644 QueryLevel &ql);
1645 bool is_set_operation() const override { return true; }
1646
1647 bool has_into_clause() const override {
1648 return std::any_of(m_list.cbegin(), m_list.cend(),
1649 [](const PT_query_expression_body &body) {
1650 return body.has_into_clause();
1651 });
1652 }
1653 bool has_trailing_into_clause() const override {
1654 return !m_is_rhs_in_parentheses &&
1655 m_list[m_list.elements - 1]->has_trailing_into_clause();
1656 }
1657
1658 bool can_absorb_order_and_limit(bool, bool) const override { return false; }
1659
1660 bool is_table_value_constructor() const override { return false; }
1661 PT_insert_values_list *get_row_value_list() const override { return nullptr; }
1662 bool is_distinct() const { return m_is_distinct; }
1663
1666
1667 protected:
1669 Surrounding_context context);
1674};
1675
1678
1679 public:
1681 bool contextualize(Parse_context *pc) override;
1682 enum Setop_type type() const override { return UNION; }
1683};
1684
1687
1688 public:
1690 bool contextualize(Parse_context *pc) override;
1691 enum Setop_type type() const override { return EXCEPT; }
1692};
1693
1696
1697 public:
1699 bool contextualize(Parse_context *pc) override;
1700 enum Setop_type type() const override { return INTERSECT; }
1701};
1702
1705
1706 public:
1707 /**
1708 @param qe The query expression.
1709 @param sql_command The type of SQL command.
1710 */
1712 : m_sql_command(sql_command),
1713 m_qe(qe),
1714 m_into(nullptr),
1716
1717 /**
1718 Creates a SELECT command. Only SELECT commands can have into.
1719
1720 @param qe The query expression.
1721 @param into The own INTO destination.
1722 @param has_trailing_locking_clauses True if there are locking clauses (like
1723 `FOR UPDATE`) at the end of the
1724 statement.
1725 */
1727 PT_into_destination *into = nullptr,
1728 bool has_trailing_locking_clauses = false)
1730 m_qe{qe},
1731 m_into{into},
1732 m_has_trailing_locking_clauses{has_trailing_locking_clauses} {}
1733
1734 Sql_cmd *make_cmd(THD *thd) override;
1735
1736 private:
1741};
1742
1743/**
1744 Top-level node for the DELETE statement
1745
1746 @ingroup ptn_stmt
1747*/
1748class PT_delete final : public Parse_tree_root {
1749 private:
1754 const char *const opt_table_alias;
1762
1763 public:
1764 // single-table DELETE node constructor:
1765 PT_delete(PT_with_clause *with_clause_arg, PT_hint_list *opt_hints_arg,
1766 int opt_delete_options_arg, Table_ident *table_ident_arg,
1767 const LEX_CSTRING &opt_table_alias_arg,
1768 List<String> *opt_use_partition_arg, Item *opt_where_clause_arg,
1769 PT_order *opt_order_clause_arg, Item *opt_delete_limit_clause_arg)
1770 : m_with_clause(with_clause_arg),
1771 opt_hints(opt_hints_arg),
1772 opt_delete_options(opt_delete_options_arg),
1773 table_ident(table_ident_arg),
1774 opt_table_alias(opt_table_alias_arg.str),
1775 opt_use_partition(opt_use_partition_arg),
1776 opt_where_clause(opt_where_clause_arg),
1777 opt_order_clause(opt_order_clause_arg),
1778 opt_delete_limit_clause(opt_delete_limit_clause_arg) {
1780 join_table_list.init_empty_const();
1781 }
1782
1783 // multi-table DELETE node constructor:
1784 PT_delete(PT_with_clause *with_clause_arg, PT_hint_list *opt_hints_arg,
1785 int opt_delete_options_arg,
1786 const Mem_root_array_YY<Table_ident *> &table_list_arg,
1787 const Mem_root_array_YY<PT_table_reference *> &join_table_list_arg,
1788 Item *opt_where_clause_arg)
1789 : m_with_clause(with_clause_arg),
1790 opt_hints(opt_hints_arg),
1791 opt_delete_options(opt_delete_options_arg),
1794 table_list(table_list_arg),
1796 join_table_list(join_table_list_arg),
1797 opt_where_clause(opt_where_clause_arg),
1800
1801 Sql_cmd *make_cmd(THD *thd) override;
1802
1803 private:
1804 bool is_multitable() const {
1805 assert((table_ident != nullptr) ^ (table_list.size() > 0));
1806 return table_ident == nullptr;
1807 }
1808
1809 bool add_table(Parse_context *pc, Table_ident *table);
1810};
1811
1812/**
1813 Top-level node for the UPDATE statement
1814
1815 @ingroup ptn_stmt
1816*/
1828
1829 public:
1830 PT_update(PT_with_clause *with_clause_arg, PT_hint_list *opt_hints_arg,
1831 thr_lock_type opt_low_priority_arg, bool opt_ignore_arg,
1832 const Mem_root_array_YY<PT_table_reference *> &join_table_list_arg,
1833 PT_item_list *column_list_arg, PT_item_list *value_list_arg,
1834 Item *opt_where_clause_arg, PT_order *opt_order_clause_arg,
1835 Item *opt_limit_clause_arg)
1836 : m_with_clause(with_clause_arg),
1837 opt_hints(opt_hints_arg),
1838 opt_low_priority(opt_low_priority_arg),
1839 opt_ignore(opt_ignore_arg),
1840 join_table_list(join_table_list_arg),
1841 column_list(column_list_arg),
1842 value_list(value_list_arg),
1843 opt_where_clause(opt_where_clause_arg),
1844 opt_order_clause(opt_order_clause_arg),
1845 opt_limit_clause(opt_limit_clause_arg) {}
1846
1847 Sql_cmd *make_cmd(THD *thd) override;
1848};
1849
1852
1854
1855 public:
1857
1858 bool contextualize(Parse_context *pc) override;
1859
1861 many_values.push_back(x);
1862 return false;
1863 }
1864
1866 assert(is_contextualized());
1867 return many_values;
1868 }
1869};
1870
1871/**
1872 Top-level node for the INSERT statement
1873
1874 @ingroup ptn_stmt
1875*/
1876class PT_insert final : public Parse_tree_root {
1877 const bool is_replace;
1880 const bool ignore;
1886 const char *const opt_values_table_alias;
1890
1891 public:
1892 PT_insert(bool is_replace_arg, PT_hint_list *opt_hints_arg,
1893 thr_lock_type lock_option_arg, bool ignore_arg,
1894 Table_ident *table_ident_arg, List<String> *opt_use_partition_arg,
1895 PT_item_list *column_list_arg,
1896 PT_insert_values_list *row_value_list_arg,
1897 PT_query_expression_body *insert_query_expression_arg,
1898 const LEX_CSTRING &opt_values_table_alias_arg,
1899 Create_col_name_list *opt_values_column_list_arg,
1900 PT_item_list *opt_on_duplicate_column_list_arg,
1901 PT_item_list *opt_on_duplicate_value_list_arg)
1902 : is_replace(is_replace_arg),
1903 opt_hints(opt_hints_arg),
1904 lock_option(lock_option_arg),
1905 ignore(ignore_arg),
1906 table_ident(table_ident_arg),
1907 opt_use_partition(opt_use_partition_arg),
1908 column_list(column_list_arg),
1909 row_value_list(row_value_list_arg),
1910 insert_query_expression(insert_query_expression_arg),
1911 opt_values_table_alias(opt_values_table_alias_arg.str),
1912 opt_values_column_list(opt_values_column_list_arg),
1913 opt_on_duplicate_column_list(opt_on_duplicate_column_list_arg),
1914 opt_on_duplicate_value_list(opt_on_duplicate_value_list_arg) {
1915 // REPLACE statement can't have IGNORE flag:
1916 assert(!is_replace || !ignore);
1917 // REPLACE statement can't have ON DUPLICATE KEY UPDATE clause:
1918 assert(!is_replace || opt_on_duplicate_column_list == nullptr);
1919 // INSERT/REPLACE ... SELECT can't have VALUES clause:
1920 assert((row_value_list != nullptr) ^ (insert_query_expression != nullptr));
1921 // ON DUPLICATE KEY UPDATE: column and value arrays must have same sizes:
1922 assert((opt_on_duplicate_column_list == nullptr &&
1923 opt_on_duplicate_value_list == nullptr) ||
1926 }
1927
1928 Sql_cmd *make_cmd(THD *thd) override;
1929
1930 private:
1931 bool has_query_block() const { return insert_query_expression != nullptr; }
1932};
1933
1934class PT_call final : public Parse_tree_root {
1937
1938 public:
1939 PT_call(sp_name *proc_name_arg, PT_item_list *opt_expr_list_arg)
1940 : proc_name(proc_name_arg), opt_expr_list(opt_expr_list_arg) {}
1941
1942 Sql_cmd *make_cmd(THD *thd) override;
1943};
1944
1945/**
1946 Top-level node for the SHUTDOWN statement
1947
1948 @ingroup ptn_stmt
1949*/
1950class PT_shutdown final : public Parse_tree_root {
1952
1953 public:
1954 Sql_cmd *make_cmd(THD *) override { return &sql_cmd; }
1955};
1956
1957/**
1958 Top-level node for the CREATE [OR REPLACE] SPATIAL REFERENCE SYSTEM statement.
1959
1960 @ingroup ptn_stmt
1961*/
1962class PT_create_srs final : public Parse_tree_root {
1963 /// The SQL command object.
1965 /// Whether OR REPLACE is specified.
1967 /// Whether IF NOT EXISTS is specified.
1969 /// SRID of the SRS to create.
1970 ///
1971 /// The range is larger than that of gis::srid_t, so it must be
1972 /// verified to be less than the uint32 maximum value.
1973 unsigned long long m_srid;
1974 /// All attributes except SRID.
1976
1977 /// Check if a UTF-8 string contains control characters.
1978 ///
1979 /// @note This function only checks single byte control characters (U+0000 to
1980 /// U+001F, and U+007F). There are some control characters at U+0080 to U+00A0
1981 /// that are not detected by this function.
1982 ///
1983 /// @param str The string.
1984 /// @param length Length of the string.
1985 ///
1986 /// @retval false The string contains no control characters.
1987 /// @retval true The string contains at least one control character.
1988 bool contains_control_char(char *str, size_t length) {
1989 for (size_t pos = 0; pos < length; pos++) {
1990 if (std::iscntrl(str[pos])) return true;
1991 }
1992 return false;
1993 }
1994
1995 public:
1996 PT_create_srs(unsigned long long srid,
1997 const Sql_cmd_srs_attributes &attributes, bool or_replace,
1998 bool if_not_exists)
1999 : m_or_replace(or_replace),
2000 m_if_not_exists(if_not_exists),
2001 m_srid(srid),
2002 m_attributes(attributes) {}
2003
2004 Sql_cmd *make_cmd(THD *thd) override;
2005};
2006
2007/**
2008 Top-level node for the DROP SPATIAL REFERENCE SYSTEM statement.
2009
2010 @ingroup ptn_stmt
2011*/
2012class PT_drop_srs final : public Parse_tree_root {
2013 /// The SQL command object.
2015 /// SRID of the SRS to drop.
2016 ///
2017 /// The range is larger than that of gis::srid_t, so it must be
2018 /// verified to be less than the uint32 maximum value.
2019 unsigned long long m_srid;
2020
2021 public:
2022 PT_drop_srs(unsigned long long srid, bool if_exists)
2023 : sql_cmd(srid, if_exists), m_srid(srid) {}
2024
2025 Sql_cmd *make_cmd(THD *thd) override;
2026};
2027
2028/**
2029 Top-level node for the ALTER INSTANCE statement
2030
2031 @ingroup ptn_stmt
2032*/
2035
2036 public:
2038 enum alter_instance_action_enum alter_instance_action,
2039 const LEX_CSTRING &channel)
2040 : sql_cmd(alter_instance_action, channel) {}
2041
2042 Sql_cmd *make_cmd(THD *thd) override;
2043};
2044
2045/**
2046 A template-free base class for index options that we can predeclare in
2047 sql_lex.h
2048*/
2050
2051/**
2052 A key part specification.
2053
2054 This can either be a "normal" key part (a key part that points to a column),
2055 or this can be a functional key part (a key part that points to an
2056 expression).
2057*/
2060
2061 public:
2062 /**
2063 Constructor for a functional key part.
2064
2065 @param expression The expression to index.
2066 @param order The direction of the index.
2067 */
2068 PT_key_part_specification(Item *expression, enum_order order);
2069
2070 /**
2071 Constructor for a "normal" key part. That is a key part that points to a
2072 column and not an expression.
2073
2074 @param column_name The column name that this key part points to.
2075 @param order The direction of the index.
2076 @param prefix_length How many bytes or characters this key part should
2077 index, or zero if it should index the entire column.
2078 */
2079 PT_key_part_specification(const LEX_CSTRING &column_name, enum_order order,
2080 int prefix_length);
2081
2082 /**
2083 Contextualize this key part specification. This will also call itemize on
2084 the indexed expression if this is a functional key part.
2085
2086 @param pc The parse context
2087
2088 @retval true on error
2089 @retval false on success
2090 */
2091 bool contextualize(Parse_context *pc) override;
2092
2093 /**
2094 Get the indexed expression. The caller must ensure that has_expression()
2095 returns true before calling this.
2096
2097 @returns The indexed expression
2098 */
2100 assert(has_expression());
2101 return m_expression;
2102 }
2103
2104 /**
2105 @returns The direction of the index: ORDER_ASC, ORDER_DESC or
2106 ORDER_NOT_RELEVANT in case the user didn't explicitly specify a
2107 direction.
2108 */
2109 enum_order get_order() const { return m_order; }
2110
2111 /**
2112 @retval true if the user explicitly specified a direction (asc/desc).
2113 @retval false if the user didn't explicitly specify a direction.
2114 */
2115 bool is_explicit() const { return get_order() != ORDER_NOT_RELEVANT; }
2116
2117 /**
2118 @retval true if the key part contains an expression (and thus is a
2119 functional key part).
2120 @retval false if the key part doesn't contain an expression.
2121 */
2122 bool has_expression() const { return m_expression != nullptr; }
2123
2124 /**
2125 Get the column that this key part points to. This is only valid if this
2126 key part isn't a functional index. The caller must thus check the return
2127 value of has_expression() before calling this function.
2128
2129 @returns The column that this key part points to.
2130 */
2132 assert(!has_expression());
2133 return m_column_name;
2134 }
2135
2136 /**
2137 @returns The number of bytes that this key part should index. If the column
2138 this key part points to is a non-binary column, this is the number
2139 of characters. Returns zero if the entire column should be indexed.
2140 */
2141 int get_prefix_length() const { return m_prefix_length; }
2142
2143 private:
2144 /**
2145 The indexed expression in case this is a functional key part. Only valid if
2146 has_expression() returns true.
2147 */
2149
2150 /// The direction of the index.
2152
2153 /// The name of the column that this key part indexes.
2155
2156 /**
2157 If this is greater than zero, it represents how many bytes of the column
2158 that is indexed. Note that for non-binary columns (VARCHAR, TEXT etc), this
2159 is the number of characters.
2160 */
2162};
2163
2164/**
2165 A template for options that set a single `<alter option>` value in
2166 thd->lex->key_create_info.
2167
2168 @tparam Option_type The data type of the option.
2169 @tparam Property Pointer-to-member for the option of KEY_CREATE_INFO.
2170*/
2171template <typename Option_type, Option_type KEY_CREATE_INFO::*Property>
2173 public:
2174 /// @param option_value The value of the option.
2175 PT_index_option(Option_type option_value) : m_option_value(option_value) {}
2176
2179 return false;
2180 }
2181
2182 private:
2183 Option_type m_option_value;
2184};
2185
2186/**
2187 A template for options that set a single property in a KEY_CREATE_INFO, and
2188 also records if the option was explicitly set.
2189*/
2190template <typename Option_type, Option_type KEY_CREATE_INFO::*Property,
2191 bool KEY_CREATE_INFO::*Property_is_explicit>
2193 public:
2194 PT_traceable_index_option(Option_type option_value)
2195 : m_option_value(option_value) {}
2196
2199 pc->key_create_info->*Property_is_explicit = true;
2200 return false;
2201 }
2202
2203 private:
2204 Option_type m_option_value;
2205};
2206
2214
2215/**
2216 The data structure (B-tree, Hash, etc) used for an index is called
2217 'index_type' in the manual. Internally, this is stored in
2218 KEY_CREATE_INFO::algorithm, while what the manual calls 'algorithm' is
2219 stored in partition_info::key_algorithm. In an `<create_index_stmt>`
2220 it's ignored. The terminology is somewhat confusing, but we stick to the
2221 manual in the parser.
2222*/
2226
2228 public:
2230 const LEX_STRING &name_arg, PT_base_index_option *type,
2231 Table_ident *table_ident,
2237 m_keytype(type_par),
2238 m_name(name_arg),
2239 m_type(type),
2240 m_table_ident(table_ident),
2241 m_columns(cols),
2243 m_algo(algo),
2244 m_lock(lock) {}
2245
2246 Sql_cmd *make_cmd(THD *thd) override;
2247
2248 private:
2257};
2258
2259/**
2260 Base class for column/constraint definitions in CREATE %TABLE
2261
2262 @ingroup ptn_create_table_stuff
2263*/
2265
2267
2270
2271 public:
2276 : m_keytype(type_par),
2277 m_name(name_arg),
2278 m_type(type),
2279 m_columns(cols),
2280 m_options(options) {}
2281
2282 bool contextualize(Table_ddl_parse_context *pc) override;
2283
2284 private:
2290};
2291
2294
2295 public:
2297 const LEX_STRING &key_name,
2299 Table_ident *referenced_table,
2300 List<Key_part_spec> *ref_list,
2301 fk_match_opt fk_match_option,
2302 fk_option fk_update_opt, fk_option fk_delete_opt)
2303 : m_constraint_name(constraint_name),
2304 m_key_name(key_name),
2305 m_columns(columns),
2306 m_referenced_table(referenced_table),
2307 m_ref_list(ref_list),
2308 m_fk_match_option(fk_match_option),
2309 m_fk_update_opt(fk_update_opt),
2310 m_fk_delete_opt(fk_delete_opt) {}
2311
2312 bool contextualize(Table_ddl_parse_context *pc) override;
2313
2314 private:
2323};
2324
2325/**
2326 Common base class for CREATE TABLE and ALTER TABLE option nodes
2327
2328 @ingroup ptn_create_or_alter_table_options
2329*/
2331 public:
2332 ~PT_ddl_table_option() override = 0; // Force abstract class declaration
2333
2334 virtual bool is_rename_table() const { return false; }
2335};
2336
2338
2339/**
2340 Base class for CREATE TABLE option nodes
2341
2342 @ingroup ptn_create_or_alter_table_options
2343*/
2346
2347 public:
2348 ~PT_create_table_option() override = 0; // Force abstract class declaration
2349
2351 if (super::contextualize(pc)) return true;
2353 return false;
2354 }
2355};
2356
2358
2359/**
2360 A template for options that set a single property in HA_CREATE_INFO, and
2361 also records if the option was explicitly set.
2362*/
2363template <typename Option_type, Option_type HA_CREATE_INFO::*Property,
2364 uint64_t Property_flag>
2367
2368 const Option_type value;
2369
2370 public:
2372
2374 if (super::contextualize(pc)) return true;
2375 pc->create_info->*Property = value;
2376 pc->create_info->used_fields |= Property_flag;
2377 return false;
2378 }
2379};
2380
2381#define TYPE_AND_REF(x) decltype(x), &x
2382
2383/**
2384 Node for the @SQL{MAX_ROWS [=] @B{@<integer@>}} table option
2385
2386 @ingroup ptn_create_or_alter_table_options
2387*/
2391
2392/**
2393 Node for the @SQL{MIN_ROWS [=] @B{@<integer@>}} table option
2394
2395 @ingroup ptn_create_or_alter_table_options
2396*/
2400
2401/**
2402 Node for the @SQL{AVG_ROW_LENGTH_ROWS [=] @B{@<integer@>}} table option
2403
2404 @ingroup ptn_create_or_alter_table_options
2405*/
2409
2410/**
2411 Node for the @SQL{PASSWORD [=] @B{@<string@>}} table option
2412
2413 @ingroup ptn_create_or_alter_table_options
2414*/
2418
2419/**
2420 Node for the @SQL{COMMENT [=] @B{@<string@>}} table option
2421
2422 @ingroup ptn_create_or_alter_table_options
2423*/
2427
2428/**
2429 Node for the @SQL{COMPRESSION [=] @B{@<string@>}} table option
2430
2431 @ingroup ptn_create_or_alter_table_options
2432*/
2436
2437/**
2438 Node for the @SQL{ENGRYPTION [=] @B{@<string@>}} table option
2439
2440 @ingroup ptn_create_or_alter_table_options
2441*/
2445
2446/**
2447 Node for the @SQL{AUTO_INCREMENT [=] @B{@<integer@>}} table option
2448
2449 @ingroup ptn_create_or_alter_table_options
2450*/
2454
2458
2463
2467
2471
2475
2479
2483
2488
2493
2495
2496/**
2497 A template for options that set HA_CREATE_INFO::table_options and
2498 also records if the option was explicitly set.
2499*/
2500template <ulong Property_flag, table_options_t Default, table_options_t Yes,
2501 table_options_t No>
2504
2506
2507 public:
2509 : value(value) {}
2510
2512 if (super::contextualize(pc)) return true;
2513 pc->create_info->table_options &= ~(Yes | No);
2514 switch (value) {
2515 case Ternary_option::ON:
2516 pc->create_info->table_options |= Yes;
2517 break;
2519 pc->create_info->table_options |= No;
2520 break;
2522 break;
2523 default:
2524 assert(false);
2525 }
2526 pc->create_info->used_fields |= Property_flag;
2527 return false;
2528 }
2529};
2530
2531/**
2532 Node for the @SQL{PACK_KEYS [=] @B{1|0|DEFAULT}} table option
2533
2534 @ingroup ptn_create_or_alter_table_options
2535
2536 PACK_KEYS | Constructor parameter
2537 ----------|----------------------
2538 1 | Ternary_option::ON
2539 0 | Ternary_option::OFF
2540 DEFAULT | Ternary_option::DEFAULT
2541*/
2543 0, // DEFAULT
2544 HA_OPTION_PACK_KEYS, // ON
2547
2548/**
2549 Node for the @SQL{STATS_PERSISTENT [=] @B{1|0|DEFAULT}} table option
2550
2551 @ingroup ptn_create_or_alter_table_options
2552
2553 STATS_PERSISTENT | Constructor parameter
2554 -----------------|----------------------
2555 1 | Ternary_option::ON
2556 0 | Ternary_option::OFF
2557 DEFAULT | Ternary_option::DEFAULT
2558*/
2560 0, // DEFAULT
2564
2565/**
2566 A template for options that set HA_CREATE_INFO::table_options and
2567 also records if the option was explicitly set.
2568*/
2569template <ulong Property_flag, table_options_t Yes, table_options_t No>
2572
2573 const bool value;
2574
2575 public:
2577
2579 if (super::contextualize(pc)) return true;
2580 pc->create_info->table_options &= ~(Yes | No);
2581 pc->create_info->table_options |= value ? Yes : No;
2582 pc->create_info->used_fields |= Property_flag;
2583 return false;
2584 }
2585};
2586
2587/**
2588 Node for the @SQL{CHECKSUM|TABLE_CHECKSUM [=] @B{0|@<not 0@>}} table option
2589
2590 @ingroup ptn_create_or_alter_table_options
2591
2592 TABLE_CHECKSUM | Constructor parameter
2593 ---------------|----------------------
2594 0 | false
2595 not 0 | true
2596*/
2598 HA_OPTION_CHECKSUM, // ON
2600 >
2602
2603/**
2604 Node for the @SQL{DELAY_KEY_WRITE [=] @B{0|@<not 0@>}} table option
2605
2606 @ingroup ptn_create_or_alter_table_options
2607
2608 TABLE_CHECKSUM | Constructor parameter
2609 ---------------|----------------------
2610 0 | false
2611 not 0 | true
2612*/
2617
2618/**
2619 Node for the @SQL{ENGINE [=] @B{@<identifier@>|@<string@>}} table option
2620
2621 @ingroup ptn_create_or_alter_table_options
2622*/
2625
2627
2628 public:
2629 /**
2630 @param engine Storage engine name.
2631 */
2633 : engine(engine) {}
2634
2635 bool contextualize(Table_ddl_parse_context *pc) override;
2636};
2637
2638/**
2639 Node for the @SQL{SECONDARY_ENGINE [=] @B{@<identifier@>|@<string@>|NULL}}
2640 table option.
2641
2642 @ingroup ptn_create_or_alter_table_options
2643*/
2646
2647 public:
2652
2653 bool contextualize(Table_ddl_parse_context *pc) override;
2654
2655 private:
2657};
2658
2659/**
2660 Node for the @SQL{STATS_AUTO_RECALC [=] @B{@<0|1|DEFAULT@>})} table option
2661
2662 @ingroup ptn_create_or_alter_table_options
2663*/
2666
2668
2669 public:
2670 /**
2671 @param value
2672 STATS_AUTO_RECALC | value
2673 ------------------|----------------------
2674 1 | Ternary_option::ON
2675 0 | Ternary_option::OFF
2676 DEFAULT | Ternary_option::DEFAULT
2677 */
2679
2680 bool contextualize(Table_ddl_parse_context *pc) override;
2681};
2682
2683/**
2684 Node for the @SQL{STATS_SAMPLE_PAGES [=] @B{@<integer@>|DEFAULT}} table option
2685
2686 @ingroup ptn_create_or_alter_table_options
2687*/
2691
2693
2694 public:
2695 /**
2696 Constructor for implicit number of pages
2697
2698 @param value Number of pages, 1@<=N@<=65535.
2699 */
2701 assert(value != 0 && value <= 0xFFFF);
2702 }
2703 /**
2704 Constructor for the DEFAULT number of pages
2705 */
2707
2708 bool contextualize(Table_ddl_parse_context *pc) override;
2709};
2710
2713
2715
2716 public:
2718 : tables(tables) {}
2719
2720 bool contextualize(Table_ddl_parse_context *pc) override;
2721};
2722
2725
2727
2728 public:
2730
2732 if (super::contextualize(pc)) return true;
2734 return false;
2735 }
2736};
2737
2740
2742
2743 public:
2745 : value(value) {
2746 assert(value != nullptr);
2747 }
2748
2749 bool contextualize(Table_ddl_parse_context *pc) override;
2750};
2751
2754
2756
2757 public:
2759 : value(value) {
2760 assert(value != nullptr);
2761 }
2762
2763 bool contextualize(Table_ddl_parse_context *pc) override;
2764};
2765
2769
2770 public:
2771 explicit PT_check_constraint(LEX_STRING &name, Item *expr, bool is_enforced) {
2772 cc_spec.name = name;
2773 cc_spec.check_expr = expr;
2774 cc_spec.is_enforced = is_enforced;
2775 }
2777
2778 bool contextualize(Table_ddl_parse_context *pc) override;
2779};
2780
2783
2786 // Currently we ignore that constraint in the executor.
2788
2789 const char *opt_place;
2790
2791 public:
2794 const char *opt_place = nullptr)
2799
2800 bool contextualize(Table_ddl_parse_context *pc) override;
2801};
2802
2803/**
2804 Top-level node for the CREATE %TABLE statement
2805
2806 @ingroup ptn_create_table
2807*/
2818
2820
2821 public:
2822 /**
2823 @param mem_root MEM_ROOT to use for allocation
2824 @param is_temporary True if @SQL{CREATE @B{TEMPORARY} %TABLE}
2825 @param only_if_not_exists True if @SQL{CREATE %TABLE ... @B{IF NOT EXISTS}}
2826 @param table_name @SQL{CREATE %TABLE ... @B{@<table name@>}}
2827 @param opt_table_element_list NULL or a list of table column and
2828 constraint definitions.
2829 @param opt_create_table_options NULL or a list of
2830 @ref ptn_create_or_alter_table_options
2831 "table options".
2832 @param opt_partitioning NULL or the @SQL{PARTITION BY} clause.
2833 @param on_duplicate DUPLICATE, IGNORE or fail with an error
2834 on data duplication errors (relevant
2835 for @SQL{CREATE TABLE ... SELECT}
2836 statements).
2837 @param opt_query_expression NULL or the @SQL{@B{SELECT}} clause.
2838 */
2856 /**
2857 @param mem_root MEM_ROOT to use for allocation
2858 @param is_temporary True if @SQL{CREATE @B{TEMPORARY} %TABLE}.
2859 @param only_if_not_exists True if @SQL{CREATE %TABLE ... @B{IF NOT EXISTS}}.
2860 @param table_name @SQL{CREATE %TABLE ... @B{@<table name@>}}.
2861 @param opt_like_clause NULL or the @SQL{@B{LIKE @<table name@>}} clause.
2862 */
2876
2877 Sql_cmd *make_cmd(THD *thd) override;
2878};
2879
2880class PT_create_role final : public Parse_tree_root {
2882
2883 public:
2884 PT_create_role(bool if_not_exists, const List<LEX_USER> *roles)
2885 : sql_cmd(if_not_exists, roles) {}
2886
2887 Sql_cmd *make_cmd(THD *thd) override;
2888};
2889
2890class PT_drop_role final : public Parse_tree_root {
2892
2893 public:
2894 explicit PT_drop_role(bool ignore_errors, const List<LEX_USER> *roles)
2895 : sql_cmd(ignore_errors, roles) {}
2896
2897 Sql_cmd *make_cmd(THD *thd) override;
2898};
2899
2902
2903 public:
2904 explicit PT_set_role(role_enum role_type,
2905 const List<LEX_USER> *opt_except_roles = nullptr)
2906 : sql_cmd(role_type, opt_except_roles) {
2907 assert(role_type == role_enum::ROLE_ALL || opt_except_roles == nullptr);
2908 }
2909 explicit PT_set_role(const List<LEX_USER> *roles) : sql_cmd(roles) {}
2910
2911 Sql_cmd *make_cmd(THD *thd) override;
2912};
2913
2914/**
2915 This class is used for representing both static and dynamic privileges on
2916 global as well as table and column level.
2917*/
2920
2923
2926 : type(type), columns(columns) {}
2927};
2928
2931
2933 : Privilege(STATIC, columns_arg), grant(grant) {}
2934};
2935
2938
2940 const Mem_root_array<LEX_CSTRING> *columns_arg)
2941 : Privilege(DYNAMIC, columns_arg), ident(ident) {}
2942};
2943
2945 private:
2947
2948 public:
2949 explicit PT_role_or_privilege(const POS &pos) : pos(pos) {}
2950 virtual LEX_USER *get_user(THD *thd);
2951 virtual Privilege *get_privilege(THD *thd);
2952};
2953
2957
2958 public:
2960 const LEX_STRING &host)
2962
2963 LEX_USER *get_user(THD *thd) override;
2964};
2965
2968
2969 public:
2972
2973 LEX_USER *get_user(THD *thd) override;
2974 Privilege *get_privilege(THD *thd) override;
2975};
2976
2980
2981 public:
2983 const Mem_root_array<LEX_CSTRING> *columns = nullptr)
2985
2986 Privilege *get_privilege(THD *thd) override;
2987};
2988
2991
2992 public:
2995
2996 Privilege *get_privilege(THD *thd) override;
2997};
2998
2999class PT_grant_roles final : public Parse_tree_root {
3003
3004 public:
3008
3009 Sql_cmd *make_cmd(THD *thd) override;
3010};
3011
3012class PT_revoke_roles final : public Parse_tree_root {
3015
3016 public:
3018 const List<LEX_USER> *users)
3019 : roles(roles), users(users) {}
3020
3021 Sql_cmd *make_cmd(THD *thd) override;
3022};
3023
3026
3027 public:
3028 PT_alter_user_default_role(bool if_exists, const List<LEX_USER> *users,
3029 const List<LEX_USER> *roles,
3030 const role_enum role_type)
3031 : sql_cmd(if_exists, users, roles, role_type) {}
3032
3033 Sql_cmd *make_cmd(THD *thd) override;
3034};
3035
3036/// Base class for Parse tree nodes of SHOW statements
3037
3039 protected:
3040 PT_show_base(const POS &pos, enum_sql_command sql_command)
3041 : m_pos(pos), m_sql_command(sql_command) {}
3042
3043 /// Textual location of a token just parsed.
3045 /// SQL command
3047};
3048
3049/// Base class for Parse tree nodes of SHOW statements with LIKE/WHERE parameter
3050
3052 protected:
3054 const LEX_STRING &wild, Item *where)
3055 : PT_show_base(pos, sql_command), m_wild(wild), m_where(where) {
3056 assert(m_wild.str == nullptr || m_where == nullptr);
3057 }
3058 /// Wild or where clause used in the statement.
3061};
3062
3063/// Base class for Parse tree nodes of SHOW statements with schema parameter.
3064
3066 protected:
3068 char *opt_db, const LEX_STRING &wild, Item *where)
3069 : PT_show_base(pos, sql_command),
3071 m_wild(wild),
3072 m_where(where) {
3073 assert(m_wild.str == nullptr || m_where == nullptr);
3074 }
3075 /// Optional schema name in FROM/IN clause.
3077 /// Wild or where clause used in the statement.
3080};
3081
3082/// Base class for Parse tree nodes of SHOW COLUMNS/SHOW INDEX statements.
3083
3085 protected:
3086 PT_show_table_base(const POS &pos, enum_sql_command sql_command,
3087 Table_ident *table_ident, const LEX_STRING &wild,
3088 Item *where)
3089 : PT_show_filter_base(pos, sql_command, wild, where),
3090 m_table_ident(table_ident) {}
3091
3092 bool make_table_base_cmd(THD *thd, bool *temporary);
3093
3094 /// Table used in the statement.
3096};
3097
3098/// Parse tree node for SHOW FUNCTION/PROCEDURE CODE statements.
3099
3101 protected:
3103 const sp_name *routine_name)
3104 : PT_show_base(pos, sql_command), m_sql_cmd(sql_command, routine_name) {}
3105
3106 Sql_cmd *make_cmd(THD *thd) override;
3107
3108 private:
3110};
3111
3112/// Parse tree node for SHOW BINLOG EVENTS statement
3113
3115 public:
3116 PT_show_binlog_events(const POS &pos, const LEX_STRING opt_log_file_name = {},
3117 PT_limit_clause *opt_limit_clause = nullptr)
3119 m_opt_log_file_name(opt_log_file_name),
3120 m_opt_limit_clause(opt_limit_clause) {}
3121
3122 Sql_cmd *make_cmd(THD *thd) override;
3123
3124 private:
3127
3129};
3130
3131/// Parse tree node for SHOW BINLOGS statement
3132
3133class PT_show_binlogs final : public PT_show_base {
3134 public:
3136
3137 Sql_cmd *make_cmd(THD *thd) override;
3138
3139 private:
3141};
3142
3143/// Parse tree node for SHOW CHARACTER SET statement
3144
3146 public:
3147 PT_show_charsets(const POS &pos, const LEX_STRING &wild, Item *where)
3149
3150 Sql_cmd *make_cmd(THD *thd) override;
3151
3152 private:
3154};
3155
3156/// Parse tree node for SHOW COLLATIONS statement
3157
3159 public:
3160 PT_show_collations(const POS &pos, const LEX_STRING &wild, Item *where)
3162
3163 Sql_cmd *make_cmd(THD *thd) override;
3164
3165 private:
3167};
3168
3169/// Base class for Parse tree nodes of SHOW COUNT(*) { WARNINGS | ERRORS }
3170/// statements.
3171
3173 public:
3174 explicit PT_show_count_base(const POS &pos)
3175 : PT_show_base{pos, SQLCOM_SELECT} {}
3176
3177 protected:
3178 Sql_cmd *make_cmd_generic(THD *thd, LEX_CSTRING diagnostic_variable_name);
3179};
3180
3181/// Parse tree node for SHOW COUNT(*) ERRORS
3182
3184 public:
3185 explicit PT_show_count_errors(const POS &pos) : PT_show_count_base(pos) {}
3186
3187 Sql_cmd *make_cmd(THD *thd) override {
3188 return make_cmd_generic(thd, LEX_CSTRING{STRING_WITH_LEN("error_count")});
3189 }
3190};
3191
3192/// Parse tree node for SHOW COUNT(*) WARNINGS
3193
3195 public:
3196 explicit PT_show_count_warnings(const POS &pos) : PT_show_count_base(pos) {}
3197
3198 Sql_cmd *make_cmd(THD *thd) override {
3199 return make_cmd_generic(thd, LEX_CSTRING{STRING_WITH_LEN("warning_count")});
3200 }
3201};
3202
3203/// Parse tree node for SHOW CREATE DATABASE statement
3204
3206 public:
3207 PT_show_create_database(const POS &pos, bool if_not_exists,
3208 const LEX_STRING &name)
3210 m_if_not_exists(if_not_exists),
3211 m_name(name) {}
3212
3213 Sql_cmd *make_cmd(THD *thd) override;
3214
3215 private:
3218
3220};
3221
3222/// Parse tree node for SHOW CREATE EVENT statement
3223
3225 public:
3226 PT_show_create_event(const POS &pos, sp_name *event_name)
3227 : PT_show_base(pos, SQLCOM_SHOW_CREATE_EVENT), m_spname(event_name) {}
3228
3229 Sql_cmd *make_cmd(THD *thd) override;
3230
3231 private:
3233
3235};
3236
3237/// Parse tree node for SHOW CREATE FUNCTION statement
3238
3240 public:
3241 PT_show_create_function(const POS &pos, sp_name *function_name)
3242 : PT_show_base(pos, SQLCOM_SHOW_CREATE_FUNC), m_spname(function_name) {}
3243
3244 Sql_cmd *make_cmd(THD *thd) override;
3245
3246 private:
3248
3250};
3251
3252/// Parse tree node for SHOW CREATE PROCEDURE statement
3253
3255 public:
3256 PT_show_create_procedure(const POS &pos, sp_name *procedure_name)
3257 : PT_show_base(pos, SQLCOM_SHOW_CREATE_PROC), m_spname(procedure_name) {}
3258
3259 Sql_cmd *make_cmd(THD *thd) override;
3260
3261 private:
3263
3265};
3266
3267/// Parse tree node for SHOW CREATE TABLE and VIEW statements
3268
3270 public:
3271 PT_show_create_table(const POS &pos, Table_ident *table_ident)
3272 : PT_show_base(pos, SQLCOM_SHOW_CREATE), m_sql_cmd(false, table_ident) {}
3273
3274 Sql_cmd *make_cmd(THD *thd) override;
3275
3276 private:
3278};
3279
3280/// Parse tree node for SHOW CREATE TRIGGER statement
3281
3283 public:
3284 PT_show_create_trigger(const POS &pos, sp_name *trigger_name)
3285 : PT_show_base(pos, SQLCOM_SHOW_CREATE_TRIGGER), m_spname(trigger_name) {}
3286
3287 Sql_cmd *make_cmd(THD *thd) override;
3288
3289 private:
3291
3293};
3294
3295/// Parse tree node for SHOW CREATE USER statement
3296
3297class PT_show_create_user final : public PT_show_base {
3298 public:
3301
3302 Sql_cmd *make_cmd(THD *thd) override;
3303
3304 private:
3306
3308};
3309
3310/// Parse tree node for SHOW CREATE VIEW statement
3311
3312class PT_show_create_view final : public PT_show_base {
3313 public:
3314 PT_show_create_view(const POS &pos, Table_ident *table_ident)
3315 : PT_show_base(pos, SQLCOM_SHOW_CREATE), m_sql_cmd(true, table_ident) {}
3316
3317 Sql_cmd *make_cmd(THD *thd) override;
3318
3319 private:
3321};
3322
3323/// Parse tree node for SHOW DATABASES statement
3324
3326 public:
3327 PT_show_databases(const POS &pos, const LEX_STRING &wild, Item *where)
3329
3330 Sql_cmd *make_cmd(THD *thd) override;
3331
3332 private:
3334};
3335
3336/// Parse tree node for SHOW ENGINE statements
3337
3339 protected:
3340 PT_show_engine_base(const POS &pos, enum enum_sql_command sql_command,
3341 const LEX_STRING opt_engine = {})
3342 : PT_show_base(pos, sql_command),
3343 m_engine(opt_engine),
3344 m_all(opt_engine.str == nullptr) {}
3345
3347 bool m_all;
3348};
3349
3350/// Parse tree node for SHOW ENGINE LOGS statement
3351
3353 public:
3354 PT_show_engine_logs(const POS &pos, LEX_STRING opt_engine = {})
3355 : PT_show_engine_base(pos, SQLCOM_SHOW_ENGINE_LOGS, opt_engine) {}
3356
3357 Sql_cmd *make_cmd(THD *thd) override;
3358
3359 private:
3361};
3362
3363/// Parse tree node for SHOW ENGINE MUTEX statement
3364
3366 public:
3367 PT_show_engine_mutex(const POS &pos, LEX_STRING opt_engine = {})
3368 : PT_show_engine_base(pos, SQLCOM_SHOW_ENGINE_MUTEX, opt_engine) {}
3369
3370 Sql_cmd *make_cmd(THD *thd) override;
3371
3372 private:
3374};
3375
3376/// Parse tree node for SHOW ENGINE STATUS statement
3377
3379 public:
3380 PT_show_engine_status(const POS &pos, LEX_STRING opt_engine = {})
3381 : PT_show_engine_base(pos, SQLCOM_SHOW_ENGINE_STATUS, opt_engine) {}
3382
3383 Sql_cmd *make_cmd(THD *thd) override;
3384
3385 private:
3387};
3388
3389/// Parse tree node for SHOW ENGINES statement
3390
3391class PT_show_engines final : public PT_show_base {
3392 public:
3395
3396 Sql_cmd *make_cmd(THD *thd) override;
3397
3398 private:
3400};
3401
3402/// Parse tree node for SHOW ERRORS statement
3403
3404class PT_show_errors final : public PT_show_base {
3405 public:
3406 PT_show_errors(const POS &pos, PT_limit_clause *opt_limit_clause = nullptr)
3408 m_opt_limit_clause(opt_limit_clause) {}
3409
3410 Sql_cmd *make_cmd(THD *thd) override;
3411
3412 private:
3414
3416};
3417
3418/// Parse tree node for SHOW EVENTS statement
3419
3421 public:
3422 PT_show_events(const POS &pos, char *opt_db, const LEX_STRING &wild,
3423 Item *where)
3425
3426 Sql_cmd *make_cmd(THD *thd) override;
3427
3428 private:
3430};
3431
3432/// Parse tree node for SHOW COLUMNS statement.
3433
3436
3437 public:
3438 PT_show_fields(const POS &pos, Show_cmd_type show_cmd_type,
3439 Table_ident *table, LEX_STRING opt_wild = {},
3440 Item *opt_where = nullptr)
3441 : PT_show_table_base(pos, SQLCOM_SHOW_FIELDS, table, opt_wild, opt_where),
3442 m_show_cmd_type(show_cmd_type) {}
3443
3444 Sql_cmd *make_cmd(THD *thd) override;
3445
3446 private:
3449};
3450
3451/// Parse tree node for SHOW FUNCTION CODE statement.
3452
3454 public:
3455 PT_show_function_code(const POS &pos, const sp_name *function_name)
3456 : PT_show_routine_code(pos, SQLCOM_SHOW_FUNC_CODE, function_name) {}
3457};
3458
3459/// Parse tree node for SHOW GRANTS statement.
3460
3461class PT_show_grants final : public PT_show_base {
3462 public:
3463 PT_show_grants(const POS &pos, const LEX_USER *opt_for_user,
3464 const List<LEX_USER> *opt_using_users)
3466 sql_cmd(opt_for_user, opt_using_users) {
3467 assert(opt_using_users == nullptr || opt_for_user != nullptr);
3468 }
3469
3470 Sql_cmd *make_cmd(THD *thd) override;
3471
3472 private:
3474};
3475
3476/// Parse tree node for SHOW INDEX statement.
3477
3478class PT_show_keys final : public PT_show_table_base {
3479 public:
3480 PT_show_keys(const POS &pos, bool extended_show, Table_ident *table,
3481 Item *where)
3483 m_extended_show(extended_show) {}
3484
3485 Sql_cmd *make_cmd(THD *thd) override;
3486
3487 private:
3489
3490 // Flag to indicate EXTENDED keyword usage in the statement.
3493};
3494
3495/// Parse tree node for SHOW MASTER STATUS statement
3496
3498 public:
3501
3502 Sql_cmd *make_cmd(THD *thd) override;
3503
3504 private:
3506};
3507
3508/// Parse tree node for SHOW OPEN TABLES statement
3509
3511 public:
3512 PT_show_open_tables(const POS &pos, char *opt_db, const LEX_STRING &wild,
3513 Item *where)
3515 }
3516
3517 Sql_cmd *make_cmd(THD *thd) override;
3518
3519 private:
3521};
3522
3523/// Parse tree node for SHOW PLUGINS statement
3524
3525class PT_show_plugins final : public PT_show_base {
3526 public:
3528
3529 Sql_cmd *make_cmd(THD *thd) override;
3530
3531 private:
3533};
3534
3535/// Parse tree node for SHOW PRIVILEGES statement
3536
3537class PT_show_privileges final : public PT_show_base {
3538 public:
3541
3542 Sql_cmd *make_cmd(THD *thd) override;
3543
3544 private:
3546};
3547
3548/// Parse tree node for SHOW FUNCTION CODE statement.
3549
3551 public:
3552 PT_show_procedure_code(const POS &pos, const sp_name *procedure_name)
3553 : PT_show_routine_code(pos, SQLCOM_SHOW_PROC_CODE, procedure_name) {}
3554};
3555
3556/// Parse tree node for SHOW PROCESSLIST statement
3557
3558class PT_show_processlist final : public PT_show_base {
3559 public:
3562
3563 Sql_cmd *make_cmd(THD *thd) override;
3564
3565 private:
3567};
3568
3569/// Parse tree node for SHOW PROFILE statement
3570
3571class PT_show_profile final : public PT_show_base {
3572 public:
3573 PT_show_profile(const POS &pos, uint opt_profile_options = 0,
3574 my_thread_id opt_query_id = 0,
3575 PT_limit_clause *opt_limit_clause = nullptr)
3577 m_opt_profile_options(opt_profile_options),
3578 m_opt_query_id(opt_query_id),
3579 m_opt_limit_clause(opt_limit_clause) {}
3580
3581 Sql_cmd *make_cmd(THD *thd) override;
3582
3583 private:
3587
3589};
3590
3591/// Parse tree node for SHOW PROFILES statement
3592
3593class PT_show_profiles final : public PT_show_base {
3594 public:
3596
3597 Sql_cmd *make_cmd(THD *thd) override;
3598
3599 private:
3601};
3602
3603/// Parse tree node for SHOW RELAYLOG EVENTS statement
3604
3606 public:
3608 const LEX_STRING opt_log_file_name = {},
3609 PT_limit_clause *opt_limit_clause = nullptr,
3610 LEX_CSTRING opt_channel_name = {})
3612 m_opt_log_file_name(opt_log_file_name),
3613 m_opt_limit_clause(opt_limit_clause),
3614 m_opt_channel_name(opt_channel_name) {}
3615
3616 Sql_cmd *make_cmd(THD *thd) override;
3617
3618 private:
3622
3624};
3625
3626/// Parse tree node for SHOW REPLICAS statement
3627
3628class PT_show_replicas final : public PT_show_base {
3629 public:
3632
3633 Sql_cmd *make_cmd(THD *thd) override;
3634
3635 private:
3637};
3638
3639/// Parse tree node for SHOW REPLICA STATUS statement
3640
3642 public:
3643 PT_show_replica_status(const POS &pos, LEX_CSTRING opt_channel_name = {})
3645 m_opt_channel_name(opt_channel_name) {}
3646
3647 Sql_cmd *make_cmd(THD *thd) override;
3648
3649 private:
3651
3653};
3654
3655/// Parse tree node for SHOW STATUS statement
3656
3658 public:
3659 PT_show_status(const POS &pos, enum_var_type var_type, const LEX_STRING &wild,
3660 Item *where)
3662 m_var_type(var_type) {
3664 }
3665
3666 Sql_cmd *make_cmd(THD *thd) override;
3667
3668 private:
3670
3672};
3673
3674/// Parse tree node for SHOW STATUS FUNCTION statement
3675
3677 public:
3678 PT_show_status_func(const POS &pos, const LEX_STRING &wild, Item *where)
3680
3681 Sql_cmd *make_cmd(THD *thd) override;
3682
3683 private:
3685};
3686
3687/// Parse tree node for SHOW STATUS PROCEDURE statement
3688
3690 public:
3691 PT_show_status_proc(const POS &pos, const LEX_STRING &wild, Item *where)
3693
3694 Sql_cmd *make_cmd(THD *thd) override;
3695
3696 private:
3698};
3699
3700/// Parse tree node for SHOW TABLE STATUS statement
3701
3703 public:
3704 PT_show_table_status(const POS &pos, char *opt_db, const LEX_STRING &wild,
3705 Item *where)
3707 where) {}
3708
3709 Sql_cmd *make_cmd(THD *thd) override;
3710
3711 private:
3713};
3714
3715/// Parse tree node for SHOW TABLES statement
3716
3718 public:
3719 PT_show_tables(const POS &pos, Show_cmd_type show_cmd_type, char *opt_db,
3720 const LEX_STRING &wild, Item *where)
3722 m_show_cmd_type(show_cmd_type) {}
3723
3724 Sql_cmd *make_cmd(THD *thd) override;
3725
3726 private:
3728
3730};
3731
3732/// Parse tree node for SHOW TRIGGERS statement
3733
3735 public:
3736 PT_show_triggers(const POS &pos, bool full, char *opt_db,
3737 const LEX_STRING &wild, Item *where)
3739 m_full(full) {}
3740
3741 Sql_cmd *make_cmd(THD *thd) override;
3742
3743 private:
3745
3747};
3748
3749/// Parse tree node for SHOW VARIABLES statement
3750
3752 public:
3754 const LEX_STRING &wild, Item *where)
3756 m_var_type(var_type) {
3758 }
3759
3760 Sql_cmd *make_cmd(THD *thd) override;
3761
3762 private:
3764
3766};
3767
3768/// Parse tree node for SHOW WARNINGS statement
3769
3770class PT_show_warnings final : public PT_show_base {
3771 public:
3772 PT_show_warnings(const POS &pos, PT_limit_clause *opt_limit_clause = nullptr)
3774 m_opt_limit_clause(opt_limit_clause) {}
3775
3776 Sql_cmd *make_cmd(THD *thd) override;
3777
3778 private:
3780
3782};
3783
3786
3787 protected:
3789 : flag(flag) {}
3790
3791 public:
3792 bool contextualize(Table_ddl_parse_context *pc) override;
3793
3794 protected:
3795 /**
3796 A routine used by the parser to decide whether we are specifying a full
3797 partitioning or if only partitions to add or to reorganize.
3798
3799 @retval true ALTER TABLE ADD/REORGANIZE PARTITION.
3800 @retval false Something else.
3801 */
3805 }
3806
3807 public:
3809};
3810
3813
3814 public:
3816 PT_field_def_base *field_def,
3817 PT_table_constraint_def *opt_column_constraint,
3818 const char *opt_place)
3819 : super(Alter_info::ALTER_ADD_COLUMN),
3820 m_column_def(field_ident, field_def, opt_column_constraint, opt_place) {
3821 }
3822
3825 }
3826
3827 private:
3829};
3830
3833
3834 public:
3837 : super(Alter_info::ALTER_ADD_COLUMN), m_columns(columns) {}
3838
3840 if (super::contextualize(pc)) return true;
3841
3842 for (auto *column : *m_columns)
3843 if (column->contextualize(pc)) return true;
3844
3845 return false;
3846 }
3847
3848 private:
3850};
3851
3854
3855 public:
3857 : super(Alter_info::ALTER_ADD_INDEX), m_constraint(constraint) {}
3858
3861 }
3862
3863 private:
3865};
3866
3869
3870 public:
3872 const LEX_STRING &new_name,
3873 PT_field_def_base *field_def,
3874 const char *opt_place)
3875 : super(Alter_info::ALTER_CHANGE_COLUMN),
3876 m_old_name(old_name),
3877 m_new_name(new_name),
3878 m_field_def(field_def),
3879 m_opt_place(opt_place) {}
3880
3882 PT_field_def_base *field_def,
3883 const char *opt_place)
3884 : PT_alter_table_change_column(name, name, field_def, opt_place) {}
3885
3886 bool contextualize(Table_ddl_parse_context *pc) override;
3887
3888 private:
3892 const char *m_opt_place;
3893};
3894
3897
3898 protected:
3900 Alter_info::Alter_info_flag alter_info_flag,
3901 const char *name)
3902 : super(alter_info_flag), m_alter_drop(drop_type, name) {}
3903
3904 public:
3906 return (super::contextualize(pc) ||
3907 pc->alter_info->drop_list.push_back(&m_alter_drop));
3908 }
3909
3910 private:
3912};
3913
3915 public:
3916 explicit PT_alter_table_drop_column(const char *name)
3917 : PT_alter_table_drop(Alter_drop::COLUMN, Alter_info::ALTER_DROP_COLUMN,
3918 name) {}
3919};
3920
3922 public:
3925 Alter_info::DROP_FOREIGN_KEY, name) {}
3926};
3927
3929 public:
3930 explicit PT_alter_table_drop_key(const char *name)
3931 : PT_alter_table_drop(Alter_drop::KEY, Alter_info::ALTER_DROP_INDEX,
3932 name) {}
3933};
3934
3936 public:
3938 : PT_alter_table_drop(Alter_drop::CHECK_CONSTRAINT,
3939 Alter_info::DROP_CHECK_CONSTRAINT, name) {}
3940};
3941
3943 public:
3945 : PT_alter_table_drop(Alter_drop::ANY_CONSTRAINT,
3946 Alter_info::DROP_ANY_CONSTRAINT, name) {}
3947};
3948
3951
3952 protected:
3955 Alter_info::Alter_info_flag alter_info_flag, const char *name,
3956 bool is_enforced)
3957 : super(alter_info_flag),
3958 m_constraint_enforcement(alter_type, name, is_enforced) {}
3959
3960 public:
3961 explicit PT_alter_table_enforce_constraint(const char *name, bool is_enforced)
3962 : super(is_enforced ? Alter_info::ENFORCE_ANY_CONSTRAINT
3963 : Alter_info::SUSPEND_ANY_CONSTRAINT),
3965 Alter_constraint_enforcement::Type::ANY_CONSTRAINT, name,
3966 is_enforced) {}
3967
3969 return (super::contextualize(pc) ||
3972 }
3973
3974 private:
3976};
3977
3980 public:
3982 bool is_enforced)
3984 Alter_constraint_enforcement::Type::CHECK_CONSTRAINT,
3985 is_enforced ? Alter_info::ENFORCE_CHECK_CONSTRAINT
3986 : Alter_info::SUSPEND_CHECK_CONSTRAINT,
3987 name, is_enforced) {}
3988};
3989
3992
3993 public:
3994 explicit PT_alter_table_enable_keys(bool enable)
3995 : super(Alter_info::ALTER_KEYS_ONOFF), m_enable(enable) {}
3996
3998 pc->alter_info->keys_onoff =
4000 return super::contextualize(pc);
4001 }
4002
4003 private:
4005};
4006
4009
4010 public:
4011 PT_alter_table_set_default(const char *col_name, Item *opt_default_expr)
4012 : super(Alter_info::ALTER_CHANGE_COLUMN_DEFAULT),
4013 m_name(col_name),
4014 m_expr(opt_default_expr) {}
4015
4016 bool contextualize(Table_ddl_parse_context *pc) override;
4017
4018 private:
4019 const char *m_name;
4021};
4022
4025
4026 public:
4027 PT_alter_table_column_visibility(const char *col_name, bool is_visible)
4028 : super(Alter_info::ALTER_COLUMN_VISIBILITY),
4029 m_alter_column(col_name, is_visible) {}
4030
4032 return (super::contextualize(pc) ||
4033 pc->alter_info->alter_list.push_back(&m_alter_column));
4034 }
4035
4036 private:
4038};
4039
4042
4043 public:
4044 PT_alter_table_index_visible(const char *name, bool visible)
4045 : super(Alter_info::ALTER_INDEX_VISIBILITY),
4046 m_alter_index_visibility(name, visible) {}
4047
4049 return (super::contextualize(pc) ||
4052 }
4053
4054 private:
4056};
4057
4060
4061 public:
4062 explicit PT_alter_table_rename(const Table_ident *ident)
4063 : super(Alter_info::ALTER_RENAME), m_ident(ident) {}
4064
4065 bool contextualize(Table_ddl_parse_context *pc) override;
4066
4067 bool is_rename_table() const override { return true; }
4068
4069 private:
4070 const Table_ident *const m_ident;
4071};
4072
4075
4076 public:
4077 PT_alter_table_rename_key(const char *from, const char *to)
4078 : super(Alter_info::ALTER_RENAME_INDEX), m_rename_key(from, to) {}
4079
4081 return super::contextualize(pc) ||
4083 }
4084
4085 private:
4087};
4088
4091
4092 public:
4093 PT_alter_table_rename_column(const char *from, const char *to)
4094 : super(Alter_info::ALTER_CHANGE_COLUMN), m_rename_column(from, to) {}
4095
4097 return super::contextualize(pc) ||
4098 pc->alter_info->alter_list.push_back(&m_rename_column);
4099 }
4100
4101 private:
4103};
4104
4107
4108 public:
4110 const CHARSET_INFO *opt_collation)
4111 : super(Alter_info::ALTER_OPTIONS),
4113 m_collation(opt_collation) {}
4114
4115 bool contextualize(Table_ddl_parse_context *pc) override;
4116
4117 private:
4120};
4121
4124
4125 public:
4126 PT_alter_table_force() : super(Alter_info::ALTER_RECREATE) {}
4127};
4128
4131
4132 public:
4134 : super(Alter_info::ALTER_ORDER), m_order(order) {}
4135
4136 bool contextualize(Table_ddl_parse_context *pc) override;
4137
4138 private:
4140};
4141
4144
4145 public:
4147 : super(Alter_info::ALTER_PARTITION), m_partition(partition) {}
4148
4149 bool contextualize(Table_ddl_parse_context *pc) override;
4150
4151 private:
4153};
4154
4157
4158 public:
4160 : super(Alter_info::ALTER_REMOVE_PARTITIONING) {}
4161};
4162
4165
4166 friend class PT_alter_table_standalone_stmt; // to access make_cmd()
4167
4168 protected:
4170 : super(alter_info_flag) {}
4171
4172 private:
4174};
4175
4176/**
4177 Node for the @SQL{ALTER TABLE ADD PARTITION} statement
4178
4179 @ingroup ptn_alter_table
4180*/
4183
4184 public:
4185 explicit PT_alter_table_add_partition(bool no_write_to_binlog)
4186 : super(Alter_info::ALTER_ADD_PARTITION),
4187 m_no_write_to_binlog(no_write_to_binlog) {}
4188
4189 bool contextualize(Table_ddl_parse_context *pc) override;
4190
4192 return new (pc->mem_root) Sql_cmd_alter_table(pc->alter_info);
4193 }
4194
4195 protected:
4197
4198 private:
4200};
4201
4202/**
4203 Node for the @SQL{ALTER TABLE ADD PARTITION (@<partition list@>)} statement
4204
4205 @ingroup ptn_alter_table
4206*/
4210
4211 public:
4213 bool no_write_to_binlog,
4215 : super(no_write_to_binlog), m_def_list(def_list) {}
4216
4217 bool contextualize(Table_ddl_parse_context *pc) override;
4218
4219 private:
4221};
4222
4223/**
4224 Node for the @SQL{ALTER TABLE ADD PARTITION PARTITIONS (@<n>@)} statement
4225
4226 @ingroup ptn_alter_table
4227*/
4231
4232 public:
4233 PT_alter_table_add_partition_num(bool no_write_to_binlog, uint num_parts)
4234 : super(no_write_to_binlog) {
4235 m_part_info.num_parts = num_parts;
4236 }
4237};
4238
4242
4243 public:
4245 : super(Alter_info::ALTER_DROP_PARTITION), m_partitions(partitions) {}
4246
4247 bool contextualize(Table_ddl_parse_context *pc) override;
4248
4250 return new (pc->mem_root) Sql_cmd_alter_table(pc->alter_info);
4251 }
4252
4253 private:
4255};
4256
4260
4261 public:
4263 Alter_info::Alter_info_flag alter_info_flag,
4264 const List<String> *opt_partition_list)
4265 : super(alter_info_flag), m_opt_partition_list(opt_partition_list) {}
4266
4268 assert(pc->alter_info->partition_names.is_empty());
4269 if (m_opt_partition_list == nullptr)
4271 else
4273 return super::contextualize(pc);
4274 }
4275
4276 private:
4278};
4279
4283
4284 public:
4285 PT_alter_table_rebuild_partition(bool no_write_to_binlog,
4286 const List<String> *opt_partition_list)
4287 : super(Alter_info::ALTER_REBUILD_PARTITION, opt_partition_list),
4288 m_no_write_to_binlog(no_write_to_binlog) {}
4289
4290 bool contextualize(Table_ddl_parse_context *pc) override;
4291
4293 return new (pc->mem_root) Sql_cmd_alter_table(pc->alter_info);
4294 }
4295
4296 private:
4298};
4299
4303
4304 public:
4305 PT_alter_table_optimize_partition(bool no_write_to_binlog,
4306 const List<String> *opt_partition_list)
4307 : super(Alter_info::ALTER_ADMIN_PARTITION, opt_partition_list),
4308 m_no_write_to_binlog(no_write_to_binlog) {}
4309
4310 bool contextualize(Table_ddl_parse_context *pc) override;
4311
4313 return new (pc->mem_root)
4315 }
4316
4317 private:
4319};
4320
4324
4325 public:
4326 PT_alter_table_analyze_partition(bool no_write_to_binlog,
4327 const List<String> *opt_partition_list)
4328 : super(Alter_info::ALTER_ADMIN_PARTITION, opt_partition_list),
4329 m_no_write_to_binlog(no_write_to_binlog) {}
4330
4331 bool contextualize(Table_ddl_parse_context *pc) override;
4333 return new (pc->mem_root)
4335 }
4336
4337 private:
4339};
4340
4344
4345 public:
4347 uint flags, uint sql_flags)
4348 : super(Alter_info::ALTER_ADMIN_PARTITION, opt_partition_list),
4349 m_flags(flags),
4350 m_sql_flags(sql_flags) {}
4351
4352 bool contextualize(Table_ddl_parse_context *pc) override;
4353
4355 return new (pc->mem_root)
4357 }
4358
4359 private:
4362};
4363
4367
4368 public:
4369 PT_alter_table_repair_partition(bool no_write_to_binlog,
4370 const List<String> *opt_partition_list,
4371 uint flags, uint sql_flags)
4372 : super(Alter_info::ALTER_ADMIN_PARTITION, opt_partition_list),
4373 m_no_write_to_binlog(no_write_to_binlog),
4374 m_flags(flags),
4375 m_sql_flags(sql_flags) {}
4376
4377 bool contextualize(Table_ddl_parse_context *pc) override;
4378
4380 return new (pc->mem_root)
4382 }
4383
4384 private:
4388};
4389
4393
4394 public:
4395 PT_alter_table_coalesce_partition(bool no_write_to_binlog, uint num_parts)
4396 : super(Alter_info::ALTER_COALESCE_PARTITION),
4397 m_no_write_to_binlog(no_write_to_binlog),
4398 m_num_parts(num_parts) {}
4399
4400 bool contextualize(Table_ddl_parse_context *pc) override;
4401
4403 return new (pc->mem_root) Sql_cmd_alter_table(pc->alter_info);
4404 }
4405
4406 private:
4409};
4410
4414
4415 public:
4417 const List<String> *opt_partition_list)
4418 : super(static_cast<Alter_info::Alter_info_flag>(
4419 Alter_info::ALTER_ADMIN_PARTITION |
4420 Alter_info::ALTER_TRUNCATE_PARTITION),
4421 opt_partition_list) {}
4422
4423 bool contextualize(Table_ddl_parse_context *pc) override;
4424
4426 return new (pc->mem_root)
4428 }
4429};
4430
4434
4435 public:
4436 explicit PT_alter_table_reorganize_partition(bool no_write_to_binlog)
4437 : super(Alter_info::ALTER_TABLE_REORG),
4438 m_no_write_to_binlog(no_write_to_binlog) {}
4439
4440 bool contextualize(Table_ddl_parse_context *pc) override;
4441
4443 return new (pc->mem_root) Sql_cmd_alter_table(pc->alter_info);
4444 }
4445
4446 private:
4449};
4450
4454
4455 public:
4457 bool no_write_to_binlog, const List<String> &partition_names,
4459 : super(Alter_info::ALTER_REORGANIZE_PARTITION),
4460 m_no_write_to_binlog(no_write_to_binlog),
4461 m_partition_names(partition_names),
4462 m_into(into) {}
4463
4464 bool contextualize(Table_ddl_parse_context *pc) override;
4465
4467 return new (pc->mem_root) Sql_cmd_alter_table(pc->alter_info);
4468 }
4469
4470 private:
4475};
4476
4480
4481 public:
4485 : super(Alter_info::ALTER_EXCHANGE_PARTITION),
4486 m_partition_name(partition_name),
4488 m_validation(validation) {}
4489
4490 bool contextualize(Table_ddl_parse_context *pc) override;
4491
4493 return new (pc->mem_root)
4495 }
4496
4497 private:
4501};
4502
4506
4507 public:
4509 : super(Alter_info::ALTER_SECONDARY_LOAD) {}
4510
4513 }
4514};
4515
4519
4520 public:
4522 : super(Alter_info::ALTER_SECONDARY_UNLOAD) {}
4523
4526 }
4527};
4528
4532
4533 public:
4535 const List<String> *opt_partition_list)
4536 : super(Alter_info::ALTER_DISCARD_TABLESPACE, opt_partition_list) {}
4537
4540 }
4541};
4542
4546
4547 public:
4549 const List<String> *opt_partition_list)
4550 : super(Alter_info::ALTER_IMPORT_TABLESPACE, opt_partition_list) {}
4551
4554 }
4555};
4556
4560
4561 public:
4563 : super(Alter_info::ALTER_DISCARD_TABLESPACE) {}
4564
4567 }
4568};
4569
4573
4574 public:
4576 : super(Alter_info::ALTER_IMPORT_TABLESPACE) {}
4577
4580 }
4581};
4582
4584 public:
4593 m_opt_actions(opt_actions),
4594 m_algo(algo),
4595 m_lock(lock),
4596 m_validation(validation) {}
4597
4598 Sql_cmd *make_cmd(THD *thd) override;
4599
4600 private:
4606
4608};
4609
4611 public:
4621 m_algo(algo),
4622 m_lock(lock),
4623 m_validation(validation) {}
4624
4625 Sql_cmd *make_cmd(THD *thd) override;
4626
4627 private:
4633
4635};
4636
4638 public:
4639 PT_repair_table_stmt(MEM_ROOT *mem_root, bool no_write_to_binlog,
4641 decltype(HA_CHECK_OPT::flags) flags,
4642 decltype(HA_CHECK_OPT::sql_flags) sql_flags)
4644 m_no_write_to_binlog(no_write_to_binlog),
4645 m_table_list(table_list),
4646 m_flags(flags),
4647 m_sql_flags(sql_flags) {}
4648
4649 Sql_cmd *make_cmd(THD *thd) override;
4650
4651 private:
4656};
4657
4659 public:
4660 PT_analyze_table_stmt(MEM_ROOT *mem_root, bool no_write_to_binlog,
4663 int num_buckets, List<String> *columns, LEX_STRING data)
4665 m_no_write_to_binlog(no_write_to_binlog),
4666 m_table_list(table_list),
4668 m_num_buckets(num_buckets),
4669 m_columns(columns),
4670 m_data{data} {}
4671
4672 Sql_cmd *make_cmd(THD *thd) override;
4673
4674 private:
4678 const int m_num_buckets;
4681};
4682
4684 public:
4687 decltype(HA_CHECK_OPT::flags) flags,
4688 decltype(HA_CHECK_OPT::sql_flags) sql_flags)
4690 m_table_list(table_list),
4691 m_flags(flags),
4692 m_sql_flags(sql_flags) {}
4693
4694 Sql_cmd *make_cmd(THD *thd) override;
4695
4696 private:
4700};
4701
4703 public:
4704 PT_optimize_table_stmt(MEM_ROOT *mem_root, bool no_write_to_binlog,
4707 m_no_write_to_binlog(no_write_to_binlog),
4708 m_table_list(table_list) {}
4709
4710 Sql_cmd *make_cmd(THD *thd) override;
4711
4714};
4715
4717 public:
4718 PT_drop_index_stmt(MEM_ROOT *mem_root, const char *index_name,
4719 Table_ident *table,
4723 m_index_name(index_name),
4724 m_table(table),
4725 m_algo(algo),
4726 m_lock(lock),
4728
4729 Sql_cmd *make_cmd(THD *thd) override;
4730
4731 private:
4732 const char *m_index_name;
4736
4738};
4739
4741 public:
4742 explicit PT_truncate_table_stmt(Table_ident *table) : m_table(table) {}
4743
4744 Sql_cmd *make_cmd(THD *thd) override;
4745
4746 private:
4748
4750};
4751
4754
4755 public:
4757 : m_table(table), m_index_hints(index_hints) {}
4758
4759 bool contextualize(Table_ddl_parse_context *pc) override;
4760
4761 private:
4764};
4765
4766class PT_adm_partition final : public Table_ddl_node {
4768
4769 public:
4770 explicit PT_adm_partition(List<String> *opt_partitions)
4771 : m_opt_partitions(opt_partitions) {}
4772
4773 bool contextualize(Table_ddl_parse_context *pc) override;
4774
4775 private:
4777};
4778
4780 public:
4783 LEX_CSTRING key_cache_name)
4785 m_tbl_index_lists(tbl_index_lists),
4786 m_key_cache_name(key_cache_name) {}
4787
4788 Sql_cmd *make_cmd(THD *thd) override;
4789
4790 private:
4793};
4794
4796 public:
4798 PT_adm_partition *partitions,
4799 List<Index_hint> *opt_key_usage_list,
4800 LEX_CSTRING key_cache_name)
4802 m_table(table),
4803 m_partitions(partitions),
4804 m_opt_key_usage_list(opt_key_usage_list),
4805 m_key_cache_name(key_cache_name) {}
4806
4807 Sql_cmd *make_cmd(THD *thd) override;
4808
4809 private:
4814};
4815
4816class PT_preload_keys final : public Table_ddl_node {
4818
4819 public:
4820 PT_preload_keys(Table_ident *table, List<Index_hint> *opt_cache_key_list,
4821 bool ignore_leaves)
4822 : m_table(table),
4823 m_opt_cache_key_list(opt_cache_key_list),
4824 m_ignore_leaves(ignore_leaves) {}
4825
4826 bool contextualize(Table_ddl_parse_context *pc) override;
4827
4828 private:
4832};
4833
4835 public:
4837 PT_adm_partition *partitions,
4838 List<Index_hint> *opt_cache_key_list,
4839 bool ignore_leaves)
4841 m_table(table),
4842 m_partitions(partitions),
4843 m_opt_cache_key_list(opt_cache_key_list),
4844 m_ignore_leaves(ignore_leaves) {}
4845
4846 Sql_cmd *make_cmd(THD *thd) override;
4847
4848 private:
4853};
4854
4856 public:
4860
4861 Sql_cmd *make_cmd(THD *thd) override;
4862
4863 private:
4865};
4866
4869
4870 public:
4873 bool contextualize(Parse_context *pc) override;
4874 Json_table_column *get_column() override { return m_column.get(); }
4875
4876 private:
4878 const char *m_name;
4879};
4880
4883
4884 public:
4889
4890 bool contextualize(Parse_context *pc) override;
4891
4892 Json_table_column *get_column() override { return m_column.get(); }
4893
4894 private:
4896 const char *m_name;
4899};
4900
4902 : public PT_json_table_column {
4904
4905 public:
4908 : m_path(path), m_nested_columns(nested_cols) {}
4909
4910 bool contextualize(Parse_context *pc) override;
4911
4912 Json_table_column *get_column() override { return m_column; }
4913
4914 private:
4918};
4919
4921 THD *const thd;
4923
4925};
4926
4929
4930template <typename Option_type, Option_type Tablespace_options::*Option>
4932 : public PT_alter_tablespace_option_base /* purecov: inspected */
4933{
4935
4936 public:
4937 explicit PT_alter_tablespace_option(Option_type value) : m_value(value) {}
4938
4940 pc->*Option = m_value;
4941 return super::contextualize(pc);
4942 }
4943
4944 private:
4945 const Option_type m_value;
4946};
4947
4952
4956
4960
4964
4969
4974
4979
4983
4985 : public PT_alter_tablespace_option_base /* purecov: inspected */
4986{
4989
4990 public:
4992 : m_nodegroup_id(nodegroup_id) {}
4993
4995
4996 private:
4998};
4999
5001 : public PT_alter_tablespace_option_base /* purecov: inspected */
5002{
5005
5006 public:
5008 : m_comment(comment) {}
5009
5011 if (super::contextualize(pc)) return true; /* purecov: inspected */ // OOM
5012
5013 if (pc->ts_comment.str) {
5014 my_error(ER_FILEGROUP_OPTION_ONLY_ONCE, MYF(0), "COMMENT");
5015 return true;
5016 }
5017 pc->ts_comment = m_comment;
5018 return false;
5019 }
5020
5021 private:
5023};
5024
5026 : public PT_alter_tablespace_option_base /* purecov: inspected */
5027{
5030
5031 public:
5033 : m_engine_name(engine_name) {}
5034
5036 if (super::contextualize(pc)) return true; /* purecov: inspected */ // OOM
5037
5038 if (pc->engine_name.str) {
5039 my_error(ER_FILEGROUP_OPTION_ONLY_ONCE, MYF(0), "STORAGE ENGINE");
5040 return true;
5041 }
5043 return false;
5044 }
5045
5046 private:
5048};
5049
5051 : public PT_alter_tablespace_option_base /* purecov: inspected */
5052{
5055
5056 public:
5058 option_type file_block_size)
5059 : m_file_block_size(file_block_size) {}
5060
5062 if (super::contextualize(pc)) return true; /* purecov: inspected */ // OOM
5063
5064 if (pc->file_block_size != 0) {
5065 my_error(ER_FILEGROUP_OPTION_ONLY_ONCE, MYF(0), "FILE_BLOCK_SIZE");
5066 return true;
5067 }
5069 return false;
5070 }
5071
5072 private:
5074};
5075
5076/**
5077 Parse tree node for CREATE RESOURCE GROUP statement.
5078*/
5079
5082 const bool has_priority;
5083
5084 public:
5088 const Value_or_default<int> &opt_priority, bool enabled)
5089 : sql_cmd(name, type, cpu_list,
5090 opt_priority.is_default ? 0 : opt_priority.value, enabled),
5091 has_priority(!opt_priority.is_default) {}
5092
5093 Sql_cmd *make_cmd(THD *thd) override;
5094};
5095
5096/**
5097 Parse tree node for ALTER RESOURCE GROUP statement.
5098*/
5099
5102
5103 public:
5106 const Value_or_default<int> &opt_priority,
5107 const Value_or_default<bool> &enable, bool force)
5108 : sql_cmd(name, cpu_list,
5109 opt_priority.is_default ? 0 : opt_priority.value,
5110 enable.is_default ? false : enable.value, force,
5111 !enable.is_default) {}
5112
5113 Sql_cmd *make_cmd(THD *thd) override;
5114};
5115
5116/**
5117 Parse tree node for DROP RESOURCE GROUP statement.
5118*/
5119
5122
5123 public:
5124 PT_drop_resource_group(const LEX_CSTRING &resource_group_name, bool force)
5125 : sql_cmd(resource_group_name, force) {}
5126
5127 Sql_cmd *make_cmd(THD *thd) override;
5128};
5129
5130/**
5131 Parse tree node for SET RESOURCE GROUP statement.
5132*/
5133
5136
5137 public:
5139 Mem_root_array<ulonglong> *thread_id_list)
5140 : sql_cmd(name, thread_id_list) {}
5141
5142 Sql_cmd *make_cmd(THD *thd) override;
5143};
5144
5146 public:
5148 : m_cmd(thread_id) {}
5149
5150 Sql_cmd *make_cmd(THD *thd) override;
5151
5152 private:
5154};
5155
5156class PT_explain final : public Parse_tree_root {
5157 public:
5158 PT_explain(Explain_format_type format, bool is_analyze,
5159 bool is_explicit_format, Parse_tree_root *explainable_stmt)
5160 : m_format(format),
5161 m_analyze(is_analyze),
5162 m_explicit_format(is_explicit_format),
5163 m_explainable_stmt(explainable_stmt) {}
5164
5165 Sql_cmd *make_cmd(THD *thd) override;
5166
5167 private:
5169 const bool m_analyze;
5172};
5173
5174class PT_load_table final : public Parse_tree_root {
5175 public:
5177 bool is_local_file, enum_source_type, const LEX_STRING filename,
5178 ulong, bool, On_duplicate on_duplicate, Table_ident *table,
5179 List<String> *opt_partitions, const CHARSET_INFO *opt_charset,
5180 String *opt_xml_rows_identified_by,
5181 const Field_separators &opt_field_separators,
5182 const Line_separators &opt_line_separators,
5183 ulong opt_ignore_lines, PT_item_list *opt_fields_or_vars,
5184 PT_item_list *opt_set_fields, PT_item_list *opt_set_exprs,
5185 List<String> *opt_set_expr_strings, bool)
5186 : m_cmd(filetype, is_local_file, filename, on_duplicate, table,
5187 opt_partitions, opt_charset, opt_xml_rows_identified_by,
5188 opt_field_separators, opt_line_separators, opt_ignore_lines,
5189 opt_fields_or_vars ? &opt_fields_or_vars->value : nullptr,
5190 opt_set_fields ? &opt_set_fields->value : nullptr,
5191 opt_set_exprs ? &opt_set_exprs->value : nullptr,
5192 opt_set_expr_strings),
5193 m_lock_type(lock_type) {
5194 assert((opt_set_fields == nullptr) ^ (opt_set_exprs != nullptr));
5195 assert(opt_set_fields == nullptr ||
5196 opt_set_fields->value.size() == opt_set_exprs->value.size());
5197 }
5198
5199 Sql_cmd *make_cmd(THD *thd) override;
5200
5201 private:
5203
5205};
5206
5207/**
5208 Top-level node for the SHUTDOWN statement
5209
5210 @ingroup ptn_stmt
5211*/
5212
5214 public:
5215 Sql_cmd *make_cmd(THD *thd) override;
5216
5217 private:
5219};
5220
5222 private:
5225
5226 public:
5229 Sql_cmd *make_cmd(THD *thd) override;
5230};
5231
5233 LEX_CSTRING);
5234
5237 LEX_CSTRING);
5238
5241 LEX_CSTRING);
5242
5245 LEX_CSTRING);
5246
5247/**
5248 Helper function to imitate \c dynamic_cast for \c PT_set_operation hierarchy.
5249
5250 Template parameter @p To is the destination type (@c PT_union, \c PT_except or
5251 \c PT_intersect). For \c PT_intersect we return nullptr if ALL due to impl.
5252 restriction: we cannot merge INTERSECT ALL.
5253
5254 @param from source item
5255 @param is_distinct true if distinct
5256 @return typecast item to the type To or NULL
5257*/
5258template <class To, PT_set_operation::Setop_type Tag>
5259To *setop_cast(PT_query_expression_body *from, bool is_distinct) {
5260 return (from->type() == Tag &&
5261 down_cast<PT_set_operation *>(from)->is_distinct() == is_distinct &&
5262 (Tag != PT_query_expression_body::INTERSECT || is_distinct))
5263 ? static_cast<To *>(from)
5264 : nullptr;
5265}
5266
5267/**
5268 Flatten set operators at parse time
5269
5270 This function flattens UNION ALL/DISTINCT, EXCEPT All/DISTINCT
5271 and INTERSECT DISTINCT (not ALL due to implementation restrictions) operators
5272 at parse time if applicable, otherwise it creates
5273 new \c PT_<setop> nodes respectively of the two input operands.
5274
5275 Template parameter @p Class is @c PT_union or @c PT_intersect
5276 Template parameter @p Tag is @c PT_query_specification::UNION or
5277 @c ::INTERSECT
5278
5279 @param mem_root MEM_ROOT
5280 @param left left argument of the operator
5281 @param is_distinct true if DISTINCT
5282 @param right right argument of the operator
5283 @param is_right_in_parentheses
5284 true if right hand size is parenthesized
5285 @return resulting parse tree Item
5286*/
5287template <class Class, PT_set_operation::Setop_type Tag>
5290 bool is_distinct,
5292 bool is_right_in_parentheses) {
5293 if (left == nullptr || right == nullptr) return nullptr;
5294 Class *left_setop = setop_cast<Class, Tag>(left, is_distinct);
5295 Class *right_setop [[maybe_unused]] =
5296 setop_cast<Class, Tag>(right, is_distinct);
5297 assert(right_setop == nullptr); // doesn't happen
5298 if (left_setop != nullptr) {
5299 // X1 op X2 op Y ==> op (X1, X2, Y)
5300 left_setop->m_list.push_back(right);
5301 left_setop->set_is_rhs_in_parentheses(is_right_in_parentheses);
5302 return left_setop;
5303 } else {
5304 /* X op Y */
5305 return new (mem_root)
5306 Class(left, is_distinct, right, is_right_in_parentheses);
5307 }
5308}
5309
5310#endif /* PARSE_TREE_NODES_INCLUDED */
bool check_stack_overrun(const THD *thd, long margin, unsigned char *buf)
Check stack for a overrun.
Definition: check_stack.cc:110
Class representing SET DEFAULT, DROP DEFAULT, RENAME COLUMN, SET VISIBLE and SET INVISIBLE clause in ...
Definition: sql_alter.h:81
Class representing ALTER CHECK and ALTER CONSTRAINT clauses in ALTER TABLE statement.
Definition: sql_alter.h:183
Type
Definition: sql_alter.h:185
Class representing DROP COLUMN, DROP KEY, DROP FOREIGN KEY, DROP CHECK CONSTRAINT and DROP CONSTRAINT...
Definition: sql_alter.h:64
drop_type
Definition: sql_alter.h:66
An ALTER INDEX operation that changes the visibility of an index.
Definition: sql_alter.h:147
Data describing the table being created by CREATE TABLE or altered by ALTER TABLE.
Definition: sql_alter.h:204
enum_alter_table_algorithm
The different values of the ALGORITHM clause.
Definition: sql_alter.h:354
enum_alter_table_lock
The different values of the LOCK clause.
Definition: sql_alter.h:372
Mem_root_array< const Alter_drop * > drop_list
Columns, keys and constraints to be dropped.
Definition: sql_alter.h:404
Mem_root_array< const Alter_constraint_enforcement * > alter_constraint_enforcement_list
List of check constraints whose enforcement state is changed.
Definition: sql_alter.h:418
List< String > partition_names
Definition: sql_alter.h:432
enum_with_validation
Status of validation clause in ALTER TABLE statement.
Definition: sql_alter.h:390
@ ENABLE
Definition: sql_alter.h:348
@ DISABLE
Definition: sql_alter.h:348
Mem_root_array< const Alter_column * > alter_list
Definition: sql_alter.h:406
enum_enable_or_disable keys_onoff
Definition: sql_alter.h:430
ulonglong flags
Definition: sql_alter.h:428
Mem_root_array< const Alter_rename_key * > alter_rename_key_list
Definition: sql_alter.h:411
Alter_info_flag
Definition: sql_alter.h:215
@ ALTER_ADD_PARTITION
Set for ADD PARTITION.
Definition: sql_alter.h:254
@ ALTER_REORGANIZE_PARTITION
Set for REORGANIZE PARTITION ... INTO.
Definition: sql_alter.h:263
@ ALTER_ALL_PARTITION
Set for partitioning operations specifying ALL keyword.
Definition: sql_alter.h:279
@ ALTER_OPTIONS
Set for table_options.
Definition: sql_alter.h:240
Mem_root_array< const Alter_index_visibility * > alter_index_visibility_list
Indexes whose visibilities are to be changed.
Definition: sql_alter.h:414
Class which instances represent RENAME INDEX clauses in ALTER TABLE statement.
Definition: sql_alter.h:169
After parsing, a Common Table Expression is accessed through a Table_ref.
Definition: table.h:4329
Definition: key.h:43
Definition: item.h:6673
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:853
Column description for JSON_TABLE function.
Definition: table_function.h:236
Definition: key_spec.h:67
bool is_algorithm_explicit
A flag which indicates that index algorithm was explicitly specified by user.
Definition: key_spec.h:74
enum ha_key_alg algorithm
Definition: key_spec.h:69
Definition: key.h:113
Definition: sql_list.h:434
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:61
size_t size() const
Definition: mem_root_array.h:407
void init_empty_const()
Initialize empty array that we aren't going to grow.
Definition: mem_root_array.h:84
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:426
Definition: parse_tree_nodes.h:4766
List< String > * m_opt_partitions
Definition: parse_tree_nodes.h:4776
PT_adm_partition(List< String > *opt_partitions)
Definition: parse_tree_nodes.h:4770
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:3283
Table_ddl_node super
Definition: parse_tree_nodes.h:4767
Top-level node for the ALTER INSTANCE statement.
Definition: parse_tree_nodes.h:2033
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4314
PT_alter_instance(enum alter_instance_action_enum alter_instance_action, const LEX_CSTRING &channel)
Definition: parse_tree_nodes.h:2037
Sql_cmd_alter_instance sql_cmd
Definition: parse_tree_nodes.h:2034
Parse tree node for ALTER RESOURCE GROUP statement.
Definition: parse_tree_nodes.h:5100
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4593
resourcegroups::Sql_cmd_alter_resource_group sql_cmd
Definition: parse_tree_nodes.h:5101
PT_alter_resource_group(const LEX_CSTRING &name, const Mem_root_array< resourcegroups::Range > *cpu_list, const Value_or_default< int > &opt_priority, const Value_or_default< bool > &enable, bool force)
Definition: parse_tree_nodes.h:5104
Definition: parse_tree_nodes.h:3784
PT_alter_table_action(Alter_info::Alter_info_flag flag)
Definition: parse_tree_nodes.h:3788
PT_ddl_table_option super
Definition: parse_tree_nodes.h:3785
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4412
bool is_add_or_reorganize_partition() const
A routine used by the parser to decide whether we are specifying a full partitioning or if only parti...
Definition: parse_tree_nodes.h:3802
const Alter_info::Alter_info_flag flag
Definition: parse_tree_nodes.h:3808
Definition: parse_tree_nodes.h:3811
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:3823
PT_alter_table_action super
Definition: parse_tree_nodes.h:3812
PT_alter_table_add_column(const LEX_STRING &field_ident, PT_field_def_base *field_def, PT_table_constraint_def *opt_column_constraint, const char *opt_place)
Definition: parse_tree_nodes.h:3815
PT_column_def m_column_def
Definition: parse_tree_nodes.h:3828
Definition: parse_tree_nodes.h:3831
const Mem_root_array< PT_table_element * > * m_columns
Definition: parse_tree_nodes.h:3849
PT_alter_table_add_columns(const Mem_root_array< PT_table_element * > *columns)
Definition: parse_tree_nodes.h:3835
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:3839
PT_alter_table_action super
Definition: parse_tree_nodes.h:3832
Definition: parse_tree_nodes.h:3852
PT_alter_table_action super
Definition: parse_tree_nodes.h:3853
PT_alter_table_add_constraint(PT_table_constraint_def *constraint)
Definition: parse_tree_nodes.h:3856
PT_table_constraint_def * m_constraint
Definition: parse_tree_nodes.h:3864
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:3859
Node for the ALTER TABLE ADD PARTITION (<partition list>) statement.
Definition: parse_tree_nodes.h:4208
PT_alter_table_add_partition super
Definition: parse_tree_nodes.h:4209
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:3023
const Mem_root_array< PT_part_definition * > * m_def_list
Definition: parse_tree_nodes.h:4220
PT_alter_table_add_partition_def_list(bool no_write_to_binlog, const Mem_root_array< PT_part_definition * > *def_list)
Definition: parse_tree_nodes.h:4212
Node for the ALTER TABLE ADD PARTITION PARTITIONS (<n>@) statement.
Definition: parse_tree_nodes.h:4229
PT_alter_table_add_partition_num(bool no_write_to_binlog, uint num_parts)
Definition: parse_tree_nodes.h:4233
PT_alter_table_add_partition super
Definition: parse_tree_nodes.h:4230
Node for the ALTER TABLE ADD PARTITION statement.
Definition: parse_tree_nodes.h:4181
const bool m_no_write_to_binlog
Definition: parse_tree_nodes.h:4199
partition_info m_part_info
Definition: parse_tree_nodes.h:4196
PT_alter_table_add_partition(bool no_write_to_binlog)
Definition: parse_tree_nodes.h:4185
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) final
Definition: parse_tree_nodes.h:4191
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4464
PT_alter_table_standalone_action super
Definition: parse_tree_nodes.h:4182
Definition: parse_tree_nodes.h:4322
PT_alter_table_analyze_partition(bool no_write_to_binlog, const List< String > *opt_partition_list)
Definition: parse_tree_nodes.h:4326
PT_alter_table_partition_list_or_all super
Definition: parse_tree_nodes.h:4323
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4332
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4496
const bool m_no_write_to_binlog
Definition: parse_tree_nodes.h:4338
Definition: parse_tree_nodes.h:3867
const LEX_STRING m_old_name
Definition: parse_tree_nodes.h:3889
const LEX_STRING m_new_name
Definition: parse_tree_nodes.h:3890
const char * m_opt_place
Definition: parse_tree_nodes.h:3892
PT_field_def_base * m_field_def
Definition: parse_tree_nodes.h:3891
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:2937
PT_alter_table_change_column(const LEX_STRING &old_name, const LEX_STRING &new_name, PT_field_def_base *field_def, const char *opt_place)
Definition: parse_tree_nodes.h:3871
PT_alter_table_change_column(const LEX_STRING &name, PT_field_def_base *field_def, const char *opt_place)
Definition: parse_tree_nodes.h:3881
PT_alter_table_action super
Definition: parse_tree_nodes.h:3868
Definition: parse_tree_nodes.h:4342
uint m_sql_flags
Definition: parse_tree_nodes.h:4361
PT_alter_table_check_partition(const List< String > *opt_partition_list, uint flags, uint sql_flags)
Definition: parse_tree_nodes.h:4346
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4354
PT_alter_table_partition_list_or_all super
Definition: parse_tree_nodes.h:4343
uint m_flags
Definition: parse_tree_nodes.h:4360
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4503
Definition: parse_tree_nodes.h:4391
const bool m_no_write_to_binlog
Definition: parse_tree_nodes.h:4407
PT_alter_table_coalesce_partition(bool no_write_to_binlog, uint num_parts)
Definition: parse_tree_nodes.h:4395
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4526
PT_alter_table_standalone_action super
Definition: parse_tree_nodes.h:4392
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4402
const uint m_num_parts
Definition: parse_tree_nodes.h:4408
Definition: parse_tree_nodes.h:4023
Alter_column m_alter_column
Definition: parse_tree_nodes.h:4037
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4031
PT_alter_table_column_visibility(const char *col_name, bool is_visible)
Definition: parse_tree_nodes.h:4027
PT_alter_table_action super
Definition: parse_tree_nodes.h:4024
Definition: parse_tree_nodes.h:4105
PT_alter_table_action super
Definition: parse_tree_nodes.h:4106
const CHARSET_INFO *const m_charset
Definition: parse_tree_nodes.h:4118
const CHARSET_INFO *const m_collation
Definition: parse_tree_nodes.h:4119
PT_alter_table_convert_to_charset(const CHARSET_INFO *charset, const CHARSET_INFO *opt_collation)
Definition: parse_tree_nodes.h:4109
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:2991
Definition: parse_tree_nodes.h:4530
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4538
PT_alter_table_discard_partition_tablespace(const List< String > *opt_partition_list)
Definition: parse_tree_nodes.h:4534
PT_alter_table_partition_list_or_all super
Definition: parse_tree_nodes.h:4531
Definition: parse_tree_nodes.h:4558
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4565
PT_alter_table_standalone_action super
Definition: parse_tree_nodes.h:4559
PT_alter_table_discard_tablespace()
Definition: parse_tree_nodes.h:4562
Definition: parse_tree_nodes.h:3935
PT_alter_table_drop_check_constraint(const char *name)
Definition: parse_tree_nodes.h:3937
Definition: parse_tree_nodes.h:3914
PT_alter_table_drop_column(const char *name)
Definition: parse_tree_nodes.h:3916
Definition: parse_tree_nodes.h:3942
PT_alter_table_drop_constraint(const char *name)
Definition: parse_tree_nodes.h:3944
Definition: parse_tree_nodes.h:3921
PT_alter_table_drop_foreign_key(const char *name)
Definition: parse_tree_nodes.h:3923
Definition: parse_tree_nodes.h:3928
PT_alter_table_drop_key(const char *name)
Definition: parse_tree_nodes.h:3930
Definition: parse_tree_nodes.h:4240
const List< String > m_partitions
Definition: parse_tree_nodes.h:4254
PT_alter_table_drop_partition(const List< String > &partitions)
Definition: parse_tree_nodes.h:4244
PT_alter_table_standalone_action super
Definition: parse_tree_nodes.h:4241
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) final
Definition: parse_tree_nodes.h:4249
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4474
Definition: parse_tree_nodes.h:3895
PT_alter_table_action super
Definition: parse_tree_nodes.h:3896
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:3905
PT_alter_table_drop(Alter_drop::drop_type drop_type, Alter_info::Alter_info_flag alter_info_flag, const char *name)
Definition: parse_tree_nodes.h:3899
Alter_drop m_alter_drop
Definition: parse_tree_nodes.h:3911
Definition: parse_tree_nodes.h:3990
PT_alter_table_enable_keys(bool enable)
Definition: parse_tree_nodes.h:3994
PT_alter_table_action super
Definition: parse_tree_nodes.h:3991
bool m_enable
Definition: parse_tree_nodes.h:4004
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:3997
Definition: parse_tree_nodes.h:3979
PT_alter_table_enforce_check_constraint(const char *name, bool is_enforced)
Definition: parse_tree_nodes.h:3981
Definition: parse_tree_nodes.h:3949
PT_alter_table_action super
Definition: parse_tree_nodes.h:3950
Alter_constraint_enforcement m_constraint_enforcement
Definition: parse_tree_nodes.h:3975
PT_alter_table_enforce_constraint(Alter_constraint_enforcement::Type alter_type, Alter_info::Alter_info_flag alter_info_flag, const char *name, bool is_enforced)
Definition: parse_tree_nodes.h:3953
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:3968
PT_alter_table_enforce_constraint(const char *name, bool is_enforced)
Definition: parse_tree_nodes.h:3961
Definition: parse_tree_nodes.h:4478
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:3058
Table_ident * m_table_name
Definition: parse_tree_nodes.h:4499
const Alter_info::enum_with_validation m_validation
Definition: parse_tree_nodes.h:4500
PT_alter_table_exchange_partition(const LEX_STRING &partition_name, Table_ident *table_name, Alter_info::enum_with_validation validation)
Definition: parse_tree_nodes.h:4482
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4492
PT_alter_table_standalone_action super
Definition: parse_tree_nodes.h:4479
const LEX_STRING m_partition_name
Definition: parse_tree_nodes.h:4498
Definition: parse_tree_nodes.h:4122
PT_alter_table_action super
Definition: parse_tree_nodes.h:4123
PT_alter_table_force()
Definition: parse_tree_nodes.h:4126
Definition: parse_tree_nodes.h:4544
PT_alter_table_import_partition_tablespace(const List< String > *opt_partition_list)
Definition: parse_tree_nodes.h:4548
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4552
PT_alter_table_partition_list_or_all super
Definition: parse_tree_nodes.h:4545
Definition: parse_tree_nodes.h:4571
PT_alter_table_standalone_action super
Definition: parse_tree_nodes.h:4572
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4578
PT_alter_table_import_tablespace()
Definition: parse_tree_nodes.h:4575
Definition: parse_tree_nodes.h:4040
PT_alter_table_action super
Definition: parse_tree_nodes.h:4041
PT_alter_table_index_visible(const char *name, bool visible)
Definition: parse_tree_nodes.h:4044
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4048
Alter_index_visibility m_alter_index_visibility
Definition: parse_tree_nodes.h:4055
Definition: parse_tree_nodes.h:4301
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4312
PT_alter_table_partition_list_or_all super
Definition: parse_tree_nodes.h:4302
const bool m_no_write_to_binlog
Definition: parse_tree_nodes.h:4318
PT_alter_table_optimize_partition(bool no_write_to_binlog, const List< String > *opt_partition_list)
Definition: parse_tree_nodes.h:4305
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4489
Definition: parse_tree_nodes.h:4129
PT_alter_table_order(PT_order_list *order)
Definition: parse_tree_nodes.h:4133
PT_alter_table_action super
Definition: parse_tree_nodes.h:4130
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4452
PT_order_list *const m_order
Definition: parse_tree_nodes.h:4139
Definition: parse_tree_nodes.h:4142
PT_alter_table_action super
Definition: parse_tree_nodes.h:4143
PT_alter_table_partition_by(PT_partition *partition)
Definition: parse_tree_nodes.h:4146
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4458
PT_partition *const m_partition
Definition: parse_tree_nodes.h:4152
Definition: parse_tree_nodes.h:4258
PT_alter_table_partition_list_or_all(Alter_info::Alter_info_flag alter_info_flag, const List< String > *opt_partition_list)
Definition: parse_tree_nodes.h:4262
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4267
const List< String > * m_opt_partition_list
Definition: parse_tree_nodes.h:4277
PT_alter_table_standalone_action super
Definition: parse_tree_nodes.h:4259
Definition: parse_tree_nodes.h:4281
PT_alter_table_rebuild_partition(bool no_write_to_binlog, const List< String > *opt_partition_list)
Definition: parse_tree_nodes.h:4285
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4292
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4482
PT_alter_table_partition_list_or_all super
Definition: parse_tree_nodes.h:4282
const bool m_no_write_to_binlog
Definition: parse_tree_nodes.h:4297
Definition: parse_tree_nodes.h:4155
PT_alter_table_action super
Definition: parse_tree_nodes.h:4156
PT_alter_table_remove_partitioning()
Definition: parse_tree_nodes.h:4159
Definition: parse_tree_nodes.h:4089
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4096
PT_alter_table_action super
Definition: parse_tree_nodes.h:4090
PT_alter_table_rename_column(const char *from, const char *to)
Definition: parse_tree_nodes.h:4093
Alter_column m_rename_column
Definition: parse_tree_nodes.h:4102
Definition: parse_tree_nodes.h:4073
PT_alter_table_rename_key(const char *from, const char *to)
Definition: parse_tree_nodes.h:4077
Alter_rename_key m_rename_key
Definition: parse_tree_nodes.h:4086
PT_alter_table_action super
Definition: parse_tree_nodes.h:4074
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4080
Definition: parse_tree_nodes.h:4058
const Table_ident *const m_ident
Definition: parse_tree_nodes.h:4070
PT_alter_table_rename(const Table_ident *ident)
Definition: parse_tree_nodes.h:4062
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:2965
bool is_rename_table() const override
Definition: parse_tree_nodes.h:4067
PT_alter_table_action super
Definition: parse_tree_nodes.h:4059
Definition: parse_tree_nodes.h:4452
const Mem_root_array< PT_part_definition * > * m_into
Definition: parse_tree_nodes.h:4473
partition_info m_partition_info
Definition: parse_tree_nodes.h:4474
const List< String > m_partition_names
Definition: parse_tree_nodes.h:4472
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:3037
PT_alter_table_standalone_action super
Definition: parse_tree_nodes.h:4453
const bool m_no_write_to_binlog
Definition: parse_tree_nodes.h:4471
PT_alter_table_reorganize_partition_into(bool no_write_to_binlog, const List< String > &partition_names, const Mem_root_array< PT_part_definition * > *into)
Definition: parse_tree_nodes.h:4456
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4466
Definition: parse_tree_nodes.h:4432
partition_info m_partition_info
Definition: parse_tree_nodes.h:4448
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4442
const bool m_no_write_to_binlog
Definition: parse_tree_nodes.h:4447
PT_alter_table_reorganize_partition(bool no_write_to_binlog)
Definition: parse_tree_nodes.h:4436
PT_alter_table_standalone_action super
Definition: parse_tree_nodes.h:4433
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4541
Definition: parse_tree_nodes.h:4365
uint m_flags
Definition: parse_tree_nodes.h:4386
PT_alter_table_partition_list_or_all super
Definition: parse_tree_nodes.h:4366
const bool m_no_write_to_binlog
Definition: parse_tree_nodes.h:4385
uint m_sql_flags
Definition: parse_tree_nodes.h:4387
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4513
PT_alter_table_repair_partition(bool no_write_to_binlog, const List< String > *opt_partition_list, uint flags, uint sql_flags)
Definition: parse_tree_nodes.h:4369
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4379
Definition: parse_tree_nodes.h:4504
PT_alter_table_secondary_load()
Definition: parse_tree_nodes.h:4508
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4511
Definition: parse_tree_nodes.h:4517
PT_alter_table_secondary_unload()
Definition: parse_tree_nodes.h:4521
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4524
Definition: parse_tree_nodes.h:4007
PT_alter_table_set_default(const char *col_name, Item *opt_default_expr)
Definition: parse_tree_nodes.h:4011
Item * m_expr
Definition: parse_tree_nodes.h:4020
const char * m_name
Definition: parse_tree_nodes.h:4019
PT_alter_table_action super
Definition: parse_tree_nodes.h:4008
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4418
Definition: parse_tree_nodes.h:4163
PT_alter_table_action super
Definition: parse_tree_nodes.h:4164
PT_alter_table_standalone_action(Alter_info::Alter_info_flag alter_info_flag)
Definition: parse_tree_nodes.h:4169
virtual Sql_cmd * make_cmd(Table_ddl_parse_context *pc)=0
Definition: parse_tree_nodes.h:4610
PT_alter_table_standalone_stmt(MEM_ROOT *mem_root, Table_ident *table_name, PT_alter_table_standalone_action *action, Alter_info::enum_alter_table_algorithm algo, Alter_info::enum_alter_table_lock lock, Alter_info::enum_with_validation validation)
Definition: parse_tree_nodes.h:4612
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3153
const Alter_info::enum_alter_table_algorithm m_algo
Definition: parse_tree_nodes.h:4630
const Alter_info::enum_alter_table_lock m_lock
Definition: parse_tree_nodes.h:4631
Table_ident *const m_table_name
Definition: parse_tree_nodes.h:4628
PT_alter_table_standalone_action *const m_action
Definition: parse_tree_nodes.h:4629
const Alter_info::enum_with_validation m_validation
Definition: parse_tree_nodes.h:4632
HA_CREATE_INFO m_create_info
Definition: parse_tree_nodes.h:4634
Definition: parse_tree_nodes.h:4583
const Alter_info::enum_alter_table_lock m_lock
Definition: parse_tree_nodes.h:4604
PT_alter_table_stmt(MEM_ROOT *mem_root, Table_ident *table_name, Mem_root_array< PT_ddl_table_option * > *opt_actions, Alter_info::enum_alter_table_algorithm algo, Alter_info::enum_alter_table_lock lock, Alter_info::enum_with_validation validation)
Definition: parse_tree_nodes.h:4585
const Alter_info::enum_with_validation m_validation
Definition: parse_tree_nodes.h:4605
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3115
Mem_root_array< PT_ddl_table_option * > *const m_opt_actions
Definition: parse_tree_nodes.h:4602
HA_CREATE_INFO m_create_info
Definition: parse_tree_nodes.h:4607
const Alter_info::enum_alter_table_algorithm m_algo
Definition: parse_tree_nodes.h:4603
Table_ident *const m_table_name
Definition: parse_tree_nodes.h:4601
Definition: parse_tree_nodes.h:4412
PT_alter_table_partition_list_or_all super
Definition: parse_tree_nodes.h:4413
Sql_cmd * make_cmd(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:4425
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4535
PT_alter_table_truncate_partition(const List< String > *opt_partition_list)
Definition: parse_tree_nodes.h:4416
Definition: parse_tree_nodes.h:5002
PT_alter_tablespace_option_comment(option_type comment)
Definition: parse_tree_nodes.h:5007
const option_type m_comment
Definition: parse_tree_nodes.h:5022
bool contextualize(Alter_tablespace_parse_context *pc) override
Definition: parse_tree_nodes.h:5010
decltype(Tablespace_options::ts_comment) option_type
Definition: parse_tree_nodes.h:5004
PT_alter_tablespace_option_base super
Definition: parse_tree_nodes.h:5003
Definition: parse_tree_nodes.h:5027
PT_alter_tablespace_option_base super
Definition: parse_tree_nodes.h:5028
PT_alter_tablespace_option_engine(option_type engine_name)
Definition: parse_tree_nodes.h:5032
bool contextualize(Alter_tablespace_parse_context *pc) override
Definition: parse_tree_nodes.h:5035
decltype(Tablespace_options::engine_name) option_type
Definition: parse_tree_nodes.h:5029
const option_type m_engine_name
Definition: parse_tree_nodes.h:5047
Definition: parse_tree_nodes.h:5052
const option_type m_file_block_size
Definition: parse_tree_nodes.h:5073
decltype(Tablespace_options::file_block_size) option_type
Definition: parse_tree_nodes.h:5054
PT_alter_tablespace_option_base super
Definition: parse_tree_nodes.h:5053
PT_alter_tablespace_option_file_block_size(option_type file_block_size)
Definition: parse_tree_nodes.h:5057
bool contextualize(Alter_tablespace_parse_context *pc) override
Definition: parse_tree_nodes.h:5061
Definition: parse_tree_nodes.h:4986
const option_type m_nodegroup_id
Definition: parse_tree_nodes.h:4997
PT_alter_tablespace_option_base super
Definition: parse_tree_nodes.h:4987
decltype(Tablespace_options::nodegroup_id) option_type
Definition: parse_tree_nodes.h:4988
PT_alter_tablespace_option_nodegroup(option_type nodegroup_id)
Definition: parse_tree_nodes.h:4991
bool contextualize(Alter_tablespace_parse_context *pc) override
Definition: parse_tree_nodes.cc:4562
Definition: parse_tree_nodes.h:4933
const Option_type m_value
Definition: parse_tree_nodes.h:4945
bool contextualize(Alter_tablespace_parse_context *pc) override
Definition: parse_tree_nodes.h:4939
PT_alter_tablespace_option(Option_type value)
Definition: parse_tree_nodes.h:4937
PT_alter_tablespace_option_base super
Definition: parse_tree_nodes.h:4934
Definition: parse_tree_nodes.h:3024
Sql_cmd_alter_user_default_role sql_cmd
Definition: parse_tree_nodes.h:3025
PT_alter_user_default_role(bool if_exists, const List< LEX_USER > *users, const List< LEX_USER > *roles, const role_enum role_type)
Definition: parse_tree_nodes.h:3028
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4402
Definition: parse_tree_nodes.h:4658
const Sql_cmd_analyze_table::Histogram_command m_command
Definition: parse_tree_nodes.h:4677
const int m_num_buckets
Definition: parse_tree_nodes.h:4678
const LEX_STRING m_data
Definition: parse_tree_nodes.h:4680
const Mem_root_array< Table_ident * > * m_table_list
Definition: parse_tree_nodes.h:4676
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3186
List< String > * m_columns
Definition: parse_tree_nodes.h:4679
const bool m_no_write_to_binlog
Definition: parse_tree_nodes.h:4675
PT_analyze_table_stmt(MEM_ROOT *mem_root, bool no_write_to_binlog, Mem_root_array< Table_ident * > *table_list, Sql_cmd_analyze_table::Histogram_command command, int num_buckets, List< String > *columns, LEX_STRING data)
Definition: parse_tree_nodes.h:4660
Definition: parse_tree_nodes.h:4752
List< Index_hint > * m_index_hints
Definition: parse_tree_nodes.h:4763
PT_assign_to_keycache(Table_ident *table, List< Index_hint > *index_hints)
Definition: parse_tree_nodes.h:4756
Table_ddl_node super
Definition: parse_tree_nodes.h:4753
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:3274
Table_ident * m_table
Definition: parse_tree_nodes.h:4762
A template-free base class for index options that we can predeclare in sql_lex.h.
Definition: parse_tree_nodes.h:2049
A template for options that set HA_CREATE_INFO::table_options and also records if the option was expl...
Definition: parse_tree_nodes.h:2570
PT_create_table_option super
Definition: parse_tree_nodes.h:2571
PT_bool_create_table_option(bool value)
Definition: parse_tree_nodes.h:2576
const bool value
Definition: parse_tree_nodes.h:2573
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:2578
Parse tree node for a single of a window extent's borders, cf.
Definition: parse_tree_nodes.h:1246
PT_border(enum_window_border_type type, Item *value)
For bounded INTERVAL 2 DAYS, 'value' is 2, int_type is DAYS.
Definition: parse_tree_nodes.h:1261
Item * build_addop(Item_cache *order_expr, bool prec, bool asc, const Window *window)
Definition: parse_tree_nodes.cc:3359
Item * m_value
only relevant iff m_border_type == WBT_VALUE_*
Definition: parse_tree_nodes.h:1248
Item ** border_ptr()
Need such low-level access so that fix_fields updates the right pointer.
Definition: parse_tree_nodes.h:1274
interval_type m_int_type
For unbounded border.
Definition: parse_tree_nodes.h:1252
PT_border(enum_window_border_type type, Item *value, interval_type int_type)
Definition: parse_tree_nodes.h:1265
enum_window_border_type m_border_type
Definition: parse_tree_nodes.h:1250
PT_border(enum_window_border_type type)
For bounded non-temporal border, e.g. 2 PRECEDING: 'value' is 2.
Definition: parse_tree_nodes.h:1255
const bool m_date_time
Definition: parse_tree_nodes.h:1251
Item * border() const
Definition: parse_tree_nodes.h:1272
Parse tree node for one or both of a window extent's borders, cf.
Definition: parse_tree_nodes.h:1291
PT_border * m_borders[2]
Definition: parse_tree_nodes.h:1292
PT_borders(PT_border *start, PT_border *end)
Constructor.
Definition: parse_tree_nodes.h:1303
Definition: parse_tree_nodes.h:4795
PT_cache_index_partitions_stmt(MEM_ROOT *mem_root, Table_ident *table, PT_adm_partition *partitions, List< Index_hint > *opt_key_usage_list, LEX_CSTRING key_cache_name)
Definition: parse_tree_nodes.h:4797
List< Index_hint > * m_opt_key_usage_list
Definition: parse_tree_nodes.h:4812
Table_ident * m_table
Definition: parse_tree_nodes.h:4810
PT_adm_partition * m_partitions
Definition: parse_tree_nodes.h:4811
const LEX_CSTRING m_key_cache_name
Definition: parse_tree_nodes.h:4813
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3308
Definition: parse_tree_nodes.h:4779
const LEX_CSTRING m_key_cache_name
Definition: parse_tree_nodes.h:4792
Mem_root_array< PT_assign_to_keycache * > * m_tbl_index_lists
Definition: parse_tree_nodes.h:4791
PT_cache_index_stmt(MEM_ROOT *mem_root, Mem_root_array< PT_assign_to_keycache * > *tbl_index_lists, LEX_CSTRING key_cache_name)
Definition: parse_tree_nodes.h:4781
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3294
Definition: parse_tree_nodes.h:1934
PT_item_list * opt_expr_list
Definition: parse_tree_nodes.h:1936
sp_name * proc_name
Definition: parse_tree_nodes.h:1935
PT_call(sp_name *proc_name_arg, PT_item_list *opt_expr_list_arg)
Definition: parse_tree_nodes.h:1939
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:1145
Definition: parse_tree_nodes.h:2766
void set_column_name(const LEX_STRING &name)
Definition: parse_tree_nodes.h:2776
PT_table_constraint_def super
Definition: parse_tree_nodes.h:2767
Sql_check_constraint_spec cc_spec
Definition: parse_tree_nodes.h:2768
PT_check_constraint(LEX_STRING &name, Item *expr, bool is_enforced)
Definition: parse_tree_nodes.h:2771
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4319
Definition: parse_tree_nodes.h:4683
Mem_root_array< Table_ident * > * m_table_list
Definition: parse_tree_nodes.h:4697
decltype(HA_CHECK_OPT::flags) m_flags
Definition: parse_tree_nodes.h:4698
PT_check_table_stmt(MEM_ROOT *mem_root, Mem_root_array< Table_ident * > *table_list, decltype(HA_CHECK_OPT::flags) flags, decltype(HA_CHECK_OPT::sql_flags) sql_flags)
Definition: parse_tree_nodes.h:4685
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3207
decltype(HA_CHECK_OPT::sql_flags) m_sql_flags
Definition: parse_tree_nodes.h:4699
Base class for all column attributes in CREATE/ALTER TABLE
Definition: parse_tree_column_attrs.h:85
Definition: parse_tree_nodes.h:2781
PT_table_element super
Definition: parse_tree_nodes.h:2782
PT_column_def(const LEX_STRING &field_ident, PT_field_def_base *field_def, PT_table_constraint_def *opt_column_constraint, const char *opt_place=nullptr)
Definition: parse_tree_nodes.h:2792
const LEX_STRING field_ident
Definition: parse_tree_nodes.h:2784
PT_field_def_base * field_def
Definition: parse_tree_nodes.h:2785
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:2181
const char * opt_place
Definition: parse_tree_nodes.h:2789
PT_table_constraint_def * opt_column_constraint
Definition: parse_tree_nodes.h:2787
Represents an element of the WITH list: WITH [...], [...] SELECT ..., ^ or ^ i.e.
Definition: parse_tree_nodes.h:252
const LEX_STRING m_subq_text
Raw text of query expression (including parentheses)
Definition: parse_tree_nodes.h:288
PT_common_table_expr(const LEX_STRING &name, const LEX_STRING &subq_text, uint subq_text_offset, PT_subquery *sn, const Create_col_name_list *column_names, MEM_ROOT *mem_root)
Definition: parse_tree_nodes.cc:1940
const Create_col_name_list m_column_names
List of explicitly specified column names; if empty, no list.
Definition: parse_tree_nodes.h:297
Parse_tree_node super
Definition: parse_tree_nodes.h:253
bool is(const Common_table_expr *other) const
Definition: parse_tree_nodes.h:280
PT_subquery *const m_subq_node
Parsed version of subq_text.
Definition: parse_tree_nodes.h:295
uint m_subq_text_offset
Offset in bytes of m_subq_text in original statement which had the WITH clause.
Definition: parse_tree_nodes.h:293
void print(const THD *thd, String *str, enum_query_type query_type)
Definition: parse_tree_nodes.cc:1983
const LEX_STRING & name() const
The name after AS.
Definition: parse_tree_nodes.h:263
Common_table_expr m_postparse
A Table_ref representing a CTE needs access to the WITH list element it derives from.
Definition: parse_tree_nodes.h:307
LEX_STRING m_name
Definition: parse_tree_nodes.h:286
Definition: parse_tree_nodes.h:2227
PT_create_index_stmt(MEM_ROOT *mem_root, keytype type_par, const LEX_STRING &name_arg, PT_base_index_option *type, Table_ident *table_ident, List< PT_key_part_specification > *cols, Index_options options, Alter_info::enum_alter_table_algorithm algo, Alter_info::enum_alter_table_lock lock)
Definition: parse_tree_nodes.h:2229
keytype m_keytype
Definition: parse_tree_nodes.h:2249
Index_options m_options
Definition: parse_tree_nodes.h:2254
Table_ident * m_table_ident
Definition: parse_tree_nodes.h:2252
LEX_STRING m_name
Definition: parse_tree_nodes.h:2250
const Alter_info::enum_alter_table_algorithm m_algo
Definition: parse_tree_nodes.h:2255
List< PT_key_part_specification > * m_columns
Definition: parse_tree_nodes.h:2253
const Alter_info::enum_alter_table_lock m_lock
Definition: parse_tree_nodes.h:2256
PT_base_index_option * m_type
Definition: parse_tree_nodes.h:2251
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:1775
Parse tree node for CREATE RESOURCE GROUP statement.
Definition: parse_tree_nodes.h:5080
resourcegroups::Sql_cmd_create_resource_group sql_cmd
Definition: parse_tree_nodes.h:5081
const bool has_priority
Definition: parse_tree_nodes.h:5082
PT_create_resource_group(const LEX_CSTRING &name, const resourcegroups::Type type, const Mem_root_array< resourcegroups::Range > *cpu_list, const Value_or_default< int > &opt_priority, bool enabled)
Definition: parse_tree_nodes.h:5085
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4574
Definition: parse_tree_nodes.h:2880
PT_create_role(bool if_not_exists, const List< LEX_USER > *roles)
Definition: parse_tree_nodes.h:2884
Sql_cmd_create_role sql_cmd
Definition: parse_tree_nodes.h:2881
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4331
Top-level node for the CREATE [OR REPLACE] SPATIAL REFERENCE SYSTEM statement.
Definition: parse_tree_nodes.h:1962
bool contains_control_char(char *str, size_t length)
Check if a UTF-8 string contains control characters.
Definition: parse_tree_nodes.h:1988
const Sql_cmd_srs_attributes m_attributes
All attributes except SRID.
Definition: parse_tree_nodes.h:1975
unsigned long long m_srid
SRID of the SRS to create.
Definition: parse_tree_nodes.h:1973
bool m_or_replace
Whether OR REPLACE is specified.
Definition: parse_tree_nodes.h:1966
PT_create_srs(unsigned long long srid, const Sql_cmd_srs_attributes &attributes, bool or_replace, bool if_not_exists)
Definition: parse_tree_nodes.h:1996
Sql_cmd_create_srs sql_cmd
The SQL command object.
Definition: parse_tree_nodes.h:1964
bool m_if_not_exists
Whether IF NOT EXISTS is specified.
Definition: parse_tree_nodes.h:1968
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4162
Node for the STATS_AUTO_RECALC [=] <0|1|DEFAULT>) table option.
Definition: parse_tree_nodes.h:2664
const Ternary_option value
Definition: parse_tree_nodes.h:2667
PT_create_table_option super
Definition: parse_tree_nodes.h:2665
PT_create_stats_auto_recalc_option(Ternary_option value)
Definition: parse_tree_nodes.h:2678
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:2039
Node for the STATS_SAMPLE_PAGES [=] <integer>|DEFAULT table option.
Definition: parse_tree_nodes.h:2688
PT_create_stats_stable_pages(value_t value)
Constructor for implicit number of pages.
Definition: parse_tree_nodes.h:2700
const value_t value
Definition: parse_tree_nodes.h:2692
PT_create_table_option super
Definition: parse_tree_nodes.h:2689
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:2060
decltype(HA_CREATE_INFO::stats_sample_pages) value_t
Definition: parse_tree_nodes.h:2690
PT_create_stats_stable_pages()
Constructor for the DEFAULT number of pages.
Definition: parse_tree_nodes.h:2706
Definition: parse_tree_nodes.h:2723
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:2731
PT_create_storage_option(ha_storage_media value)
Definition: parse_tree_nodes.h:2729
const ha_storage_media value
Definition: parse_tree_nodes.h:2726
PT_create_table_option super
Definition: parse_tree_nodes.h:2724
Definition: parse_tree_nodes.h:2738
PT_create_table_default_charset(const CHARSET_INFO *value)
Definition: parse_tree_nodes.h:2744
const CHARSET_INFO * value
Definition: parse_tree_nodes.h:2741
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:2118
PT_create_table_option super
Definition: parse_tree_nodes.h:2739
Definition: parse_tree_nodes.h:2752
const CHARSET_INFO * value
Definition: parse_tree_nodes.h:2755
PT_create_table_option super
Definition: parse_tree_nodes.h:2753
PT_create_table_default_collation(const CHARSET_INFO *value)
Definition: parse_tree_nodes.h:2758
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:2139
Node for the ENGINE [=] <identifier>|<string> table option.
Definition: parse_tree_nodes.h:2623
const LEX_CSTRING engine
Definition: parse_tree_nodes.h:2626
PT_create_table_engine_option(const LEX_CSTRING &engine)
Definition: parse_tree_nodes.h:2632
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:2021
PT_create_table_option super
Definition: parse_tree_nodes.h:2624
Base class for CREATE TABLE option nodes.
Definition: parse_tree_nodes.h:2344
PT_ddl_table_option super
Definition: parse_tree_nodes.h:2345
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:2350
~PT_create_table_option() override=0
Node for the SECONDARY_ENGINE [=] <identifier>|<string>|NULL table option.
Definition: parse_tree_nodes.h:2644
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:2030
const LEX_CSTRING m_secondary_engine
Definition: parse_tree_nodes.h:2656
PT_create_table_secondary_engine_option(const LEX_CSTRING &secondary_engine)
Definition: parse_tree_nodes.h:2649
Top-level node for the CREATE TABLE statement.
Definition: parse_tree_nodes.h:2808
On_duplicate on_duplicate
Definition: parse_tree_nodes.h:2815
PT_partition * opt_partitioning
Definition: parse_tree_nodes.h:2814
const Mem_root_array< PT_table_element * > * opt_table_element_list
Definition: parse_tree_nodes.h:2812
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2211
bool is_temporary
Definition: parse_tree_nodes.h:2809
PT_create_table_stmt(MEM_ROOT *mem_root, bool is_temporary, bool only_if_not_exists, Table_ident *table_name, const Mem_root_array< PT_table_element * > *opt_table_element_list, const Mem_root_array< PT_create_table_option * > *opt_create_table_options, PT_partition *opt_partitioning, On_duplicate on_duplicate, PT_query_expression_body *opt_query_expression)
Definition: parse_tree_nodes.h:2839
const Mem_root_array< PT_create_table_option * > * opt_create_table_options
Definition: parse_tree_nodes.h:2813
PT_query_expression_body * opt_query_expression
Definition: parse_tree_nodes.h:2816
bool only_if_not_exists
Definition: parse_tree_nodes.h:2810
Table_ident * table_name
Definition: parse_tree_nodes.h:2811
Table_ident * opt_like_clause
Definition: parse_tree_nodes.h:2817
HA_CREATE_INFO m_create_info
Definition: parse_tree_nodes.h:2819
PT_create_table_stmt(MEM_ROOT *mem_root, bool is_temporary, bool only_if_not_exists, Table_ident *table_name, Table_ident *opt_like_clause)
Definition: parse_tree_nodes.h:2863
Definition: parse_tree_nodes.h:2711
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:2068
const Mem_root_array< Table_ident * > * tables
Definition: parse_tree_nodes.h:2714
PT_create_table_option super
Definition: parse_tree_nodes.h:2712
PT_create_union_option(const Mem_root_array< Table_ident * > *tables)
Definition: parse_tree_nodes.h:2717
Definition: parse_tree_nodes.h:572
PT_cross_join(PT_table_reference *tab1_node_arg, const POS &join_pos_arg, PT_joined_table_type Type_arg, PT_table_reference *tab2_node_arg)
Definition: parse_tree_nodes.h:576
PT_joined_table super
Definition: parse_tree_nodes.h:573
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3681
Common base class for CREATE TABLE and ALTER TABLE option nodes.
Definition: parse_tree_nodes.h:2330
~PT_ddl_table_option() override=0
virtual bool is_rename_table() const
Definition: parse_tree_nodes.h:2334
Top-level node for the DELETE statement.
Definition: parse_tree_nodes.h:1748
bool add_table(Parse_context *pc, Table_ident *table)
Definition: parse_tree_nodes.cc:836
bool is_multitable() const
Definition: parse_tree_nodes.h:1804
Item * opt_where_clause
Definition: parse_tree_nodes.h:1758
PT_delete(PT_with_clause *with_clause_arg, PT_hint_list *opt_hints_arg, int opt_delete_options_arg, const Mem_root_array_YY< Table_ident * > &table_list_arg, const Mem_root_array_YY< PT_table_reference * > &join_table_list_arg, Item *opt_where_clause_arg)
Definition: parse_tree_nodes.h:1784
Mem_root_array_YY< Table_ident * > table_list
Definition: parse_tree_nodes.h:1755
SQL_I_List< Table_ref > delete_tables
Definition: parse_tree_nodes.h:1761
Item * opt_delete_limit_clause
Definition: parse_tree_nodes.h:1760
Mem_root_array_YY< PT_table_reference * > join_table_list
Definition: parse_tree_nodes.h:1757
Table_ident * table_ident
Definition: parse_tree_nodes.h:1753
PT_with_clause * m_with_clause
Definition: parse_tree_nodes.h:1750
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:851
const int opt_delete_options
Definition: parse_tree_nodes.h:1752
PT_delete(PT_with_clause *with_clause_arg, PT_hint_list *opt_hints_arg, int opt_delete_options_arg, Table_ident *table_ident_arg, const LEX_CSTRING &opt_table_alias_arg, List< String > *opt_use_partition_arg, Item *opt_where_clause_arg, PT_order *opt_order_clause_arg, Item *opt_delete_limit_clause_arg)
Definition: parse_tree_nodes.h:1765
PT_order * opt_order_clause
Definition: parse_tree_nodes.h:1759
PT_hint_list * opt_hints
Definition: parse_tree_nodes.h:1751
const char *const opt_table_alias
Definition: parse_tree_nodes.h:1754
List< String > * opt_use_partition
Definition: parse_tree_nodes.h:1756
Definition: parse_tree_nodes.h:485
PT_derived_table(bool lateral, PT_subquery *subquery, const LEX_CSTRING &table_alias, Create_col_name_list *column_names)
Definition: parse_tree_nodes.cc:1313
PT_subquery * m_subquery
Definition: parse_tree_nodes.h:497
const char *const m_table_alias
Definition: parse_tree_nodes.h:498
PT_table_reference super
Definition: parse_tree_nodes.h:486
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:1323
bool m_lateral
Definition: parse_tree_nodes.h:496
const Create_col_name_list column_names
List of explicitly specified column names; if empty, no list.
Definition: parse_tree_nodes.h:500
Definition: parse_tree_nodes.h:4716
Alter_drop m_alter_drop
Definition: parse_tree_nodes.h:4737
Alter_info::enum_alter_table_algorithm m_algo
Definition: parse_tree_nodes.h:4734
const char * m_index_name
Definition: parse_tree_nodes.h:4732
Alter_info::enum_alter_table_lock m_lock
Definition: parse_tree_nodes.h:4735
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3243
PT_drop_index_stmt(MEM_ROOT *mem_root, const char *index_name, Table_ident *table, Alter_info::enum_alter_table_algorithm algo, Alter_info::enum_alter_table_lock lock)
Definition: parse_tree_nodes.h:4718
Table_ident * m_table
Definition: parse_tree_nodes.h:4733
Parse tree node for DROP RESOURCE GROUP statement.
Definition: parse_tree_nodes.h:5120
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4607
resourcegroups::Sql_cmd_drop_resource_group sql_cmd
Definition: parse_tree_nodes.h:5121
PT_drop_resource_group(const LEX_CSTRING &resource_group_name, bool force)
Definition: parse_tree_nodes.h:5124
Definition: parse_tree_nodes.h:2890
Sql_cmd_drop_role sql_cmd
Definition: parse_tree_nodes.h:2891
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4336
PT_drop_role(bool ignore_errors, const List< LEX_USER > *roles)
Definition: parse_tree_nodes.h:2894
Top-level node for the DROP SPATIAL REFERENCE SYSTEM statement.
Definition: parse_tree_nodes.h:2012
Sql_cmd_drop_srs sql_cmd
The SQL command object.
Definition: parse_tree_nodes.h:2014
PT_drop_srs(unsigned long long srid, bool if_exists)
Definition: parse_tree_nodes.h:2022
unsigned long long m_srid
SRID of the SRS to drop.
Definition: parse_tree_nodes.h:2019
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4298
Definition: parse_tree_nodes.h:2989
Privilege * get_privilege(THD *thd) override
Definition: parse_tree_nodes.cc:4372
LEX_STRING ident
Definition: parse_tree_nodes.h:2990
PT_dynamic_privilege(const POS &pos, const LEX_STRING &ident)
Definition: parse_tree_nodes.h:2993
Definition: parse_tree_nodes.h:1685
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:1715
PT_set_operation(PT_query_expression_body *lhs, bool is_distinct, PT_query_expression_body *rhs, bool is_rhs_in_parentheses=false)
Definition: parse_tree_nodes.h:1634
enum Setop_type type() const override
Definition: parse_tree_nodes.h:1691
Parse tree node for a window frame's exclusions, cf.
Definition: parse_tree_nodes.h:1313
enum_window_frame_exclusion m_exclusion
Definition: parse_tree_nodes.h:1314
PT_exclusion(enum_window_frame_exclusion e)
Definition: parse_tree_nodes.h:1317
Definition: parse_tree_nodes.h:5145
PT_explain_for_connection(my_thread_id thread_id)
Definition: parse_tree_nodes.h:5147
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3497
Sql_cmd_explain_other_thread m_cmd
Definition: parse_tree_nodes.h:5153
Definition: parse_tree_nodes.h:5156
const bool m_analyze
Definition: parse_tree_nodes.h:5169
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3512
const bool m_explicit_format
Definition: parse_tree_nodes.h:5170
Parse_tree_root *const m_explainable_stmt
Definition: parse_tree_nodes.h:5171
PT_explain(Explain_format_type format, bool is_analyze, bool is_explicit_format, Parse_tree_root *explainable_stmt)
Definition: parse_tree_nodes.h:5158
const Explain_format_type m_format
Definition: parse_tree_nodes.h:5168
Definition: parse_tree_nodes.h:1455
PT_explicit_table(const Query_options &options_arg, PT_item_list *item_list_arg, const Mem_root_array_YY< PT_table_reference * > &from_clause_arg)
Definition: parse_tree_nodes.h:1459
Base class for both generated and regular column definitions.
Definition: parse_tree_column_attrs.h:876
Definition: parse_tree_nodes.h:2292
List< Key_part_spec > * m_ref_list
Definition: parse_tree_nodes.h:2319
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:1812
fk_option m_fk_delete_opt
Definition: parse_tree_nodes.h:2322
PT_foreign_key_definition(const LEX_STRING &constraint_name, const LEX_STRING &key_name, List< PT_key_part_specification > *columns, Table_ident *referenced_table, List< Key_part_spec > *ref_list, fk_match_opt fk_match_option, fk_option fk_update_opt, fk_option fk_delete_opt)
Definition: parse_tree_nodes.h:2296
Table_ident * m_referenced_table
Definition: parse_tree_nodes.h:2318
fk_match_opt m_fk_match_option
Definition: parse_tree_nodes.h:2320
fk_option m_fk_update_opt
Definition: parse_tree_nodes.h:2321
const LEX_STRING m_key_name
Definition: parse_tree_nodes.h:2316
const LEX_STRING m_constraint_name
Definition: parse_tree_nodes.h:2315
PT_table_constraint_def super
Definition: parse_tree_nodes.h:2293
List< PT_key_part_specification > * m_columns
Definition: parse_tree_nodes.h:2317
Parse tree node for a window's frame, cf.
Definition: parse_tree_nodes.h:1325
PT_border * m_to
Definition: parse_tree_nodes.h:1330
bool m_originally_absent
If true, this is an artificial frame, not specified by the user.
Definition: parse_tree_nodes.h:1335
enum_window_frame_unit m_query_expression
Definition: parse_tree_nodes.h:1327
PT_border * m_from
Definition: parse_tree_nodes.h:1329
PT_frame(enum_window_frame_unit unit, PT_borders *from_to, PT_exclusion *exclusion)
Definition: parse_tree_nodes.h:1337
PT_exclusion * m_exclusion
Definition: parse_tree_nodes.h:1332
Definition: parse_tree_nodes.h:237
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.h:241
PT_order_list super
Definition: parse_tree_nodes.h:238
Definition: parse_tree_nodes.h:2999
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4376
const List< LEX_USER > * users
Definition: parse_tree_nodes.h:3001
const bool with_admin_option
Definition: parse_tree_nodes.h:3002
const Mem_root_array< PT_role_or_privilege * > * roles
Definition: parse_tree_nodes.h:3000
PT_grant_roles(const Mem_root_array< PT_role_or_privilege * > *roles, const List< LEX_USER > *users, bool with_admin_option)
Definition: parse_tree_nodes.h:3005
Definition: parse_tree_nodes.h:619
olap_type olap
Definition: parse_tree_nodes.h:623
Parse_tree_node super
Definition: parse_tree_nodes.h:620
PT_order_list * group_list
Definition: parse_tree_nodes.h:622
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:251
PT_group(PT_order_list *group_list_arg, olap_type olap_arg)
Definition: parse_tree_nodes.h:626
Definition: parse_tree_hints.h:98
A template for options that set a single <alter option> value in thd->lex->key_create_info.
Definition: parse_tree_nodes.h:2172
PT_index_option(Option_type option_value)
Definition: parse_tree_nodes.h:2175
Option_type m_option_value
Definition: parse_tree_nodes.h:2183
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:2177
Definition: parse_tree_nodes.h:2268
Index_options m_options
Definition: parse_tree_nodes.h:2289
PT_table_constraint_def super
Definition: parse_tree_nodes.h:2269
keytype m_keytype
Definition: parse_tree_nodes.h:2285
PT_base_index_option * m_type
Definition: parse_tree_nodes.h:2287
List< PT_key_part_specification > * m_columns
Definition: parse_tree_nodes.h:2288
PT_inline_index_definition(keytype type_par, const LEX_STRING &name_arg, PT_base_index_option *type, List< PT_key_part_specification > *cols, Index_options options)
Definition: parse_tree_nodes.h:2272
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:1800
const LEX_STRING m_name
Definition: parse_tree_nodes.h:2286
Definition: parse_tree_nodes.h:1850
virtual mem_root_deque< List_item * > & get_many_values()
Definition: parse_tree_nodes.h:1865
bool push_back(mem_root_deque< Item * > *x)
Definition: parse_tree_nodes.h:1860
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:970
PT_insert_values_list(MEM_ROOT *mem_root)
Definition: parse_tree_nodes.h:1856
Parse_tree_node super
Definition: parse_tree_nodes.h:1851
mem_root_deque< List_item * > many_values
Definition: parse_tree_nodes.h:1853
Top-level node for the INSERT statement.
Definition: parse_tree_nodes.h:1876
PT_item_list *const opt_on_duplicate_column_list
Definition: parse_tree_nodes.h:1888
PT_item_list *const column_list
Definition: parse_tree_nodes.h:1883
PT_item_list *const opt_on_duplicate_value_list
Definition: parse_tree_nodes.h:1889
PT_hint_list * opt_hints
Definition: parse_tree_nodes.h:1878
bool has_query_block() const
Definition: parse_tree_nodes.h:1931
const bool is_replace
Definition: parse_tree_nodes.h:1877
PT_query_expression_body * insert_query_expression
Definition: parse_tree_nodes.h:1885
PT_insert(bool is_replace_arg, PT_hint_list *opt_hints_arg, thr_lock_type lock_option_arg, bool ignore_arg, Table_ident *table_ident_arg, List< String > *opt_use_partition_arg, PT_item_list *column_list_arg, PT_insert_values_list *row_value_list_arg, PT_query_expression_body *insert_query_expression_arg, const LEX_CSTRING &opt_values_table_alias_arg, Create_col_name_list *opt_values_column_list_arg, PT_item_list *opt_on_duplicate_column_list_arg, PT_item_list *opt_on_duplicate_value_list_arg)
Definition: parse_tree_nodes.h:1892
Create_col_name_list *const opt_values_column_list
Definition: parse_tree_nodes.h:1887
Table_ident *const table_ident
Definition: parse_tree_nodes.h:1881
PT_insert_values_list * row_value_list
Definition: parse_tree_nodes.h:1884
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:981
const char *const opt_values_table_alias
Definition: parse_tree_nodes.h:1886
List< String > *const opt_use_partition
Definition: parse_tree_nodes.h:1882
const bool ignore
Definition: parse_tree_nodes.h:1880
const thr_lock_type lock_option
Definition: parse_tree_nodes.h:1879
Definition: parse_tree_nodes.h:5221
PT_install_component(THD *thd, const Mem_root_array_YY< LEX_STRING > urns, List< PT_install_component_set_element > *set_elements)
Definition: parse_tree_nodes.cc:4816
List< PT_install_component_set_element > * m_set_elements
Definition: parse_tree_nodes.h:5224
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4837
Mem_root_array_YY< LEX_STRING > m_urns
Definition: parse_tree_nodes.h:5223
Definition: parse_tree_nodes.h:1694
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:1720
PT_set_operation(PT_query_expression_body *lhs, bool is_distinct, PT_query_expression_body *rhs, bool is_rhs_in_parentheses=false)
Definition: parse_tree_nodes.h:1634
enum Setop_type type() const override
Definition: parse_tree_nodes.h:1700
Definition: parse_tree_nodes.h:1181
sql_exchange m_exchange
Definition: parse_tree_nodes.h:1191
PT_into_destination super
Definition: parse_tree_nodes.h:1182
PT_into_destination_dumpfile(const POS &pos, const LEX_STRING &file_name_arg)
Definition: parse_tree_nodes.h:1185
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3967
Definition: parse_tree_nodes.h:1161
PT_into_destination_outfile(const POS &pos, const LEX_STRING &file_name_arg, const CHARSET_INFO *charset_arg, const Field_separators &field_term_arg, const Line_separators &line_term_arg)
Definition: parse_tree_nodes.h:1165
PT_into_destination super
Definition: parse_tree_nodes.h:1162
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3958
sql_exchange m_exchange
Definition: parse_tree_nodes.h:1178
Definition: parse_tree_nodes.h:1150
PT_into_destination(const POS &pos)
Definition: parse_tree_nodes.h:1155
Parse_tree_node super
Definition: parse_tree_nodes.h:1151
POS m_pos
Definition: parse_tree_nodes.h:1152
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3943
Definition: parse_tree_nodes.h:1044
PT_transaction_characteristic super
Definition: parse_tree_nodes.h:1045
PT_isolation_level(enum_tx_isolation level)
Definition: parse_tree_nodes.h:1048
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:105
mem_root_deque< Item * > value
Definition: parse_tree_helpers.h:111
uint elements() const
Definition: parse_tree_helpers.h:122
Definition: parse_tree_nodes.h:584
Item * on
Definition: parse_tree_nodes.h:586
PT_joined_table super
Definition: parse_tree_nodes.h:585
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3687
PT_joined_table_on(PT_table_reference *tab1_node_arg, const POS &join_pos_arg, PT_joined_table_type type, PT_table_reference *tab2_node_arg, Item *on_arg)
Definition: parse_tree_nodes.h:589
Definition: parse_tree_nodes.h:597
PT_joined_table_using(PT_table_reference *tab1_node_arg, const POS &join_pos_arg, PT_joined_table_type type, PT_table_reference *tab2_node_arg, List< String > *using_fields_arg)
Definition: parse_tree_nodes.h:602
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3714
PT_joined_table_using(PT_table_reference *tab1_node_arg, const POS &join_pos_arg, PT_joined_table_type type, PT_table_reference *tab2_node_arg)
A PT_joined_table_using without a list of columns denotes a natural join.
Definition: parse_tree_nodes.h:610
List< String > * using_fields
Definition: parse_tree_nodes.h:599
PT_joined_table super
Definition: parse_tree_nodes.h:598
Definition: parse_tree_nodes.h:516
Table_ref * m_left_table_ref
Definition: parse_tree_nodes.h:525
PT_table_reference super
Definition: parse_tree_nodes.h:517
PT_joined_table(PT_table_reference *tab1_node_arg, const POS &join_pos_arg, PT_joined_table_type type, PT_table_reference *tab2_node_arg)
Definition: parse_tree_nodes.h:529
void add_rhs(PT_table_reference *table)
Adds the table reference as the right-hand side of this join.
Definition: parse_tree_nodes.h:556
~PT_joined_table() override=0
This class is being inherited, it should thus be abstract.
PT_joined_table_type m_type
Definition: parse_tree_nodes.h:522
Table_ref * m_right_table_ref
Definition: parse_tree_nodes.h:526
POS m_join_pos
Definition: parse_tree_nodes.h:521
bool contextualize_tabs(Parse_context *pc)
Definition: parse_tree_nodes.cc:152
PT_table_reference * m_left_pt_table
Definition: parse_tree_nodes.h:520
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3670
PT_table_reference * m_right_pt_table
Definition: parse_tree_nodes.h:523
PT_joined_table * add_cross_join(PT_cross_join *cj) override
Adds the cross join to this join operation.
Definition: parse_tree_nodes.h:550
Definition: parse_tree_nodes.h:4867
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3400
Json_table_column * get_column() override
Definition: parse_tree_nodes.h:4874
const char * m_name
Definition: parse_tree_nodes.h:4878
PT_json_table_column super
Definition: parse_tree_nodes.h:4868
unique_ptr_destroy_only< Json_table_column > m_column
Definition: parse_tree_nodes.h:4877
PT_json_table_column_for_ordinality(LEX_STRING name)
Definition: parse_tree_nodes.cc:3393
Definition: parse_tree_nodes.h:4902
Json_table_column * get_column() override
Definition: parse_tree_nodes.h:4912
Item * m_path
Definition: parse_tree_nodes.h:4915
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3478
PT_json_table_column super
Definition: parse_tree_nodes.h:4903
Json_table_column * m_column
Definition: parse_tree_nodes.h:4917
const Mem_root_array< PT_json_table_column * > * m_nested_columns
Definition: parse_tree_nodes.h:4916
PT_json_table_column_with_nested_path(Item *path, Mem_root_array< PT_json_table_column * > *nested_cols)
Definition: parse_tree_nodes.h:4906
Definition: parse_tree_nodes.h:4881
~PT_json_table_column_with_path() override
const CHARSET_INFO * m_collation
Definition: parse_tree_nodes.h:4898
unique_ptr_destroy_only< Json_table_column > m_column
Definition: parse_tree_nodes.h:4895
const char * m_name
Definition: parse_tree_nodes.h:4896
PT_json_table_column super
Definition: parse_tree_nodes.h:4882
Json_table_column * get_column() override
Definition: parse_tree_nodes.h:4892
PT_type * m_type
Definition: parse_tree_nodes.h:4897
PT_json_table_column_with_path(unique_ptr_destroy_only< Json_table_column > column, LEX_STRING name, PT_type *type, const CHARSET_INFO *collation)
Definition: parse_tree_nodes.cc:3410
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3437
Definition: parse_tree_nodes.h:446
virtual Json_table_column * get_column()=0
A key part specification.
Definition: parse_tree_nodes.h:2058
bool has_expression() const
Definition: parse_tree_nodes.h:2122
LEX_CSTRING m_column_name
The name of the column that this key part indexes.
Definition: parse_tree_nodes.h:2154
Parse_tree_node super
Definition: parse_tree_nodes.h:2059
bool is_explicit() const
Definition: parse_tree_nodes.h:2115
Item * get_expression() const
Get the indexed expression.
Definition: parse_tree_nodes.h:2099
LEX_CSTRING get_column_name() const
Get the column that this key part points to.
Definition: parse_tree_nodes.h:2131
enum_order get_order() const
Definition: parse_tree_nodes.h:2109
enum_order m_order
The direction of the index.
Definition: parse_tree_nodes.h:2151
int get_prefix_length() const
Definition: parse_tree_nodes.h:2141
PT_key_part_specification(Item *expression, enum_order order)
Constructor for a functional key part.
Definition: parse_tree_nodes.cc:668
bool contextualize(Parse_context *pc) override
Contextualize this key part specification.
Definition: parse_tree_nodes.cc:679
int m_prefix_length
If this is greater than zero, it represents how many bytes of the column that is indexed.
Definition: parse_tree_nodes.h:2161
Item * m_expression
The indexed expression in case this is a functional key part.
Definition: parse_tree_nodes.h:2148
Definition: parse_tree_nodes.h:390
Parse_tree_node super
Definition: parse_tree_nodes.h:391
Limit_options limit_options
Definition: parse_tree_nodes.h:393
PT_limit_clause(const Limit_options &limit_options_arg)
Definition: parse_tree_nodes.h:396
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3627
Definition: parse_tree_nodes.h:4834
List< Index_hint > * m_opt_cache_key_list
Definition: parse_tree_nodes.h:4851
bool m_ignore_leaves
Definition: parse_tree_nodes.h:4852
PT_adm_partition * m_partitions
Definition: parse_tree_nodes.h:4850
Table_ident * m_table
Definition: parse_tree_nodes.h:4849
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3326
PT_load_index_partitions_stmt(MEM_ROOT *mem_root, Table_ident *table, PT_adm_partition *partitions, List< Index_hint > *opt_cache_key_list, bool ignore_leaves)
Definition: parse_tree_nodes.h:4836
Definition: parse_tree_nodes.h:4855
Mem_root_array< PT_preload_keys * > * m_preload_list
Definition: parse_tree_nodes.h:4864
PT_load_index_stmt(MEM_ROOT *mem_root, Mem_root_array< PT_preload_keys * > *preload_list)
Definition: parse_tree_nodes.h:4857
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3344
Definition: parse_tree_nodes.h:5174
const thr_lock_type m_lock_type
Definition: parse_tree_nodes.h:5204
PT_load_table(enum_filetype filetype, thr_lock_type lock_type, bool is_local_file, enum_source_type, const LEX_STRING filename, ulong, bool, On_duplicate on_duplicate, Table_ident *table, List< String > *opt_partitions, const CHARSET_INFO *opt_charset, String *opt_xml_rows_identified_by, const Field_separators &opt_field_separators, const Line_separators &opt_line_separators, ulong opt_ignore_lines, PT_item_list *opt_fields_or_vars, PT_item_list *opt_set_fields, PT_item_list *opt_set_exprs, List< String > *opt_set_expr_strings, bool)
Definition: parse_tree_nodes.h:5176
Sql_cmd_load_table m_cmd
Definition: parse_tree_nodes.h:5202
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3564
Definition: parse_tree_nodes.h:706
Mem_root_array_YY< PT_locking_clause * > m_locking_clauses
Definition: parse_tree_nodes.h:723
bool push_back(PT_locking_clause *locking_clause)
Definition: parse_tree_nodes.h:712
PT_locking_clause_list(MEM_ROOT *mem_root)
Definition: parse_tree_nodes.h:708
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.h:716
Definition: parse_tree_nodes.h:643
Lock_descriptor get_lock_descriptor() const
Definition: parse_tree_nodes.h:655
bool contextualize(Parse_context *pc) final
Definition: parse_tree_nodes.cc:2145
virtual bool set_lock_for_tables(Parse_context *pc)=0
Locked_row_action action() const
Definition: parse_tree_nodes.h:652
Locked_row_action m_locked_row_action
Definition: parse_tree_nodes.h:671
PT_locking_clause(Lock_strength strength, Locked_row_action action)
Definition: parse_tree_nodes.h:645
Lock_strength m_lock_strength
Definition: parse_tree_nodes.h:670
Definition: parse_tree_nodes.h:1570
bool is_table_value_constructor() const override
Definition: parse_tree_nodes.h:1596
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.h:1578
bool has_trailing_into_clause() const override
Definition: parse_tree_nodes.h:1590
PT_insert_values_list * get_row_value_list() const override
Definition: parse_tree_nodes.h:1600
PT_locking(PT_query_expression_body *qe, PT_locking_clause_list *locking_clauses)
Definition: parse_tree_nodes.h:1574
PT_locking_clause_list *const m_locking_clauses
Definition: parse_tree_nodes.h:1606
bool is_set_operation() const override
Definition: parse_tree_nodes.h:1583
bool has_into_clause() const override
Definition: parse_tree_nodes.h:1587
bool can_absorb_order_and_limit(bool order, bool limit) const override
True if this query expression can absorb an extraneous order by/limit clause.
Definition: parse_tree_nodes.h:1592
PT_query_expression_body *const m_query_expression
Definition: parse_tree_nodes.h:1605
Definition: parse_tree_nodes.h:4702
PT_optimize_table_stmt(MEM_ROOT *mem_root, bool no_write_to_binlog, Mem_root_array< Table_ident * > *table_list)
Definition: parse_tree_nodes.h:4704
bool m_no_write_to_binlog
Definition: parse_tree_nodes.h:4712
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3228
Mem_root_array< Table_ident * > * m_table_list
Definition: parse_tree_nodes.h:4713
Definition: parse_tree_nodes.h:971
Parse_tree_node super
Definition: parse_tree_nodes.h:972
POS value_pos
Definition: parse_tree_nodes.h:976
Parse_tree_node * value
Definition: parse_tree_nodes.h:975
PT_option_value_list_head(const POS &delimiter_pos_arg, Parse_tree_node *value_arg, const POS &value_pos_arg)
Definition: parse_tree_nodes.h:979
POS delimiter_pos
Definition: parse_tree_nodes.h:974
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3830
Definition: parse_tree_nodes.h:989
PT_option_value_list_head * head
Definition: parse_tree_nodes.h:992
PT_option_value_list_head super
Definition: parse_tree_nodes.h:990
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.h:1000
PT_option_value_list(PT_option_value_list_head *head_arg, const POS &delimiter_pos_arg, Parse_tree_node *tail, const POS &tail_pos)
Definition: parse_tree_nodes.h:995
Definition: parse_tree_nodes.h:864
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:185
const CHARSET_INFO * opt_charset
Definition: parse_tree_nodes.h:867
PT_option_value_no_option_type_charset(const CHARSET_INFO *opt_charset_arg)
Definition: parse_tree_nodes.h:870
PT_option_value_no_option_type super
Definition: parse_tree_nodes.h:865
Definition: parse_tree_nodes.h:877
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:202
POS pos
Definition: parse_tree_nodes.h:880
PT_option_value_no_option_type_names(const POS &pos)
Definition: parse_tree_nodes.h:883
PT_option_value_no_option_type super
Definition: parse_tree_nodes.h:878
Definition: parse_tree_nodes.h:930
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:581
POS expr_pos
Definition: parse_tree_nodes.h:938
bool retain_current_password
Definition: parse_tree_nodes.h:936
LEX_USER * user
Definition: parse_tree_nodes.h:933
const char * password
Definition: parse_tree_nodes.h:934
PT_start_option_value_list super
Definition: parse_tree_nodes.h:931
PT_option_value_no_option_type_password_for(LEX_USER *user_arg, const char *password_arg, const char *current_password_arg, bool retain_current, bool random_pass, const POS &expr_pos_arg)
Definition: parse_tree_nodes.h:941
bool random_password_generator
Definition: parse_tree_nodes.h:937
const char * current_password
Definition: parse_tree_nodes.h:935
Definition: parse_tree_nodes.h:905
bool random_password_generator
Definition: parse_tree_nodes.h:911
const char * current_password
Definition: parse_tree_nodes.h:909
PT_start_option_value_list super
Definition: parse_tree_nodes.h:906
POS expr_pos
Definition: parse_tree_nodes.h:912
bool retain_current_password
Definition: parse_tree_nodes.h:910
const char * password
Definition: parse_tree_nodes.h:908
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:627
PT_option_value_no_option_type_password(const char *password_arg, const char *current_password_arg, bool retain_current, bool random_password, const POS &expr_pos_arg)
Definition: parse_tree_nodes.h:915
Definition: parse_tree_nodes.h:826
LEX_STRING name
Definition: parse_tree_nodes.h:829
PT_option_value_no_option_type super
Definition: parse_tree_nodes.h:827
Item * expr
Definition: parse_tree_nodes.h:830
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3790
PT_option_value_no_option_type_user_var(const LEX_STRING &name_arg, Item *expr_arg)
Definition: parse_tree_nodes.h:833
Definition: parse_tree_nodes.h:801
Definition: parse_tree_nodes.h:957
enum_var_type type
Definition: parse_tree_nodes.h:960
Parse_tree_node super
Definition: parse_tree_nodes.h:958
PT_set_scoped_system_variable * value
Definition: parse_tree_nodes.h:961
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3825
PT_option_value_type(enum_var_type type_arg, PT_set_scoped_system_variable *value_arg)
Definition: parse_tree_nodes.h:964
Definition: parse_tree_nodes.h:203
Parse_tree_node super
Definition: parse_tree_nodes.h:204
PT_order_expr(Item *item_arg, enum_order dir)
Definition: parse_tree_nodes.h:207
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:304
Definition: parse_tree_nodes.h:215
void push_back(PT_order_expr *order)
Definition: parse_tree_nodes.h:230
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.h:222
Parse_tree_node super
Definition: parse_tree_nodes.h:216
SQL_I_List< ORDER > value
Definition: parse_tree_nodes.h:219
Definition: parse_tree_nodes.h:632
Parse_tree_node super
Definition: parse_tree_nodes.h:633
PT_order_list * order_list
Definition: parse_tree_nodes.h:636
PT_order(PT_order_list *order_list_arg)
Definition: parse_tree_nodes.h:637
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:287
Node for the PARTITION clause of CREATE/ALTER TABLE.
Definition: parse_tree_partitions.h:386
Node for the PARTITION definition clause.
Definition: parse_tree_partitions.h:594
Definition: parse_tree_nodes.h:4816
List< Index_hint > * m_opt_cache_key_list
Definition: parse_tree_nodes.h:4830
Table_ddl_node super
Definition: parse_tree_nodes.h:4817
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.cc:4549
PT_preload_keys(Table_ident *table, List< Index_hint > *opt_cache_key_list, bool ignore_leaves)
Definition: parse_tree_nodes.h:4820
Table_ident * m_table
Definition: parse_tree_nodes.h:4829
bool m_ignore_leaves
Definition: parse_tree_nodes.h:4831
Definition: parse_tree_nodes.h:674
PT_query_block_locking_clause(Lock_strength strength, Locked_row_action action=Locked_row_action::WAIT)
Definition: parse_tree_nodes.h:676
bool set_lock_for_tables(Parse_context *pc) override
Definition: parse_tree_nodes.cc:2167
Definition: parse_tree_nodes.h:726
virtual bool can_absorb_order_and_limit(bool order, bool limit) const =0
True if this query expression can absorb an extraneous order by/limit clause.
virtual bool is_table_value_constructor() const =0
virtual bool is_set_operation() const =0
virtual Setop_type type() const
Definition: parse_tree_nodes.h:729
Setop_type
Definition: parse_tree_nodes.h:728
@ UNION
Definition: parse_tree_nodes.h:728
@ EXCEPT
Definition: parse_tree_nodes.h:728
@ NONE
Definition: parse_tree_nodes.h:728
@ INTERSECT
Definition: parse_tree_nodes.h:728
virtual PT_insert_values_list * get_row_value_list() const =0
virtual bool has_into_clause() const =0
virtual bool has_trailing_into_clause() const =0
Definition: parse_tree_nodes.h:1465
PT_order * m_order
Definition: parse_tree_nodes.h:1561
PT_limit_clause * m_limit
Definition: parse_tree_nodes.h:1562
bool is_set_operation() const override
Definition: parse_tree_nodes.h:1484
PT_query_expression(PT_with_clause *with_clause, PT_query_expression_body *body, PT_order *order, PT_limit_clause *limit)
Definition: parse_tree_nodes.h:1467
PT_query_expression(PT_query_expression_body *body)
Definition: parse_tree_nodes.h:1479
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3996
PT_query_expression_body * m_body
Definition: parse_tree_nodes.h:1560
bool has_into_clause() const override
Definition: parse_tree_nodes.h:1486
bool has_trailing_into_clause() const override
Definition: parse_tree_nodes.h:1487
bool contextualize_order_and_limit(Parse_context *pc)
Contextualizes the order and limit clauses, re-interpreting them according to the rules.
Definition: parse_tree_nodes.cc:1247
bool can_absorb_order_and_limit(bool order, bool limit) const override
True if this query expression can absorb an extraneous order by/limit clause.
Definition: parse_tree_nodes.h:1492
PT_query_expression(PT_query_expression_body *body, PT_order *order, PT_limit_clause *limit)
Definition: parse_tree_nodes.h:1475
PT_insert_values_list * get_row_value_list() const override
Definition: parse_tree_nodes.h:1544
PT_with_clause * m_with_clause
Definition: parse_tree_nodes.h:1563
bool is_table_value_constructor() const override
Definition: parse_tree_nodes.h:1540
Definition: parse_tree_nodes.h:1345
Definition: parse_tree_nodes.h:1347
bool is_implicit_from_clause() const
Definition: parse_tree_nodes.h:1427
PT_into_destination * opt_into1
Definition: parse_tree_nodes.h:1353
PT_hint_list * opt_hints
Definition: parse_tree_nodes.h:1350
Item * opt_having_clause
Definition: parse_tree_nodes.h:1358
PT_insert_values_list * get_row_value_list() const override
Definition: parse_tree_nodes.h:1424
PT_window_list * opt_window_clause
Definition: parse_tree_nodes.h:1359
const bool m_is_from_clause_implicit
Definition: parse_tree_nodes.h:1354
PT_query_specification(const Query_options &options_arg, PT_item_list *item_list_arg)
Definition: parse_tree_nodes.h:1397
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:1163
bool is_set_operation() const override
Definition: parse_tree_nodes.h:1419
bool has_into_clause() const override
Definition: parse_tree_nodes.h:1412
PT_item_list * item_list
Definition: parse_tree_nodes.h:1352
Mem_root_array_YY< PT_table_reference * > from_clause
Definition: parse_tree_nodes.h:1355
bool is_table_value_constructor() const override
Definition: parse_tree_nodes.h:1423
Query_options options
Definition: parse_tree_nodes.h:1351
PT_group * opt_group_clause
Definition: parse_tree_nodes.h:1357
bool can_absorb_order_and_limit(bool, bool) const override
True if this query expression can absorb an extraneous order by/limit clause.
Definition: parse_tree_nodes.h:1421
bool has_trailing_into_clause() const override
Definition: parse_tree_nodes.h:1413
Item * opt_where_clause
Definition: parse_tree_nodes.h:1356
PT_query_primary super
Definition: parse_tree_nodes.h:1348
PT_query_specification(const Query_options &options_arg, PT_item_list *item_list_arg, const Mem_root_array_YY< PT_table_reference * > &from_clause_arg, Item *opt_where_clause_arg)
Definition: parse_tree_nodes.h:1382
PT_query_specification(PT_hint_list *opt_hints_arg, const Query_options &options_arg, PT_item_list *item_list_arg, PT_into_destination *opt_into1_arg, const Mem_root_array_YY< PT_table_reference * > &from_clause_arg, Item *opt_where_clause_arg, PT_group *opt_group_clause_arg, Item *opt_having_clause_arg, PT_window_list *opt_window_clause_arg, bool implicit_from_clause)
Definition: parse_tree_nodes.h:1362
Definition: parse_tree_nodes.h:4637
Mem_root_array< Table_ident * > * m_table_list
Definition: parse_tree_nodes.h:4653
bool m_no_write_to_binlog
Definition: parse_tree_nodes.h:4652
PT_repair_table_stmt(MEM_ROOT *mem_root, bool no_write_to_binlog, Mem_root_array< Table_ident * > *table_list, decltype(HA_CHECK_OPT::flags) flags, decltype(HA_CHECK_OPT::sql_flags) sql_flags)
Definition: parse_tree_nodes.h:4639
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3168
decltype(HA_CHECK_OPT::sql_flags) m_sql_flags
Definition: parse_tree_nodes.h:4655
decltype(HA_CHECK_OPT::flags) m_flags
Definition: parse_tree_nodes.h:4654
Top-level node for the SHUTDOWN statement.
Definition: parse_tree_nodes.h:5213
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4627
Sql_cmd_restart_server sql_cmd
Definition: parse_tree_nodes.h:5218
Definition: parse_tree_nodes.h:3012
PT_revoke_roles(Mem_root_array< PT_role_or_privilege * > *roles, const List< LEX_USER > *users)
Definition: parse_tree_nodes.h:3017
const Mem_root_array< PT_role_or_privilege * > * roles
Definition: parse_tree_nodes.h:3013
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4390
const List< LEX_USER > * users
Definition: parse_tree_nodes.h:3014
Definition: parse_tree_nodes.h:2954
LEX_STRING role
Definition: parse_tree_nodes.h:2955
PT_role_at_host(const POS &pos, const LEX_STRING &role, const LEX_STRING &host)
Definition: parse_tree_nodes.h:2959
LEX_STRING host
Definition: parse_tree_nodes.h:2956
LEX_USER * get_user(THD *thd) override
Definition: parse_tree_nodes.cc:4356
Definition: parse_tree_nodes.h:2966
LEX_STRING ident
Definition: parse_tree_nodes.h:2967
PT_role_or_dynamic_privilege(const POS &pos, const LEX_STRING &ident)
Definition: parse_tree_nodes.h:2970
Privilege * get_privilege(THD *thd) override
Definition: parse_tree_nodes.cc:4364
LEX_USER * get_user(THD *thd) override
Definition: parse_tree_nodes.cc:4360
Definition: parse_tree_nodes.h:2944
POS pos
Definition: parse_tree_nodes.h:2946
virtual LEX_USER * get_user(THD *thd)
Definition: parse_tree_nodes.cc:4346
PT_role_or_privilege(const POS &pos)
Definition: parse_tree_nodes.h:2949
virtual Privilege * get_privilege(THD *thd)
Definition: parse_tree_nodes.cc:4351
Definition: parse_tree_nodes.h:383
PT_item_list super
Definition: parse_tree_nodes.h:384
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3621
Definition: parse_tree_nodes.h:1207
PT_select_sp_var(const LEX_STRING &name_arg)
Definition: parse_tree_nodes.h:1221
sp_head * sp
Definition: parse_tree_nodes.h:1217
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:683
uint offset
Definition: parse_tree_nodes.h:1210
uint get_offset() const override
Definition: parse_tree_nodes.h:1224
PT_select_var super
Definition: parse_tree_nodes.h:1208
bool is_local() const override
Definition: parse_tree_nodes.h:1223
Definition: parse_tree_nodes.h:1703
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:703
PT_query_expression_body * m_qe
Definition: parse_tree_nodes.h:1738
const bool m_has_trailing_locking_clauses
Definition: parse_tree_nodes.h:1740
PT_into_destination * m_into
Definition: parse_tree_nodes.h:1739
PT_select_stmt(enum_sql_command sql_command, PT_query_expression_body *qe)
Definition: parse_tree_nodes.h:1711
Parse_tree_root super
Definition: parse_tree_nodes.h:1704
PT_select_stmt(PT_query_expression_body *qe, PT_into_destination *into=nullptr, bool has_trailing_locking_clauses=false)
Creates a SELECT command.
Definition: parse_tree_nodes.h:1726
enum_sql_command m_sql_command
Definition: parse_tree_nodes.h:1737
Definition: parse_tree_nodes.h:1229
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3976
List< PT_select_var > value
Definition: parse_tree_nodes.h:1235
PT_into_destination super
Definition: parse_tree_nodes.h:1230
bool push_back(PT_select_var *var)
Definition: parse_tree_nodes.h:1239
PT_select_var_list(const POS &pos)
Definition: parse_tree_nodes.h:1233
Definition: parse_tree_nodes.h:1194
const LEX_STRING name
Definition: parse_tree_nodes.h:1196
virtual bool is_local() const
Definition: parse_tree_nodes.h:1200
PT_select_var(const LEX_STRING &name_arg)
Definition: parse_tree_nodes.h:1198
virtual uint get_offset() const
Definition: parse_tree_nodes.h:1201
Definition: parse_tree_nodes.h:888
PT_set_names(const CHARSET_INFO *opt_charset_arg, const CHARSET_INFO *opt_collation_arg)
Definition: parse_tree_nodes.h:895
PT_option_value_no_option_type super
Definition: parse_tree_nodes.h:889
const CHARSET_INFO * opt_charset
Definition: parse_tree_nodes.h:891
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:218
const CHARSET_INFO * opt_collation
Definition: parse_tree_nodes.h:892
Definition: parse_tree_nodes.h:1630
bool has_trailing_into_clause() const override
Definition: parse_tree_nodes.h:1653
bool m_is_distinct
Definition: parse_tree_nodes.h:1671
bool can_absorb_order_and_limit(bool, bool) const override
True if this query expression can absorb an extraneous order by/limit clause.
Definition: parse_tree_nodes.h:1658
PT_set_operation(PT_query_expression_body *lhs, bool is_distinct, PT_query_expression_body *rhs, bool is_rhs_in_parentheses=false)
Definition: parse_tree_nodes.h:1634
bool is_distinct() const
Definition: parse_tree_nodes.h:1662
void merge_descendants(Parse_context *pc, Query_term_set_op *setop, QueryLevel &ql)
Possibly merge lower syntactic levels of set operations (UNION, INTERSECT and EXCEPT) into setop,...
Definition: parse_tree_nodes.cc:1531
PT_into_destination * m_into
Definition: parse_tree_nodes.h:1672
PT_insert_values_list * get_row_value_list() const override
Definition: parse_tree_nodes.h:1661
bool has_into_clause() const override
Definition: parse_tree_nodes.h:1647
void set_is_rhs_in_parentheses(bool v)
Definition: parse_tree_nodes.h:1665
bool m_is_rhs_in_parentheses
Definition: parse_tree_nodes.h:1673
bool is_set_operation() const override
Definition: parse_tree_nodes.h:1645
bool is_table_value_constructor() const override
Definition: parse_tree_nodes.h:1660
List< PT_query_expression_body > m_list
Definition: parse_tree_nodes.h:1664
bool contextualize_setop(Parse_context *pc, Query_term_type setop_type, Surrounding_context context)
Definition: parse_tree_nodes.cc:1665
void merge_children(Query_term_set_op *setop, Query_term_set_op *lower)
Append the children of 'lower' to those of 'setop'.
Definition: parse_tree_nodes.cc:1404
Parse tree node for SET RESOURCE GROUP statement.
Definition: parse_tree_nodes.h:5134
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4617
resourcegroups::Sql_cmd_set_resource_group sql_cmd
Definition: parse_tree_nodes.h:5135
PT_set_resource_group(const LEX_CSTRING &name, Mem_root_array< ulonglong > *thread_id_list)
Definition: parse_tree_nodes.h:5138
Definition: parse_tree_nodes.h:2900
PT_set_role(role_enum role_type, const List< LEX_USER > *opt_except_roles=nullptr)
Definition: parse_tree_nodes.h:2904
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4341
PT_set_role(const List< LEX_USER > *roles)
Definition: parse_tree_nodes.h:2909
Sql_cmd_set_role sql_cmd
Definition: parse_tree_nodes.h:2901
Definition: parse_tree_nodes.h:781
Parse_tree_node super
Definition: parse_tree_nodes.h:782
const LEX_CSTRING m_name
Definition: parse_tree_nodes.h:797
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3748
const LEX_CSTRING m_opt_prefix
Definition: parse_tree_nodes.h:796
PT_set_scoped_system_variable(const POS &pos, const LEX_CSTRING &opt_prefix, const LEX_CSTRING &name, Item *opt_expr)
Definition: parse_tree_nodes.h:785
Item * m_opt_expr
Definition: parse_tree_nodes.h:798
const POS m_pos
Definition: parse_tree_nodes.h:795
Definition: parse_tree_nodes.h:840
const enum_var_type m_scope
Definition: parse_tree_nodes.h:856
PT_option_value_no_option_type super
Definition: parse_tree_nodes.h:841
const LEX_CSTRING m_opt_prefix
Definition: parse_tree_nodes.h:858
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3802
const LEX_CSTRING m_name
Definition: parse_tree_nodes.h:859
Item * m_opt_expr
Definition: parse_tree_nodes.h:860
const POS m_name_pos
Definition: parse_tree_nodes.h:857
PT_set_system_variable(enum_var_type scope, const POS &name_pos, const LEX_CSTRING &opt_prefix, const LEX_CSTRING &name, Item *opt_expr)
Definition: parse_tree_nodes.h:844
Definition: parse_tree_nodes.h:803
Item * m_opt_expr
Definition: parse_tree_nodes.h:822
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:499
PT_set_variable(const POS &pos, const LEX_CSTRING &opt_prefix, const LEX_CSTRING &name, const POS &expr_pos, Item *opt_expr)
Definition: parse_tree_nodes.h:807
PT_option_value_no_option_type super
Definition: parse_tree_nodes.h:804
const POS m_expr_pos
Definition: parse_tree_nodes.h:821
const LEX_CSTRING m_opt_prefix
Definition: parse_tree_nodes.h:819
const POS m_pos
Definition: parse_tree_nodes.h:818
const LEX_CSTRING m_name
Definition: parse_tree_nodes.h:820
Definition: parse_tree_nodes.h:1137
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3926
Parse_tree_node super
Definition: parse_tree_nodes.h:1138
POS set_pos
Definition: parse_tree_nodes.h:1140
PT_set(const POS &set_pos_arg, PT_start_option_value_list *list_arg)
Definition: parse_tree_nodes.h:1144
PT_start_option_value_list * list
Definition: parse_tree_nodes.h:1141
Base class for Parse tree nodes of SHOW statements.
Definition: parse_tree_nodes.h:3038
PT_show_base(const POS &pos, enum_sql_command sql_command)
Definition: parse_tree_nodes.h:3040
enum_sql_command m_sql_command
SQL command.
Definition: parse_tree_nodes.h:3046
POS m_pos
Textual location of a token just parsed.
Definition: parse_tree_nodes.h:3044
Parse tree node for SHOW BINLOG EVENTS statement.
Definition: parse_tree_nodes.h:3114
PT_limit_clause *const m_opt_limit_clause
Definition: parse_tree_nodes.h:3126
Sql_cmd_show_binlog_events m_sql_cmd
Definition: parse_tree_nodes.h:3128
PT_show_binlog_events(const POS &pos, const LEX_STRING opt_log_file_name={}, PT_limit_clause *opt_limit_clause=nullptr)
Definition: parse_tree_nodes.h:3116
const LEX_STRING m_opt_log_file_name
Definition: parse_tree_nodes.h:3125
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2440
Parse tree node for SHOW BINLOGS statement.
Definition: parse_tree_nodes.h:3133
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2452
PT_show_binlogs(const POS &pos)
Definition: parse_tree_nodes.h:3135
Sql_cmd_show_binlogs m_sql_cmd
Definition: parse_tree_nodes.h:3140
Parse tree node for SHOW CHARACTER SET statement.
Definition: parse_tree_nodes.h:3145
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2459
PT_show_charsets(const POS &pos, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3147
Sql_cmd_show_charsets m_sql_cmd
Definition: parse_tree_nodes.h:3153
Parse tree node for SHOW COLLATIONS statement.
Definition: parse_tree_nodes.h:3158
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2472
PT_show_collations(const POS &pos, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3160
Sql_cmd_show_collations m_sql_cmd
Definition: parse_tree_nodes.h:3166
Base class for Parse tree nodes of SHOW COUNT(*) { WARNINGS | ERRORS } statements.
Definition: parse_tree_nodes.h:3172
Sql_cmd * make_cmd_generic(THD *thd, LEX_CSTRING diagnostic_variable_name)
Definition: parse_tree_nodes.cc:2485
PT_show_count_base(const POS &pos)
Definition: parse_tree_nodes.h:3174
Parse tree node for SHOW COUNT(*) ERRORS.
Definition: parse_tree_nodes.h:3183
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.h:3187
PT_show_count_errors(const POS &pos)
Definition: parse_tree_nodes.h:3185
Parse tree node for SHOW COUNT(*) WARNINGS.
Definition: parse_tree_nodes.h:3194
PT_show_count_warnings(const POS &pos)
Definition: parse_tree_nodes.h:3196
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.h:3198
Parse tree node for SHOW CREATE DATABASE statement.
Definition: parse_tree_nodes.h:3205
const LEX_STRING m_name
Definition: parse_tree_nodes.h:3217
PT_show_create_database(const POS &pos, bool if_not_exists, const LEX_STRING &name)
Definition: parse_tree_nodes.h:3207
Sql_cmd_show_create_database m_sql_cmd
Definition: parse_tree_nodes.h:3219
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2517
const bool m_if_not_exists
Definition: parse_tree_nodes.h:3216
Parse tree node for SHOW CREATE EVENT statement.
Definition: parse_tree_nodes.h:3224
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2530
sp_name *const m_spname
Definition: parse_tree_nodes.h:3232
PT_show_create_event(const POS &pos, sp_name *event_name)
Definition: parse_tree_nodes.h:3226
Sql_cmd_show_create_event m_sql_cmd
Definition: parse_tree_nodes.h:3234
Parse tree node for SHOW CREATE FUNCTION statement.
Definition: parse_tree_nodes.h:3239
Sql_cmd_show_create_function m_sql_cmd
Definition: parse_tree_nodes.h:3249
PT_show_create_function(const POS &pos, sp_name *function_name)
Definition: parse_tree_nodes.h:3241
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2539
sp_name *const m_spname
Definition: parse_tree_nodes.h:3247
Parse tree node for SHOW CREATE PROCEDURE statement.
Definition: parse_tree_nodes.h:3254
Sql_cmd_show_create_procedure m_sql_cmd
Definition: parse_tree_nodes.h:3264
sp_name *const m_spname
Definition: parse_tree_nodes.h:3262
PT_show_create_procedure(const POS &pos, sp_name *procedure_name)
Definition: parse_tree_nodes.h:3256
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2548
Parse tree node for SHOW CREATE TABLE and VIEW statements.
Definition: parse_tree_nodes.h:3269
Sql_cmd_show_create_table m_sql_cmd
Definition: parse_tree_nodes.h:3277
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2557
PT_show_create_table(const POS &pos, Table_ident *table_ident)
Definition: parse_tree_nodes.h:3271
Parse tree node for SHOW CREATE TRIGGER statement.
Definition: parse_tree_nodes.h:3282
PT_show_create_trigger(const POS &pos, sp_name *trigger_name)
Definition: parse_tree_nodes.h:3284
Sql_cmd_show_create_trigger m_sql_cmd
Definition: parse_tree_nodes.h:3292
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2576
sp_name *const m_spname
Definition: parse_tree_nodes.h:3290
Parse tree node for SHOW CREATE USER statement.
Definition: parse_tree_nodes.h:3297
Sql_cmd_show_create_user m_sql_cmd
Definition: parse_tree_nodes.h:3307
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2585
PT_show_create_user(const POS &pos, LEX_USER *user)
Definition: parse_tree_nodes.h:3299
LEX_USER *const m_user
Definition: parse_tree_nodes.h:3305
Parse tree node for SHOW CREATE VIEW statement.
Definition: parse_tree_nodes.h:3312
PT_show_create_view(const POS &pos, Table_ident *table_ident)
Definition: parse_tree_nodes.h:3314
Sql_cmd_show_create_table m_sql_cmd
Definition: parse_tree_nodes.h:3320
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2569
Parse tree node for SHOW DATABASES statement.
Definition: parse_tree_nodes.h:3325
Sql_cmd_show_databases m_sql_cmd
Definition: parse_tree_nodes.h:3333
PT_show_databases(const POS &pos, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3327
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2594
Parse tree node for SHOW ENGINE statements.
Definition: parse_tree_nodes.h:3338
PT_show_engine_base(const POS &pos, enum enum_sql_command sql_command, const LEX_STRING opt_engine={})
Definition: parse_tree_nodes.h:3340
LEX_STRING m_engine
Definition: parse_tree_nodes.h:3346
bool m_all
Definition: parse_tree_nodes.h:3347
Parse tree node for SHOW ENGINE LOGS statement.
Definition: parse_tree_nodes.h:3352
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2607
PT_show_engine_logs(const POS &pos, LEX_STRING opt_engine={})
Definition: parse_tree_nodes.h:3354
Sql_cmd_show_engine_logs m_sql_cmd
Definition: parse_tree_nodes.h:3360
Parse tree node for SHOW ENGINE MUTEX statement.
Definition: parse_tree_nodes.h:3365
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2621
Sql_cmd_show_engine_mutex m_sql_cmd
Definition: parse_tree_nodes.h:3373
PT_show_engine_mutex(const POS &pos, LEX_STRING opt_engine={})
Definition: parse_tree_nodes.h:3367
Parse tree node for SHOW ENGINE STATUS statement.
Definition: parse_tree_nodes.h:3378
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2635
PT_show_engine_status(const POS &pos, LEX_STRING opt_engine={})
Definition: parse_tree_nodes.h:3380
Sql_cmd_show_engine_status m_sql_cmd
Definition: parse_tree_nodes.h:3386
Parse tree node for SHOW ENGINES statement.
Definition: parse_tree_nodes.h:3391
PT_show_engines(const POS &pos)
Definition: parse_tree_nodes.h:3393
Sql_cmd_show_engines m_sql_cmd
Definition: parse_tree_nodes.h:3399
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2649
Parse tree node for SHOW ERRORS statement.
Definition: parse_tree_nodes.h:3404
PT_limit_clause *const m_opt_limit_clause
Definition: parse_tree_nodes.h:3413
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2658
Sql_cmd_show_errors m_sql_cmd
Definition: parse_tree_nodes.h:3415
PT_show_errors(const POS &pos, PT_limit_clause *opt_limit_clause=nullptr)
Definition: parse_tree_nodes.h:3406
Parse tree node for SHOW EVENTS statement.
Definition: parse_tree_nodes.h:3420
Sql_cmd_show_events m_sql_cmd
Definition: parse_tree_nodes.h:3429
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2692
PT_show_events(const POS &pos, char *opt_db, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3422
Parse tree node for SHOW COLUMNS statement.
Definition: parse_tree_nodes.h:3434
Sql_cmd_show_columns m_sql_cmd
Definition: parse_tree_nodes.h:3448
Show_cmd_type m_show_cmd_type
Definition: parse_tree_nodes.h:3447
PT_show_fields(const POS &pos, Show_cmd_type show_cmd_type, Table_ident *table, LEX_STRING opt_wild={}, Item *opt_where=nullptr)
Definition: parse_tree_nodes.h:3438
PT_show_table_base super
Definition: parse_tree_nodes.h:3435
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2670
Base class for Parse tree nodes of SHOW statements with LIKE/WHERE parameter.
Definition: parse_tree_nodes.h:3051
Item * m_where
Definition: parse_tree_nodes.h:3060
PT_show_filter_base(const POS &pos, enum_sql_command sql_command, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3053
LEX_STRING m_wild
Wild or where clause used in the statement.
Definition: parse_tree_nodes.h:3059
Parse tree node for SHOW FUNCTION CODE statement.
Definition: parse_tree_nodes.h:3453
PT_show_function_code(const POS &pos, const sp_name *function_name)
Definition: parse_tree_nodes.h:3455
Parse tree node for SHOW GRANTS statement.
Definition: parse_tree_nodes.h:3461
Sql_cmd_show_grants sql_cmd
Definition: parse_tree_nodes.h:3473
PT_show_grants(const POS &pos, const LEX_USER *opt_for_user, const List< LEX_USER > *opt_using_users)
Definition: parse_tree_nodes.h:3463
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:4407
Parse tree node for SHOW INDEX statement.
Definition: parse_tree_nodes.h:3478
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2684
PT_show_keys(const POS &pos, bool extended_show, Table_ident *table, Item *where)
Definition: parse_tree_nodes.h:3480
Sql_cmd_show_keys m_sql_cmd
Definition: parse_tree_nodes.h:3492
bool m_extended_show
Definition: parse_tree_nodes.h:3491
PT_show_table_base super
Definition: parse_tree_nodes.h:3488
Parse tree node for SHOW MASTER STATUS statement.
Definition: parse_tree_nodes.h:3497
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2706
Sql_cmd_show_master_status m_sql_cmd
Definition: parse_tree_nodes.h:3505
PT_show_master_status(const POS &pos)
Definition: parse_tree_nodes.h:3499
Parse tree node for SHOW OPEN TABLES statement.
Definition: parse_tree_nodes.h:3510
PT_show_open_tables(const POS &pos, char *opt_db, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3512
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2713
Sql_cmd_show_open_tables m_sql_cmd
Definition: parse_tree_nodes.h:3520
Parse tree node for SHOW PLUGINS statement.
Definition: parse_tree_nodes.h:3525
Sql_cmd_show_plugins m_sql_cmd
Definition: parse_tree_nodes.h:3532
PT_show_plugins(const POS &pos)
Definition: parse_tree_nodes.h:3527
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2731
Parse tree node for SHOW PRIVILEGES statement.
Definition: parse_tree_nodes.h:3537
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2740
PT_show_privileges(const POS &pos)
Definition: parse_tree_nodes.h:3539
Sql_cmd_show_privileges m_sql_cmd
Definition: parse_tree_nodes.h:3545
Parse tree node for SHOW FUNCTION CODE statement.
Definition: parse_tree_nodes.h:3550
PT_show_procedure_code(const POS &pos, const sp_name *procedure_name)
Definition: parse_tree_nodes.h:3552
Parse tree node for SHOW PROCESSLIST statement.
Definition: parse_tree_nodes.h:3558
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2747
Sql_cmd_show_processlist m_sql_cmd
Definition: parse_tree_nodes.h:3566
PT_show_processlist(const POS &pos, bool verbose)
Definition: parse_tree_nodes.h:3560
Parse tree node for SHOW PROFILE statement.
Definition: parse_tree_nodes.h:3571
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2770
uint m_opt_profile_options
Definition: parse_tree_nodes.h:3584
Sql_cmd_show_profile m_sql_cmd
Definition: parse_tree_nodes.h:3588
PT_show_profile(const POS &pos, uint opt_profile_options=0, my_thread_id opt_query_id=0, PT_limit_clause *opt_limit_clause=nullptr)
Definition: parse_tree_nodes.h:3573
my_thread_id m_opt_query_id
Definition: parse_tree_nodes.h:3585
PT_limit_clause *const m_opt_limit_clause
Definition: parse_tree_nodes.h:3586
Parse tree node for SHOW PROFILES statement.
Definition: parse_tree_nodes.h:3593
PT_show_profiles(const POS &pos)
Definition: parse_tree_nodes.h:3595
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2785
Sql_cmd_show_profiles m_sql_cmd
Definition: parse_tree_nodes.h:3600
Parse tree node for SHOW RELAYLOG EVENTS statement.
Definition: parse_tree_nodes.h:3605
Sql_cmd_show_relaylog_events m_sql_cmd
Definition: parse_tree_nodes.h:3623
PT_show_relaylog_events(const POS &pos, const LEX_STRING opt_log_file_name={}, PT_limit_clause *opt_limit_clause=nullptr, LEX_CSTRING opt_channel_name={})
Definition: parse_tree_nodes.h:3607
PT_limit_clause *const m_opt_limit_clause
Definition: parse_tree_nodes.h:3620
const LEX_STRING m_opt_log_file_name
Definition: parse_tree_nodes.h:3619
const LEX_CSTRING m_opt_channel_name
Definition: parse_tree_nodes.h:3621
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2792
Parse tree node for SHOW REPLICA STATUS statement.
Definition: parse_tree_nodes.h:3641
Sql_cmd_show_replica_status m_sql_cmd
Definition: parse_tree_nodes.h:3652
const LEX_CSTRING m_opt_channel_name
Definition: parse_tree_nodes.h:3650
PT_show_replica_status(const POS &pos, LEX_CSTRING opt_channel_name={})
Definition: parse_tree_nodes.h:3643
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2812
Parse tree node for SHOW REPLICAS statement.
Definition: parse_tree_nodes.h:3628
Sql_cmd_show_replicas m_sql_cmd
Definition: parse_tree_nodes.h:3636
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2805
PT_show_replicas(const POS &pos)
Definition: parse_tree_nodes.h:3630
Parse tree node for SHOW FUNCTION/PROCEDURE CODE statements.
Definition: parse_tree_nodes.h:3100
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2763
Sql_cmd_show_routine_code m_sql_cmd
Definition: parse_tree_nodes.h:3109
PT_show_routine_code(const POS &pos, enum_sql_command sql_command, const sp_name *routine_name)
Definition: parse_tree_nodes.h:3102
Base class for Parse tree nodes of SHOW statements with schema parameter.
Definition: parse_tree_nodes.h:3065
char * m_opt_db
Optional schema name in FROM/IN clause.
Definition: parse_tree_nodes.h:3076
PT_show_schema_base(const POS &pos, enum_sql_command sql_command, char *opt_db, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3067
Item * m_where
Definition: parse_tree_nodes.h:3079
LEX_STRING m_wild
Wild or where clause used in the statement.
Definition: parse_tree_nodes.h:3078
Parse tree node for SHOW STATUS FUNCTION statement.
Definition: parse_tree_nodes.h:3676
Sql_cmd_show_status_func m_sql_cmd
Definition: parse_tree_nodes.h:3684
PT_show_status_func(const POS &pos, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3678
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2837
Parse tree node for SHOW STATUS PROCEDURE statement.
Definition: parse_tree_nodes.h:3689
PT_show_status_proc(const POS &pos, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3691
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2850
Sql_cmd_show_status_proc m_sql_cmd
Definition: parse_tree_nodes.h:3697
Parse tree node for SHOW STATUS statement.
Definition: parse_tree_nodes.h:3657
enum_var_type m_var_type
Definition: parse_tree_nodes.h:3671
Sql_cmd_show_status m_sql_cmd
Definition: parse_tree_nodes.h:3669
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2821
PT_show_status(const POS &pos, enum_var_type var_type, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3659
Base class for Parse tree nodes of SHOW COLUMNS/SHOW INDEX statements.
Definition: parse_tree_nodes.h:3084
bool make_table_base_cmd(THD *thd, bool *temporary)
Definition: parse_tree_nodes.cc:2356
PT_show_table_base(const POS &pos, enum_sql_command sql_command, Table_ident *table_ident, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3086
Table_ident * m_table_ident
Table used in the statement.
Definition: parse_tree_nodes.h:3095
Parse tree node for SHOW TABLE STATUS statement.
Definition: parse_tree_nodes.h:3702
Sql_cmd_show_table_status m_sql_cmd
Definition: parse_tree_nodes.h:3712
PT_show_table_status(const POS &pos, char *opt_db, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3704
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2863
Parse tree node for SHOW TABLES statement.
Definition: parse_tree_nodes.h:3717
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2878
Show_cmd_type m_show_cmd_type
Definition: parse_tree_nodes.h:3729
PT_show_tables(const POS &pos, Show_cmd_type show_cmd_type, char *opt_db, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3719
Sql_cmd_show_tables m_sql_cmd
Definition: parse_tree_nodes.h:3727
Parse tree node for SHOW TRIGGERS statement.
Definition: parse_tree_nodes.h:3734
PT_show_triggers(const POS &pos, bool full, char *opt_db, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3736
bool m_full
Definition: parse_tree_nodes.h:3746
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2894
Sql_cmd_show_triggers m_sql_cmd
Definition: parse_tree_nodes.h:3744
Parse tree node for SHOW VARIABLES statement.
Definition: parse_tree_nodes.h:3751
enum_var_type m_var_type
Definition: parse_tree_nodes.h:3765
Sql_cmd_show_variables m_sql_cmd
Definition: parse_tree_nodes.h:3763
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2909
PT_show_variables(const POS &pos, enum_var_type var_type, const LEX_STRING &wild, Item *where)
Definition: parse_tree_nodes.h:3753
Parse tree node for SHOW WARNINGS statement.
Definition: parse_tree_nodes.h:3770
PT_limit_clause *const m_opt_limit_clause
Definition: parse_tree_nodes.h:3779
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:2925
Sql_cmd_show_warnings m_sql_cmd
Definition: parse_tree_nodes.h:3781
PT_show_warnings(const POS &pos, PT_limit_clause *opt_limit_clause=nullptr)
Definition: parse_tree_nodes.h:3772
Top-level node for the SHUTDOWN statement.
Definition: parse_tree_nodes.h:1950
Sql_cmd * make_cmd(THD *) override
Definition: parse_tree_nodes.h:1954
Sql_cmd_shutdown sql_cmd
Definition: parse_tree_nodes.h:1951
Definition: parse_tree_nodes.h:1089
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3895
POS head_pos
Definition: parse_tree_nodes.h:1093
PT_start_option_value_list_following_option_type_eq(PT_set_scoped_system_variable *head_arg, const POS &head_pos_arg, PT_option_value_list_head *opt_tail_arg)
Definition: parse_tree_nodes.h:1097
PT_start_option_value_list_following_option_type super
Definition: parse_tree_nodes.h:1090
PT_option_value_list_head * opt_tail
Definition: parse_tree_nodes.h:1094
PT_set_scoped_system_variable * head
Definition: parse_tree_nodes.h:1092
PT_start_option_value_list_following_option_type_transaction(PT_transaction_characteristics *characteristics_arg, const POS &characteristics_pos_arg)
Definition: parse_tree_nodes.h:1113
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3909
PT_transaction_characteristics * characteristics
Definition: parse_tree_nodes.h:1109
PT_start_option_value_list_following_option_type super
Definition: parse_tree_nodes.h:1107
POS characteristics_pos
Definition: parse_tree_nodes.h:1110
Definition: parse_tree_nodes.h:1086
Definition: parse_tree_nodes.h:1007
PT_start_option_value_list super
Definition: parse_tree_nodes.h:1008
POS head_pos
Definition: parse_tree_nodes.h:1011
PT_start_option_value_list_no_type(PT_option_value_no_option_type *head_arg, const POS &head_pos_arg, PT_option_value_list_head *tail_arg)
Definition: parse_tree_nodes.h:1015
PT_option_value_list_head * tail
Definition: parse_tree_nodes.h:1012
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3850
PT_option_value_no_option_type * head
Definition: parse_tree_nodes.h:1010
Definition: parse_tree_nodes.h:1070
PT_transaction_characteristics * characteristics
Definition: parse_tree_nodes.h:1073
PT_start_option_value_list super
Definition: parse_tree_nodes.h:1071
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3881
POS end_pos
Definition: parse_tree_nodes.h:1074
PT_start_option_value_list_transaction(PT_transaction_characteristics *characteristics_arg, const POS &end_pos_arg)
Definition: parse_tree_nodes.h:1077
Definition: parse_tree_nodes.h:1122
PT_start_option_value_list super
Definition: parse_tree_nodes.h:1123
PT_start_option_value_list_following_option_type * list
Definition: parse_tree_nodes.h:1126
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3921
PT_start_option_value_list_type(enum_var_type type_arg, PT_start_option_value_list_following_option_type *list_arg)
Definition: parse_tree_nodes.h:1129
enum_var_type type
Definition: parse_tree_nodes.h:1125
Definition: parse_tree_nodes.h:902
Definition: parse_tree_nodes.h:2977
const Mem_root_array< LEX_CSTRING > * columns
Definition: parse_tree_nodes.h:2979
PT_static_privilege(const POS &pos, uint grant, const Mem_root_array< LEX_CSTRING > *columns=nullptr)
Definition: parse_tree_nodes.h:2982
const uint grant
Definition: parse_tree_nodes.h:2978
Privilege * get_privilege(THD *thd) override
Definition: parse_tree_nodes.cc:4368
Definition: parse_tree_nodes.h:1609
Parse_tree_node super
Definition: parse_tree_nodes.h:1610
PT_query_expression_body * qe
Definition: parse_tree_nodes.h:1612
bool m_is_derived_table
Definition: parse_tree_nodes.h:1617
Query_block * value()
Definition: parse_tree_nodes.h:1627
PT_subquery(POS p, PT_query_expression_body *query_expression)
Definition: parse_tree_nodes.h:1619
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:4115
Query_block * query_block
Definition: parse_tree_nodes.h:1614
POS pos
Definition: parse_tree_nodes.h:1613
Definition: parse_tree_nodes.h:2266
Definition: parse_tree_nodes.h:172
~PT_table_ddl_stmt_base() override=0
Alter_info m_alter_info
Definition: parse_tree_nodes.h:180
PT_table_ddl_stmt_base(MEM_ROOT *mem_root)
Definition: parse_tree_nodes.h:174
Base class for column/constraint definitions in CREATE TABLE.
Definition: parse_tree_nodes.h:2264
Definition: parse_tree_nodes.h:451
Item * m_path
Definition: parse_tree_nodes.h:467
const LEX_STRING m_table_alias
Definition: parse_tree_nodes.h:469
Item * m_expr
Definition: parse_tree_nodes.h:466
PT_table_reference super
Definition: parse_tree_nodes.h:452
Mem_root_array< PT_json_table_column * > * m_nested_columns
Definition: parse_tree_nodes.h:468
PT_table_factor_function(Item *expr, Item *path, Mem_root_array< PT_json_table_column * > *nested_cols, const LEX_STRING &table_alias)
Definition: parse_tree_nodes.h:455
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:1274
Definition: parse_tree_nodes.h:503
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:1368
PT_table_factor_joined_table(PT_joined_table *joined_table)
Definition: parse_tree_nodes.h:507
PT_joined_table * m_joined_table
Definition: parse_tree_nodes.h:513
PT_table_reference super
Definition: parse_tree_nodes.h:504
Definition: parse_tree_nodes.h:425
const char *const opt_table_alias
Definition: parse_tree_nodes.h:430
Table_ident * table_ident
Definition: parse_tree_nodes.h:428
PT_table_reference super
Definition: parse_tree_nodes.h:426
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3647
PT_table_factor_table_ident(Table_ident *table_ident_arg, List< String > *opt_use_partition_arg, const LEX_CSTRING &opt_table_alias_arg, List< Index_hint > *opt_key_definition_arg)
Definition: parse_tree_nodes.h:434
List< Index_hint > * opt_key_definition
Definition: parse_tree_nodes.h:431
List< String > * opt_use_partition
Definition: parse_tree_nodes.h:429
Definition: parse_tree_nodes.h:684
void print_table_ident(const THD *thd, const Table_ident *ident, String *s)
Definition: parse_tree_nodes.cc:3725
Table_ident_list m_tables
Definition: parse_tree_nodes.h:703
bool raise_error(THD *thd, const Table_ident *name, int error)
Definition: parse_tree_nodes.cc:3735
bool set_lock_for_tables(Parse_context *pc) override
Definition: parse_tree_nodes.cc:2335
PT_table_locking_clause(Lock_strength strength, Mem_root_array_YY< Table_ident * > tables, Locked_row_action action)
Definition: parse_tree_nodes.h:688
Mem_root_array_YY< Table_ident * > Table_ident_list
Definition: parse_tree_nodes.h:686
Definition: parse_tree_nodes.h:472
PT_table_reference super
Definition: parse_tree_nodes.h:473
PT_table_reference_list_parens(const Mem_root_array_YY< PT_table_reference * > table_list)
Definition: parse_tree_nodes.h:478
Mem_root_array_YY< PT_table_reference * > table_list
Definition: parse_tree_nodes.h:475
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3661
Definition: parse_tree_nodes.h:406
Table_ref * m_table_ref
Definition: parse_tree_nodes.h:408
virtual PT_joined_table * add_cross_join(PT_cross_join *cj)
Lets us build a parse tree top-down, which is necessary due to the context-dependent nature of the jo...
Definition: parse_tree_nodes.cc:147
Definition: parse_tree_nodes.h:1430
PT_insert_values_list *const row_value_list
Definition: parse_tree_nodes.h:1433
bool is_set_operation() const override
Definition: parse_tree_nodes.h:1444
bool has_into_clause() const override
Definition: parse_tree_nodes.h:1441
PT_insert_values_list * get_row_value_list() const override
Definition: parse_tree_nodes.h:1450
bool can_absorb_order_and_limit(bool, bool) const override
True if this query expression can absorb an extraneous order by/limit clause.
Definition: parse_tree_nodes.h:1446
bool has_trailing_into_clause() const override
Definition: parse_tree_nodes.h:1442
PT_table_value_constructor(PT_insert_values_list *row_value_list_arg)
Definition: parse_tree_nodes.h:1436
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:1226
bool is_table_value_constructor() const override
Definition: parse_tree_nodes.h:1448
PT_query_primary super
Definition: parse_tree_nodes.h:1431
A template for options that set HA_CREATE_INFO::table_options and also records if the option was expl...
Definition: parse_tree_nodes.h:2502
PT_create_table_option super
Definition: parse_tree_nodes.h:2503
const Ternary_option value
Definition: parse_tree_nodes.h:2505
PT_ternary_create_table_option(Ternary_option value)
Definition: parse_tree_nodes.h:2508
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:2511
A template for options that set a single property in HA_CREATE_INFO, and also records if the option w...
Definition: parse_tree_nodes.h:2365
PT_traceable_create_table_option(Option_type value)
Definition: parse_tree_nodes.h:2371
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:2373
const Option_type value
Definition: parse_tree_nodes.h:2368
PT_create_table_option super
Definition: parse_tree_nodes.h:2366
A template for options that set a single property in a KEY_CREATE_INFO, and also records if the optio...
Definition: parse_tree_nodes.h:2192
bool contextualize(Table_ddl_parse_context *pc) override
Definition: parse_tree_nodes.h:2197
PT_traceable_index_option(Option_type option_value)
Definition: parse_tree_nodes.h:2194
Option_type m_option_value
Definition: parse_tree_nodes.h:2204
Definition: parse_tree_nodes.h:1036
PT_transaction_characteristic super
Definition: parse_tree_nodes.h:1037
PT_transaction_access_mode(bool is_read_only)
Definition: parse_tree_nodes.h:1040
Definition: parse_tree_nodes.h:1023
int32 value
Definition: parse_tree_nodes.h:1027
PT_transaction_characteristic(const char *name_arg, int32 value_arg)
Definition: parse_tree_nodes.h:1030
Parse_tree_node super
Definition: parse_tree_nodes.h:1024
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:3862
const char * name
Definition: parse_tree_nodes.h:1026
Definition: parse_tree_nodes.h:1052
PT_transaction_characteristic * opt_tail
Definition: parse_tree_nodes.h:1056
PT_transaction_characteristics(PT_transaction_characteristic *head_arg, PT_transaction_characteristic *opt_tail_arg)
Definition: parse_tree_nodes.h:1059
PT_transaction_characteristic * head
Definition: parse_tree_nodes.h:1055
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.h:1063
Parse_tree_node super
Definition: parse_tree_nodes.h:1053
Definition: parse_tree_nodes.h:4740
Sql_cmd_truncate_table m_cmd_truncate_table
Definition: parse_tree_nodes.h:4749
Table_ident * m_table
Definition: parse_tree_nodes.h:4747
PT_truncate_table_stmt(Table_ident *table)
Definition: parse_tree_nodes.h:4742
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:3262
Base class for all column type nodes.
Definition: parse_tree_column_attrs.h:531
Definition: parse_tree_nodes.h:1676
PT_set_operation(PT_query_expression_body *lhs, bool is_distinct, PT_query_expression_body *rhs, bool is_rhs_in_parentheses=false)
Definition: parse_tree_nodes.h:1634
enum Setop_type type() const override
Definition: parse_tree_nodes.h:1682
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:1710
Top-level node for the UPDATE statement.
Definition: parse_tree_nodes.h:1817
PT_with_clause * m_with_clause
Definition: parse_tree_nodes.h:1818
Item * opt_limit_clause
Definition: parse_tree_nodes.h:1827
Sql_cmd * make_cmd(THD *thd) override
Definition: parse_tree_nodes.cc:915
Mem_root_array_YY< PT_table_reference * > join_table_list
Definition: parse_tree_nodes.h:1822
PT_hint_list * opt_hints
Definition: parse_tree_nodes.h:1819
bool opt_ignore
Definition: parse_tree_nodes.h:1821
PT_item_list * value_list
Definition: parse_tree_nodes.h:1824
thr_lock_type opt_low_priority
Definition: parse_tree_nodes.h:1820
PT_update(PT_with_clause *with_clause_arg, PT_hint_list *opt_hints_arg, thr_lock_type opt_low_priority_arg, bool opt_ignore_arg, const Mem_root_array_YY< PT_table_reference * > &join_table_list_arg, PT_item_list *column_list_arg, PT_item_list *value_list_arg, Item *opt_where_clause_arg, PT_order *opt_order_clause_arg, Item *opt_limit_clause_arg)
Definition: parse_tree_nodes.h:1830
PT_item_list * column_list
Definition: parse_tree_nodes.h:1823
PT_order * opt_order_clause
Definition: parse_tree_nodes.h:1826
Item * opt_where_clause
Definition: parse_tree_nodes.h:1825
Parse tree node for a list of window definitions corresponding to a <window clause> in SQL 2003.
Definition: parse_tree_window.h:60
Represents the WITH clause: WITH [...], [...] SELECT ..., ^^^^^^^^^^^^^^^^^.
Definition: parse_tree_nodes.h:337
const Table_ref * m_most_inner_in_parsing
The innermost CTE reference which we're parsing at the moment.
Definition: parse_tree_nodes.h:378
PT_with_clause(const PT_with_list *l, bool r)
Definition: parse_tree_nodes.h:341
void print(const THD *thd, String *str, enum_query_type query_type)
Definition: parse_tree_nodes.cc:1964
void leave_parsing_definition(const Table_ref *old)
Definition: parse_tree_nodes.h:364
Parse_tree_node super
Definition: parse_tree_nodes.h:338
const PT_with_list *const m_list
All CTEs of this clause.
Definition: parse_tree_nodes.h:371
const Table_ref * enter_parsing_definition(Table_ref *tl)
Call this to record in the WITH clause that we are contextualizing the CTE definition inserted in tab...
Definition: parse_tree_nodes.h:359
bool contextualize(Parse_context *pc) override
Definition: parse_tree_nodes.cc:1957
const bool m_recursive
True if the user has specified the RECURSIVE keyword.
Definition: parse_tree_nodes.h:373
Represents the WITH list.
Definition: parse_tree_nodes.h:317
Mem_root_array< PT_common_table_expr * > m_elements
Definition: parse_tree_nodes.h:329
PT_with_list(MEM_ROOT *mem_root)
Definition: parse_tree_nodes.h:322
Parse_tree_node super
Definition: parse_tree_nodes.h:318
bool push_back(PT_common_table_expr *el)
Definition: parse_tree_nodes.cc:1928
const Mem_root_array< PT_common_table_expr * > & elements() const
Definition: parse_tree_nodes.h:324
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:139
virtual bool contextualize(Context *pc)
Do all context-sensitive things and mark the node as contextualized.
Definition: parse_tree_node_base.h:187
bool is_contextualized() const
Definition: parse_tree_node_base.h:176
void error(Context *pc, const POS &pos) const
syntax_error() function replacement for deferred reporting of syntax errors
Definition: parse_tree_node_base.h:206
Base class for all top-level nodes of SQL statements.
Definition: parse_tree_nodes.h:160
Parse_tree_root()=default
void operator=(const Parse_tree_root &)=delete
Parse_tree_root(const Parse_tree_root &)=delete
virtual ~Parse_tree_root()=default
virtual Sql_cmd * make_cmd(THD *thd)=0
This class represents a query block, aka a query specification, which is a query consisting of a SELE...
Definition: sql_lex.h:1156
bool clear_correlated_query_blocks()
Empties all correlated query blocks defined within the query expression; that is, correlated CTEs def...
Definition: sql_union.cc:1621
Common base class for n-ary set operations, including unary.
Definition: query_term.h:402
Simple intrusive linked list.
Definition: sql_list.h:46
Class to represent the check constraint specifications obtained from the SQL statement parse.
Definition: sql_check_constraint.h:43
Item * check_expr
Check constraint expression.
Definition: sql_check_constraint.h:80
LEX_STRING column_name
Name of the column if check clause is defined at the column level.
Definition: sql_check_constraint.h:83
bool is_enforced
Check constraint state (enforced/not enforced)
Definition: sql_check_constraint.h:86
LEX_STRING name
Name of the check constraint.
Definition: sql_check_constraint.h:77
Definition: sql_admin.h:379
Class that represents the ALTER TABLE t1 ANALYZE PARTITION p statement.
Definition: sql_partition_admin.h:53
Class that represents the ALTER TABLE t1 CHECK PARTITION p statement.
Definition: sql_partition_admin.h:75
Class that represents the ALTER TABLE t1 EXCHANGE PARTITION p WITH TABLE t2 statement.
Definition: sql_partition_admin.h:39
Class that represents the ALTER TABLE t1 OPTIMIZE PARTITION p statement.
Definition: sql_partition_admin.h:91
Class that represents the ALTER TABLE t1 REPAIR PARTITION p statement.
Definition: sql_partition_admin.h:106
Class that represents the ALTER TABLE t1 TRUNCATE PARTITION p statement.
Definition: sql_partition_admin.h:121
Represents the generic ALTER TABLE statement.
Definition: sql_alter.h:616
Sql_cmd_alter_user_default_role ALTER USER ... DEFAULT ROLE ... statement.
Definition: sql_admin.h:338
Histogram_command
Specifies which (if any) of the commands UPDATE HISTOGRAM or DROP HISTOGRAM that is specified after A...
Definition: sql_admin.h:70
Sql_cmd_create_role represetns the CREATE ROLE ... statement.
Definition: sql_admin.h:258
Definition: sql_cmd_srs.h:56
Represents ALTER TABLE IMPORT/DISCARD TABLESPACE statements.
Definition: sql_alter.h:627
Sql_cmd_drop_role represetns the DROP ROLE ... statement.
Definition: sql_admin.h:278
Definition: sql_cmd_srs.h:110
Definition: opt_explain.h:178
Definition: sql_load.h:47
Sql_cmd_restart_server represents the RESTART server statement.
Definition: sql_restart_server.h:41
Represents ALTER TABLE SECONDARY_LOAD/SECONDARY_UNLOAD statements.
Definition: sql_alter.h:640
Sql_cmd_set_role represetns the SET ROLE ... statement.
Definition: sql_admin.h:230
Following are all subclasses of class Sql_cmd_show, in alphabetical order.
Definition: sql_show.h:236
Represents SHOW BINARY LOGS statement.
Definition: sql_show.h:251
Represents SHOW CHARACTER SET statement.
Definition: sql_show.h:260
Represents SHOW COLLATION statement.
Definition: sql_show.h:267
Represents SHOW COLUMNS statement.
Definition: sql_show.h:274
Represents SHOW CREATE DATABASE statement.
Definition: sql_show.h:281
Represents SHOW CREATE EVENT statement.
Definition: sql_show.h:290
Represents SHOW CREATE FUNCTION statement.
Definition: sql_show.h:299
Represents SHOW CREATE PROCEDURE statement.
Definition: sql_show.h:309
Represents SHOW CREATE TABLE/VIEW statement.
Definition: sql_show.h:319
Represents SHOW CREATE TRIGGER statement.
Definition: sql_show.h:335
Represents SHOW CREATE USER statement.
Definition: sql_show.h:345
Represents SHOW DATABASES statement.
Definition: sql_show.h:354
Represents SHOW ENGINE LOGS statement.
Definition: sql_show.h:362
Represents SHOW ENGINE MUTEX statement.
Definition: sql_show.h:371
Represents SHOW ENGINE STATUS statement.
Definition: sql_show.h:380
Represents SHOW STORAGE ENGINES statement.
Definition: sql_show.h:390
Represents SHOW ERRORS statement.
Definition: sql_show.h:397
Represents SHOW EVENTS statement.
Definition: sql_show.h:407
Represents SHOW GRANTS statement.
Definition: sql_show.h:417
Represents the SHOW INDEX statement.
Definition: sql_show.h:435
Represents SHOW MASTER STATUS statement.
Definition: sql_show.h:442
Represents SHOW OPEN TABLES statement.
Definition: sql_show.h:451
Represents SHOW PLUGINS statement.
Definition: sql_show.h:458
Represents SHOW PRIVILEGES statement.
Definition: sql_show.h:465
Represents SHOW PROCESSLIST statement.
Definition: sql_show.h:473
Represents SHOW PROFILE statement.
Definition: sql_show.h:493
Represents SHOW PROFILES statement.
Definition: sql_show.h:500
Represents SHOW RELAYLOG EVENTS statement.
Definition: sql_show.h:508
Represents SHOW REPLICA STATUS statement.
Definition: sql_show.h:532
Represents SHOW REPLICAS statement.
Definition: sql_show.h:523
Represents SHOW FUNCTION CODE and SHOW PROCEDURE CODE statements.
Definition: sql_show.h:220
Represents SHOW STATUS FUNCTION statement.
Definition: sql_show.h:549
Represents SHOW STATUS PROCEDURE statement.
Definition: sql_show.h:556
Represents SHOW STATUS statement.
Definition: sql_show.h:541
Represents SHOW TABLE STATUS statement.
Definition: sql_show.h:563
Represents SHOW TABLES statement.
Definition: sql_show.h:571
Represents SHOW TRIGGERS statement.
Definition: sql_show.h:578
Represents SHOW VARIABLES statement.
Definition: sql_show.h:585
Represents SHOW WARNINGS statement.
Definition: sql_show.h:592
Sql_cmd_shutdown represents the SHUTDOWN statement.
Definition: sql_admin.h:219
Sql_cmd_truncate_table represents the TRUNCATE statement.
Definition: sql_truncate.h:44
Representation of an SQL command.
Definition: sql_cmd.h:65
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:168
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:34
Definition: sql_lex.h:294
Definition: table.h:2791
Represents the (explicit) window of a SQL 2003 section 7.11 <window clause>, or the implicit (inlined...
Definition: window.h:105
A (partial) implementation of std::deque allocating its blocks on a MEM_ROOT.
Definition: mem_root_deque.h:110
Definition: partition_info.h:209
uint num_parts
Definition: partition_info.h:370
Sql_cmd_alter_resource_group represents ALTER RESOURCE GROUP statement.
Definition: resource_group_sql_cmd.h:77
Sql_cmd_create_resource_group represents CREATE RESOURCE GROUP statement.
Definition: resource_group_sql_cmd.h:46
Sql_cmd_drop_resource_group represents DROP RESOURCE GROUP statement.
Definition: resource_group_sql_cmd.h:111
Sql_cmd_set_resource_group represents SET RESOURCE GROUP statement.
Definition: resource_group_sql_cmd.h:133
sp_head represents one instance of a stored program.
Definition: sp_head.h:380
Definition: sp_head.h:120
Used to hold information about file and file structure in exchange via non-DB file (....
Definition: sql_exchange.h:79
Field_separators field
Definition: sql_exchange.h:81
const CHARSET_INFO * cs
Definition: sql_exchange.h:87
Line_separators line
Definition: sql_exchange.h:82
static MEM_ROOT mem_root
Definition: client_plugin.cc:110
const char * p
Definition: ctype-mb.cc:1237
enum_query_type
Query type constants (usable as bitmap flags).
Definition: enum_query_type.h:31
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:222
void my_error(int nr, myf MyFlags,...)
Fill in and print a previously registered error message.
Definition: my_error.cc:216
bool make_subquery_node(THD *thd, PT_subquery **node)
Definition: sql_parse.cc:5708
bool lookup(Table_ref *tl, PT_common_table_expr **found)
Looks up a table reference into the list of CTEs.
Definition: sql_parse.cc:5808
bool match_table_ref(Table_ref *tl, bool in_self, bool *found)
Definition: sql_parse.cc:5889
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::avg_row_length), HA_CREATE_USED_AVG_ROW_LENGTH > PT_create_avg_row_length_option
Node for the AVG_ROW_LENGTH_ROWS [=] <integer> table option.
Definition: parse_tree_nodes.h:2408
PT_ternary_create_table_option< HA_CREATE_USED_PACK_KEYS, 0, HA_OPTION_PACK_KEYS, HA_OPTION_NO_PACK_KEYS > PT_create_pack_keys_option
Node for the PACK_KEYS [=] 1|0|DEFAULT table option.
Definition: parse_tree_nodes.h:2546
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::auto_increment_value), HA_CREATE_USED_AUTO > PT_create_auto_increment_option
Node for the AUTO_INCREMENT [=] <integer> table option.
Definition: parse_tree_nodes.h:2453
PT_bool_create_table_option< HA_CREATE_USED_CHECKSUM, HA_OPTION_CHECKSUM, HA_OPTION_NO_CHECKSUM > PT_create_checksum_option
Node for the CHECKSUM|TABLE_CHECKSUM [=] 0|<not 0> table option.
Definition: parse_tree_nodes.h:2601
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::compress), HA_CREATE_USED_COMPRESS > PT_create_compress_option
Node for the COMPRESSION [=] <string> table option.
Definition: parse_tree_nodes.h:2435
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::encrypt_type), HA_CREATE_USED_ENCRYPT > PT_create_encryption_option
Node for the ENGRYPTION [=] <string> table option.
Definition: parse_tree_nodes.h:2444
PT_ternary_create_table_option< HA_CREATE_USED_STATS_PERSISTENT, 0, HA_OPTION_STATS_PERSISTENT, HA_OPTION_NO_STATS_PERSISTENT > PT_create_stats_persistent_option
Node for the STATS_PERSISTENT [=] 1|0|DEFAULT table option.
Definition: parse_tree_nodes.h:2563
PT_bool_create_table_option< HA_CREATE_USED_DELAY_KEY_WRITE, HA_OPTION_DELAY_KEY_WRITE, HA_OPTION_NO_DELAY_KEY_WRITE > PT_create_delay_key_write_option
Node for the DELAY_KEY_WRITE [=] 0|<not 0> table option.
Definition: parse_tree_nodes.h:2616
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::comment), HA_CREATE_USED_COMMENT > PT_create_commen_option
Node for the COMMENT [=] <string> table option.
Definition: parse_tree_nodes.h:2426
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::max_rows), HA_CREATE_USED_MAX_ROWS > PT_create_max_rows_option
Node for the MAX_ROWS [=] <integer> table option.
Definition: parse_tree_nodes.h:2390
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::min_rows), HA_CREATE_USED_MIN_ROWS > PT_create_min_rows_option
Node for the MIN_ROWS [=] <integer> table option.
Definition: parse_tree_nodes.h:2399
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::password), HA_CREATE_USED_PASSWORD > PT_create_password_option
Node for the PASSWORD [=] <string> table option.
Definition: parse_tree_nodes.h:2417
static int flags[50]
Definition: hp_test1.cc:40
static void start(mysql_harness::PluginFuncEnv *env)
Definition: http_auth_backend_plugin.cc:177
fk_match_opt
Definition: key_spec.h:58
enum_order
Definition: key_spec.h:65
@ ORDER_NOT_RELEVANT
Definition: key_spec.h:65
@ ORDER_ASC
Definition: key_spec.h:65
@ ORDER_DESC
Definition: key_spec.h:65
keytype
Definition: key_spec.h:40
fk_option
Definition: key_spec.h:49
constexpr const LEX_STRING NULL_STR
Definition: lex_string.h:46
#define comment
Definition: lexyy.cc:959
#define STRING_WITH_LEN(X)
Definition: m_string.h:315
This file follows Google coding style, except for the name MEM_ROOT (which is kept for historical rea...
std::unique_ptr< T, Destroy_only< T > > unique_ptr_destroy_only
std::unique_ptr, but only destroying.
Definition: my_alloc.h:489
This file includes constants used by all storage engines.
#define HA_OPTION_NO_DELAY_KEY_WRITE
DELAY_KEY_WRITE=0 option was specified.
Definition: my_base.h:719
#define HA_OPTION_NO_PACK_KEYS
PACK_KEYS=0 option was specified.
Definition: my_base.h:662
#define HA_OPTION_CHECKSUM
CHECKSUM=1 option was specified.
Definition: my_base.h:647
#define HA_OPTION_NO_CHECKSUM
CHECKSUM=0 option was specified.
Definition: my_base.h:714
#define HA_OPTION_DELAY_KEY_WRITE
DELAY_KEY_WRITE=1 option was specified.
Definition: my_base.h:655
ha_key_alg
Definition: my_base.h:97
#define HA_OPTION_STATS_PERSISTENT
STATS_PERSISTENT=1 has been specified in the SQL command (either CREATE or ALTER TABLE).
Definition: my_base.h:687
ha_storage_media
Definition: my_base.h:115
#define HA_OPTION_PACK_KEYS
PACK_KEYS=1 option was specified.
Definition: my_base.h:615
#define HA_OPTION_NO_STATS_PERSISTENT
STATS_PERSISTENT=0 has been specified in CREATE/ALTER TABLE.
Definition: my_base.h:694
Some useful bit functions.
constexpr bool is_single_bit(IntType bits)
Determine if a single bit is set among some bits.
Definition: my_bit.h:137
Some integer typedefs for easier portability.
unsigned char uchar
Definition: my_inttypes.h:52
#define MYF(v)
Definition: my_inttypes.h:97
int32_t int32
Definition: my_inttypes.h:66
enum_sql_command
Definition: my_sqlcommand.h:46
@ SQLCOM_SHOW_ENGINE_LOGS
Definition: my_sqlcommand.h:64
@ SQLCOM_SHOW_GRANTS
Definition: my_sqlcommand.h:70
@ SQLCOM_SHOW_CREATE_DB
Definition: my_sqlcommand.h:74
@ SQLCOM_SHOW_STATUS_FUNC
Definition: my_sqlcommand.h:145
@ SQLCOM_SHOW_CREATE_FUNC
Definition: my_sqlcommand.h:143
@ SQLCOM_SHOW_SLAVE_HOSTS
Definition: my_sqlcommand.h:120
@ SQLCOM_SHOW_CREATE_TRIGGER
Definition: my_sqlcommand.h:174
@ SQLCOM_SHOW_ENGINE_MUTEX
Definition: my_sqlcommand.h:66
@ SQLCOM_SHOW_PRIVILEGES
Definition: my_sqlcommand.h:129
@ SQLCOM_SHOW_BINLOGS
Definition: my_sqlcommand.h:115
@ SQLCOM_SHOW_BINLOG_EVENTS
Definition: my_sqlcommand.h:123
@ SQLCOM_SHOW_WARNS
Definition: my_sqlcommand.h:125
@ SQLCOM_SHOW_STATUS_PROC
Definition: my_sqlcommand.h:144
@ SQLCOM_SHOW_PLUGINS
Definition: my_sqlcommand.h:165
@ SQLCOM_SHOW_PROFILE
Definition: my_sqlcommand.h:175
@ SQLCOM_SHOW_DATABASES
Definition: my_sqlcommand.h:58
@ SQLCOM_SHOW_CHARSETS
Definition: my_sqlcommand.h:72
@ SQLCOM_SHOW_OPEN_TABLES
Definition: my_sqlcommand.h:116
@ SQLCOM_SHOW_TABLE_STATUS
Definition: my_sqlcommand.h:75
@ SQLCOM_SELECT
Definition: my_sqlcommand.h:47
@ SQLCOM_SHOW_ERRORS
Definition: my_sqlcommand.h:127
@ SQLCOM_SHOW_FIELDS
Definition: my_sqlcommand.h:60
@ SQLCOM_SHOW_CREATE_USER
Definition: my_sqlcommand.h:183
@ SQLCOM_SHOW_STATUS
Definition: my_sqlcommand.h:63
@ SQLCOM_SHOW_ENGINE_STATUS
Definition: my_sqlcommand.h:65
@ SQLCOM_SHOW_EVENTS
Definition: my_sqlcommand.h:173
@ SQLCOM_SHOW_CREATE_PROC
Definition: my_sqlcommand.h:142
@ SQLCOM_SHOW_COLLATIONS
Definition: my_sqlcommand.h:73
@ SQLCOM_SHOW_MASTER_STAT
Definition: my_sqlcommand.h:68
@ SQLCOM_SHOW_PROC_CODE
Definition: my_sqlcommand.h:159
@ SQLCOM_SHOW_FUNC_CODE
Definition: my_sqlcommand.h:160
@ SQLCOM_SHOW_KEYS
Definition: my_sqlcommand.h:61
@ SQLCOM_SHOW_SLAVE_STAT
Definition: my_sqlcommand.h:69
@ SQLCOM_SHOW_TABLES
Definition: my_sqlcommand.h:59
@ SQLCOM_SHOW_VARIABLES
Definition: my_sqlcommand.h:62
@ SQLCOM_SHOW_CREATE_EVENT
Definition: my_sqlcommand.h:172
@ SQLCOM_SHOW_PROCESSLIST
Definition: my_sqlcommand.h:67
@ SQLCOM_SHOW_RELAYLOG_EVENTS
Definition: my_sqlcommand.h:179
@ SQLCOM_SHOW_STORAGE_ENGINES
Definition: my_sqlcommand.h:128
@ SQLCOM_SHOW_TRIGGERS
Definition: my_sqlcommand.h:76
@ SQLCOM_SHOW_CREATE
Definition: my_sqlcommand.h:71
@ SQLCOM_SHOW_PROFILES
Definition: my_sqlcommand.h:176
Common header for many mysys elements.
static my_thread_id thread_id
Definition: my_thr_init.cc:63
uint32 my_thread_id
Definition: my_thread_local.h:34
Interface for low level time utilities.
interval_type
Available interval types used in any statement.
Definition: my_time.h:455
static bool column_names
Definition: mysql.cc:160
char * user
Definition: mysqladmin.cc:60
static bool ignore_errors
Definition: mysqlcheck.cc:61
static uint verbose
Definition: mysqlcheck.cc:65
static char * path
Definition: mysqldump.cc:137
static char * where
Definition: mysqldump.cc:140
static longlong opt_ignore_lines
Definition: mysqlimport.cc:81
static Secondary_engine * secondary_engine
Definition: mysqltest.cc:249
static char * opt_db
Definition: mysqltest.cc:189
const char * collation
Definition: audit_api_message_emit.cc:184
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1057
const std::string charset("charset")
std::string dir
Double write files location.
Definition: buf0dblwr.cc:77
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
Provides atomic access in shared-exclusive modes.
Definition: shared_spin_lock.h:79
static std::string lower(std::string str)
Definition: config_parser.cc:65
Definition: options.cc:49
Type
Definition: resource_group_basic_types.h:33
const char * table_name
Definition: rules_table_service.cc:56
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:192
EXPLAIN <command>.
Surrounding_context
Definition: parse_tree_node_base.h:97
bool contextualize_nodes(Mem_root_array_YY< Node_type * > nodes, Parse_context_type *pc)
Calls contextualize() on every node in the array.
Definition: parse_tree_nodes.h:148
PT_base_index_option * make_index_secondary_engine_attribute(MEM_ROOT *, LEX_CSTRING)
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided ...
Definition: parse_tree_nodes.cc:4807
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::row_type), HA_CREATE_USED_ROW_FORMAT > PT_create_row_format_option
Definition: parse_tree_nodes.h:2457
#define TYPE_AND_REF(x)
Definition: parse_tree_nodes.h:2381
Parse_tree_node_tmpl< Table_ddl_parse_context > Table_ddl_node
Base class for all table DDL (ALTER TABLE and CREATE TABLE) nodes.
Definition: parse_tree_nodes.h:201
decltype(HA_CREATE_INFO::table_options) table_options_t
Definition: parse_tree_nodes.h:2494
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::data_file_name), HA_CREATE_USED_DATADIR > PT_create_data_directory_option
Definition: parse_tree_nodes.h:2466
PT_index_option< ulong, &KEY_CREATE_INFO::block_size > PT_block_size
Definition: parse_tree_nodes.h:2208
PT_alter_tablespace_option_base * make_tablespace_engine_attribute(MEM_ROOT *, LEX_CSTRING)
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided ...
Definition: parse_tree_nodes.cc:4661
PT_set_operation * flatten_equal_set_ops(MEM_ROOT *mem_root, PT_query_expression_body *left, bool is_distinct, PT_query_expression_body *right, bool is_right_in_parentheses)
Flatten set operators at parse time.
Definition: parse_tree_nodes.h:5288
PT_index_option< LEX_CSTRING, &KEY_CREATE_INFO::comment > PT_index_comment
Definition: parse_tree_nodes.h:2210
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::connect_string), HA_CREATE_USED_CONNECTION > PT_create_connection_option
Definition: parse_tree_nodes.h:2478
Mem_root_array_YY< PT_base_index_option * > Index_options
Definition: parse_tree_nodes.h:2207
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::tablespace), HA_CREATE_USED_TABLESPACE > PT_create_tablespace_option
Definition: parse_tree_nodes.h:2474
PT_base_index_option * make_index_engine_attribute(MEM_ROOT *, LEX_CSTRING)
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided ...
Definition: parse_tree_nodes.cc:4787
To * setop_cast(PT_query_expression_body *from, bool is_distinct)
Helper function to imitate dynamic_cast for PT_set_operation hierarchy.
Definition: parse_tree_nodes.h:5259
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::index_file_name), HA_CREATE_USED_INDEXDIR > PT_create_index_directory_option
Definition: parse_tree_nodes.h:2470
PT_index_option< LEX_CSTRING, &KEY_CREATE_INFO::parser_name > PT_fulltext_index_parser_name
Definition: parse_tree_nodes.h:2212
PT_column_attr_base * make_column_engine_attribute(MEM_ROOT *, LEX_CSTRING)
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided ...
Definition: parse_tree_nodes.cc:4728
PT_create_table_option * make_table_engine_attribute(MEM_ROOT *, LEX_CSTRING)
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided ...
Definition: parse_tree_nodes.cc:4682
Parse_tree_node_tmpl< Alter_tablespace_parse_context > PT_alter_tablespace_option_base
Definition: parse_tree_nodes.h:4928
PT_traceable_index_option< ha_key_alg, &KEY_CREATE_INFO::algorithm, &KEY_CREATE_INFO::is_algorithm_explicit > PT_index_type
The data structure (B-tree, Hash, etc) used for an index is called 'index_type' in the manual.
Definition: parse_tree_nodes.h:2225
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::m_implicit_tablespace_autoextend_size), HA_CREATE_USED_AUTOEXTEND_SIZE > PT_create_ts_autoextend_size_option
Definition: parse_tree_nodes.h:2492
PT_column_attr_base * make_column_secondary_engine_attribute(MEM_ROOT *, LEX_CSTRING)
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided ...
Definition: parse_tree_nodes.cc:4758
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::key_block_size), HA_CREATE_USED_KEY_BLOCK_SIZE > PT_create_key_block_size_option
Definition: parse_tree_nodes.h:2482
PT_create_table_option * make_table_secondary_engine_attribute(MEM_ROOT *, LEX_CSTRING)
Factory function which instantiates PT_attribute with suitable parameters, allocates on the provided ...
Definition: parse_tree_nodes.cc:4705
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::m_transactional_ddl), HA_CREATE_USED_START_TRANSACTION > PT_create_start_transaction_option
Definition: parse_tree_nodes.h:2487
PT_index_option< bool, &KEY_CREATE_INFO::is_visible > PT_index_visibility
Definition: parse_tree_nodes.h:2213
PT_traceable_create_table_option< TYPE_AND_REF(HA_CREATE_INFO::merge_insert_method), HA_CREATE_USED_INSERT_METHOD > PT_create_insert_method_option
Definition: parse_tree_nodes.h:2462
olap_type
Definition: parser_yystype.h:179
On_duplicate
Definition: parser_yystype.h:242
Locked_row_action
We will static_cast this one to thr_lock_type.
Definition: parser_yystype.h:213
Lock_strength
Definition: parser_yystype.h:210
PT_joined_table_type
Internally there is no CROSS JOIN join type, as cross joins are just a special case of inner joins wi...
Definition: parser_yystype.h:225
@ JTT_LEFT
Definition: parser_yystype.h:229
@ JTT_STRAIGHT_INNER
Definition: parser_yystype.h:232
@ JTT_NATURAL_LEFT
Definition: parser_yystype.h:234
@ JTT_NATURAL
Definition: parser_yystype.h:228
@ JTT_NATURAL_INNER
Definition: parser_yystype.h:233
@ JTT_NATURAL_RIGHT
Definition: parser_yystype.h:235
@ JTT_STRAIGHT
Definition: parser_yystype.h:227
@ JTT_RIGHT
Definition: parser_yystype.h:230
@ JTT_INNER
Definition: parser_yystype.h:226
Show_cmd_type
Definition: parser_yystype.h:260
Ternary_option
Definition: parser_yystype.h:240
const char * filename
Definition: pfs_example_component_population.cc:67
const mysql_service_registry_t * r
Definition: pfs_example_plugin_employee.cc:86
Query_term_type
This class hierarchy is used to represent SQL structures between <query expression> and <query specif...
Definition: query_term.h:89
required string type
Definition: replication_group_member_actions.proto:34
repeated Action action
Definition: replication_group_member_actions.proto:43
required bool enabled
Definition: replication_group_member_actions.proto:33
"public" interface to sys_var - server configuration variables.
enum_var_type
Definition: set_var.h:90
@ OPT_GLOBAL
Definition: set_var.h:93
@ OPT_SESSION
Definition: set_var.h:92
#define HA_CREATE_USED_COMPRESS
COMPRESSION="zlib|lz4|none" used during table create.
Definition: handler.h:761
#define HA_CREATE_USED_CONNECTION
Definition: handler.h:728
#define HA_CREATE_USED_INSERT_METHOD
Definition: handler.h:713
#define HA_CREATE_USED_PACK_KEYS
Definition: handler.h:717
#define HA_CREATE_USED_DATADIR
Definition: handler.h:720
#define HA_CREATE_USED_KEY_BLOCK_SIZE
Definition: handler.h:729
#define HA_CREATE_USED_INDEXDIR
Definition: handler.h:721
constexpr const uint64_t HA_CREATE_USED_AUTOEXTEND_SIZE
These flags convey that the options AUTOEXTEND_SIZE has been specified in the CREATE TABLE statement.
Definition: handler.h:803
#define HA_CREATE_USED_TABLESPACE
This is set whenever a 'TABLESPACE=...' phrase is used on CREATE TABLE.
Definition: handler.h:758
enum_tx_isolation
Definition: handler.h:3029
#define HA_CREATE_USED_ROW_FORMAT
Definition: handler.h:725
#define HA_CREATE_USED_ENCRYPT
ENCRYPTION="Y" used during table create.
Definition: handler.h:764
#define HA_CREATE_USED_DELAY_KEY_WRITE
Definition: handler.h:724
#define HA_CREATE_USED_MIN_ROWS
Definition: handler.h:714
#define HA_CREATE_USED_PASSWORD
Definition: handler.h:727
constexpr const uint64_t HA_CREATE_USED_START_TRANSACTION
This option is used to convey that the create table should not commit the operation and keep the tran...
Definition: handler.h:787
#define HA_CREATE_USED_COMMENT
Definition: handler.h:726
#define HA_CREATE_USED_MAX_ROWS
Definition: handler.h:715
#define HA_CREATE_USED_CHECKSUM
Definition: handler.h:723
#define HA_CREATE_USED_STATS_PERSISTENT
This is set whenever STATS_PERSISTENT=0|1|default has been specified in CREATE/ALTER TABLE.
Definition: handler.h:739
#define HA_CREATE_USED_AVG_ROW_LENGTH
Definition: handler.h:716
#define HA_CREATE_USED_AUTO
Definition: handler.h:710
alter_instance_action_enum
Definition: sql_admin.h:362
role_enum
Definition: sql_admin.h:225
This file declares the interface of classes Sql_cmd_create_srs and Sql_cmd_drop_srs,...
constexpr const long STACK_MIN_SIZE
Stack reservation.
Definition: sql_const.h:142
enum_filetype
Definition: sql_exchange.h:32
enum_source_type
Definition: sql_exchange.h:30
case opt name
Definition: sslopt-case.h:33
Definition: parse_tree_nodes.h:4920
Alter_tablespace_parse_context(THD *thd)
Definition: parse_tree_nodes.cc:4559
THD *const thd
Definition: parse_tree_nodes.h:4921
MEM_ROOT *const mem_root
Definition: parse_tree_nodes.h:4922
Definition: m_ctype.h:385
Definition: parse_tree_nodes.h:2936
const LEX_STRING ident
Definition: parse_tree_nodes.h:2937
Dynamic_privilege(const LEX_STRING &ident, const Mem_root_array< LEX_CSTRING > *columns_arg)
Definition: parse_tree_nodes.h:2939
Helper for the sql_exchange class.
Definition: sql_exchange.h:53
void merge_field_separators(const Field_separators &s)
Definition: sql_exchange.h:63
uint sql_flags
Definition: handler.h:3634
uint flags
Definition: handler.h:3633
Struct to hold information about the table that should be created.
Definition: handler.h:3045
ulonglong auto_increment_value
Definition: handler.h:3084
bool m_transactional_ddl
Definition: handler.h:3122
enum row_type row_type
Row type of the table definition.
Definition: handler.h:3105
LEX_STRING compress
Algorithm (and possible options) to be used for InnoDB's transparent page compression.
Definition: handler.h:3061
LEX_STRING encrypt_type
This attribute is used for InnoDB's transparent page encryption.
Definition: handler.h:3069
ulong avg_row_length
Definition: handler.h:3086
const char * data_file_name
Definition: handler.h:3079
ulonglong m_implicit_tablespace_autoextend_size
Definition: handler.h:3127
ulong table_options
Definition: handler.h:3085
uint stats_sample_pages
Definition: handler.h:3091
uint merge_insert_method
Definition: handler.h:3108
LEX_STRING connect_string
Definition: handler.h:3049
const char * tablespace
Definition: handler.h:3051
ulonglong max_rows
Definition: handler.h:3082
const char * password
Definition: handler.h:3050
ha_storage_media storage_media
Definition: handler.h:3109
LEX_STRING comment
Definition: handler.h:3052
const char * index_file_name
Definition: handler.h:3080
std::uint32_t key_block_size
Definition: handler.h:3090
ulonglong min_rows
Definition: handler.h:3083
uint64_t used_fields
Definition: handler.h:3087
Definition: table.h:2658
Definition: parser_yystype.h:188
Helper for the sql_exchange class.
Definition: sql_exchange.h:38
void merge_line_separators(const Line_separators &s)
Definition: sql_exchange.h:43
Definition: thr_lock.h:99
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:83
Definition: mysql_lex_string.h:40
const char * str
Definition: mysql_lex_string.h:41
Definition: mysql_lex_string.h:35
char * str
Definition: mysql_lex_string.h:36
Definition: table.h:282
Item * item_initial
The initial ordering expression.
Definition: table.h:292
ORDER * next
Definition: table.h:286
enum_order direction
Definition: table.h:304
bool used_alias
Tells whether this ORDER element was referenced with an alias or with an expression,...
Definition: table.h:313
table_map used
Definition: table.h:325
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:121
THD *const thd
Current thread handler.
Definition: parse_tree_node_base.h:122
MEM_ROOT * mem_root
Current MEM_ROOT.
Definition: parse_tree_node_base.h:123
This class is used for representing both static and dynamic privileges on global as well as table and...
Definition: parse_tree_nodes.h:2918
const Mem_root_array< LEX_CSTRING > * columns
Definition: parse_tree_nodes.h:2922
Privilege(privilege_type type, const Mem_root_array< LEX_CSTRING > *columns)
Definition: parse_tree_nodes.h:2924
privilege_type
Definition: parse_tree_nodes.h:2919
@ STATIC
Definition: parse_tree_nodes.h:2919
@ DYNAMIC
Definition: parse_tree_nodes.h:2919
privilege_type type
Definition: parse_tree_nodes.h:2921
Info on properties that can be set with '–disable_X' and '–disable_X' commands.
Definition: mysqltest.cc:269
Definition: parse_tree_node_base.h:111
Definition: parser_yystype.h:197
Definition: sql_cmd_srs.h:41
Definition: parse_tree_nodes.h:2929
const uint grant
Definition: parse_tree_nodes.h:2930
Static_privilege(uint grant, const Mem_root_array< LEX_CSTRING > *columns_arg)
Definition: parse_tree_nodes.h:2932
Parse context for the table DDL (ALTER TABLE and CREATE TABLE) nodes.
Definition: parse_tree_nodes.h:190
HA_CREATE_INFO *const create_info
Definition: parse_tree_nodes.h:193
Alter_info *const alter_info
Definition: parse_tree_nodes.h:194
Table_ddl_parse_context(THD *thd_arg, Query_block *select_arg, Alter_info *alter_info)
Definition: parse_tree_nodes.cc:139
KEY_CREATE_INFO *const key_create_info
Definition: parse_tree_nodes.h:195
Structure used by parser to store options for tablespace statements and pass them on to Execution cla...
Definition: sql_tablespace.h:43
ulonglong redo_buffer_size
Definition: sql_tablespace.h:46
ulonglong undo_buffer_size
Definition: sql_tablespace.h:45
ulonglong file_block_size
Definition: sql_tablespace.h:50
std::optional< ulonglong > autoextend_size
Definition: sql_tablespace.h:48
uint nodegroup_id
Definition: sql_tablespace.h:51
LEX_STRING ts_comment
Definition: sql_tablespace.h:53
LEX_STRING encryption
Definition: sql_tablespace.h:55
ulonglong max_size
Definition: sql_tablespace.h:49
LEX_CSTRING engine_name
Definition: sql_tablespace.h:54
ulonglong initial_size
Definition: sql_tablespace.h:47
bool wait_until_completed
Definition: sql_tablespace.h:52
ulonglong extent_size
Definition: sql_tablespace.h:44
Definition: parser_yystype.h:322
Bison "location" class.
Definition: parse_location.h:43
Definition: task.h:427
Explain_format_type
Values for explain_format sysvar.
Definition: system_variables.h:121
thr_lock_type
Definition: thr_lock.h:51
@ TL_WRITE
Definition: thr_lock.h:92
@ TL_READ_WITH_SHARED_LOCKS
Definition: thr_lock.h:63
@ TL_IGNORE
Definition: thr_lock.h:52
thr_locked_row_action
Definition: thr_lock.h:97
unsigned int uint
Definition: uca9-dump.cc:75
command
Definition: version_token.cc:280
enum_window_frame_exclusion
Cf.
Definition: window_lex.h:48
enum_window_frame_unit
Cf.
Definition: window_lex.h:31
enum_window_border_type
Cf.
Definition: window_lex.h:37
@ WBT_VALUE_FOLLOWING
Definition: window_lex.h:40
@ WBT_VALUE_PRECEDING
Definition: window_lex.h:39