MySQL  8.0.27
Source Code Documentation
parser_yystype.h
Go to the documentation of this file.
1 /* Copyright (c) 2019, 2021, Oracle and/or its affiliates.
2 
3  This program is free software; you can redistribute it and/or modify
4  it under the terms of the GNU General Public License, version 2.0,
5  as published by the Free Software Foundation.
6 
7  This program is also distributed with certain software (including
8  but not limited to OpenSSL) that is licensed under separate terms,
9  as designated in a particular file or component or in included license
10  documentation. The authors of MySQL hereby grant you an additional
11  permission to link the program and your derivative works with the
12  separately licensed software that they have included with MySQL.
13 
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License, version 2.0, for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with this program; if not, write to the Free Software
21  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
22 
23 #ifndef PARSER_YYSTYPE_INCLUDED
24 #define PARSER_YYSTYPE_INCLUDED
25 
26 #include <assert.h>
27 #include <sys/types.h> // TODO: replace with cstdint
28 
29 #include <optional>
30 
31 #include "field_types.h"
32 #include "lex_string.h"
33 #include "my_base.h"
34 
35 #include "my_inttypes.h" // TODO: replace with cstdint
36 #include "my_time.h" // interval_type
37 #include "mysql_time.h"
38 #include "sql/comp_creator.h"
39 #include "sql/field.h"
40 #include "sql/handler.h"
41 #include "sql/item_create.h" // Cast_target
42 #include "sql/key_spec.h" // keytype, fk_option
43 #include "sql/lexer_yystype.h" // Lexer_yystype
44 #include "sql/mem_root_array.h"
45 #include "sql/opt_hints.h" // opt_hints_enum
46 #include "sql/parse_tree_hints.h"
48 #include "sql/resourcegroups/platform/thread_attrs_api.h" // ...::cpu_id_t
49 #include "sql/resourcegroups/resource_group_basic_types.h" // resourcegroups::Range
50 #include "sql/set_var.h"
51 #include "sql/sql_admin.h" // Sql_cmd_analyze_table::Histogram_command
52 #include "sql/sql_alter.h" // Alter_info::enum_with_validation
53 #include "sql/sql_exchange.h" // Line_separators, enum_filetype
54 #include "sql/sql_get_diagnostics.h" // Diagnostics_information::Which_area
55 #include "sql/sql_signal.h" // enum_condition_item_name
56 #include "sql/table.h" // index_hint_type
57 #include "sql/trigger_def.h" // enum_trigger_order_type
58 #include "sql/window_lex.h" // enum_window_frame_unit
59 #include "sql/xa.h" // xa_option_words
60 #include "thr_lock.h" // thr_lock_type
61 
62 class Index_hint;
63 class Item;
64 class Item_num;
65 class Item_param;
66 class Item_string;
67 class PTI_text_literal;
68 class PT_add_partition;
69 class PT_adm_partition;
70 class PT_alter_instance;
75 class PT_border;
76 class PT_borders;
78 class PT_column_def;
83 class PT_derived_table;
84 class PT_exclusion;
85 class PT_field_def_base;
86 class PT_frame;
87 class PT_group;
91 class PT_isolation_level;
92 class PT_item_list;
93 class PT_joined_table;
96 class PT_limit_clause;
97 class PT_locking_clause;
102 class PT_order;
103 class PT_order_expr;
104 class PT_order_list;
105 class PT_part_definition;
106 class PT_part_type_def;
107 class PT_part_value_item;
109 class PT_part_values;
110 class PT_partition;
111 class PT_partition_option;
112 class PT_preload_keys;
113 class PT_query_expression;
115 class PT_query_primary;
117 class PT_select_var;
118 class PT_select_var_list;
119 class PT_set;
122 class PT_sub_partition;
123 class PT_subpartition;
124 class PT_subquery;
125 class PT_subselect;
127 class PT_table_element;
128 class PT_table_reference;
131 class PT_type;
132 class PT_window;
133 class PT_window_list;
134 class PT_with_clause;
135 class PT_with_list;
136 class Parse_tree_root;
137 class Query_block;
138 class String;
139 class Table_ident;
140 class sp_condition_value;
141 class sp_head;
142 class sp_name;
143 enum class Acl_type;
144 enum class Json_on_response_type : uint16;
145 enum class enum_ha_read_modes;
146 enum class enum_ha_read_modes;
147 enum class enum_jt_column;
148 enum class enum_key_algorithm;
149 enum class partition_type;
151 struct CHARSET_INFO;
152 struct LEX;
154 struct udf_func;
155 
156 template <class T>
157 class List;
158 
159 typedef Parse_tree_node_tmpl<Alter_tablespace_parse_context>
161 
163 
164 /**
165  used by the parser to store internal variable name
166 */
170 };
171 
173  DROP_DEFAULT, // mode is not specified
174  DROP_CASCADE, // CASCADE option
175  DROP_RESTRICT // RESTRICT option
176 };
177 
179 
180 struct Cast_type {
183  const char *length;
184  const char *dec;
185 };
186 
190  /*
191  true for "LIMIT offset,limit" and false for "LIMIT limit OFFSET offset"
192  */
194 };
195 
198 
199  bool merge(const Query_options &a, const Query_options &b);
200  bool save_to(Parse_context *);
201 };
202 
204  DELETE_QUICK = 1 << 0,
206  DELETE_IGNORE = 1 << 2
207 };
208 
209 enum class Lock_strength { UPDATE, SHARE };
210 
211 /// We will static_cast this one to thr_lock_type.
212 enum class Locked_row_action {
214  WAIT = THR_WAIT,
215  NOWAIT = THR_NOWAIT,
216  SKIP = THR_SKIP
217 };
218 
219 /**
220  Internally there is no CROSS JOIN join type, as cross joins are just a
221  special case of inner joins with a join condition that is always true. The
222  only difference is the nesting, and that is handled by the parser.
223 */
225  JTT_INNER = 0x01,
226  JTT_STRAIGHT = 0x02,
227  JTT_NATURAL = 0x04,
228  JTT_LEFT = 0x08,
229  JTT_RIGHT = 0x10,
230 
235 };
236 
238 
239 enum class Ternary_option { DEFAULT, ON, OFF };
240 
242 
244 
245 enum class Int_type : ulong {
251 };
252 
253 enum class Numeric_type : ulong {
257 };
258 
259 enum class Show_cmd_type {
260  STANDARD,
261  FULL_SHOW,
264 };
265 
266 /**
267  std::optional-like wrapper for simple bitmaps (usually enums of binary flags)
268 
269  This template wraps trivial bitmap implementations to add two features:
270 
271  * std::optional-like behavior -- the "unset" flag, so we don't have
272  to inject a special "invalid" value into existent enum types, this
273  wrapper class does that for us.
274 
275  * the merge() function to merge two bitmap values in a type-safe way.
276 
277  @tparam Enum Usually a enum type which simulates a bit set.
278  @tparam Default_value A default Enum value for "unset" variables.
279 
280 */
281 template <typename Enum, Enum Default_value>
282 class Enum_parser {
283  public:
284  /// Constructor-like function
285  ///
286  /// The Enum_parser<> class is designed for use as a field of restricted
287  /// unions, so it can't have C++ constructors.
288  void init() { m_is_set = false; }
289 
290  /// False if the wrapped Enum value is not assigned.
291  bool is_set() const { return m_is_set; }
292 
293  /// Return the wrapped Enum value.
294  ///
295  /// @note The wrapped value must be assigned.
296  Enum get() const {
297  assert(is_set());
298  return m_enum;
299  }
300 
301  /// Return the wrapped Enum value (if any) or the Default_value.
302  Enum get_or_default() const { return is_set() ? get() : Default_value; }
303 
304  /// Assign the wrapped Enum value.
305  void set(Enum value) {
306  m_is_set = true;
307  m_enum = value;
308  }
309 
310  /// Merge the x bit set into the wrapped Enum value (if any), or replace it
311  void merge(const Enum_parser &x) {
312  if (x.is_set()) set(x.get());
313  }
314 
315  private:
316  bool m_is_set; ///< True if m_enum is assigned with some value
317  Enum m_enum; ///< The wrapped Enum value.
318 };
319 
320 template <typename T>
323  T value; ///< undefined if is_default is true
324 };
325 
327  // DEFAULT will be changed during parsing to TRADITIONAL
328  // for regular EXPLAIN, or TREE for EXPLAIN ANALYZE.
329  DEFAULT,
330  TRADITIONAL,
331  JSON,
332  TREE,
334 };
335 
336 // Compatibility with Bison 2.3:
337 #ifndef YYSTYPE_IS_DECLARED
338 #define YYSTYPE_IS_DECLARED 1
339 #endif // YYSTYPE_IS_DECLARED
340 
341 union YYSTYPE {
342  Lexer_yystype lexer; // terminal values from the lexical scanner
343  /*
344  Hint parser section (sql_hints.yy)
345  */
352 
353  /*
354  Main parser section (sql_yacc.yy)
355  */
356  int num;
357  ulong ulong_num;
373  struct {
380  enum row_type row_type;
384  const char *c_str;
385  struct {
389  struct {
390  const char *length;
391  const char *dec;
400  struct {
422  struct {
428  PT_subselect *subselect;
436  enum olap_type olap_type;
477 
480  struct {
484  struct {
488  struct {
492  struct {
496  struct {
509  struct {
530  struct {
536  List<char> *name_list; // TODO: merge with string_list
541  PT_add_partition *add_partition_rule;
542  struct {
557  ulong field_option; // 0 or combinations of UNSIGNED_FLAG and ZEROFILL_FLAG
561  struct {
562  const char *expr_start;
566  struct {
572  struct {
582  struct {
593  // ON EMPTY/ON ERROR response for JSON_TABLE and JSON_VALUE.
598  struct {
604  struct {
609  struct {
624  struct Algo_and_lock {
631  void init() {
632  algo.init();
633  lock.init();
634  }
646  void init() {
647  algo.init();
648  lock.init();
649  validation.init();
650  }
652  algo.merge(x.algo);
653  lock.merge(x.lock);
655  }
657  struct {
661  struct {
662  Algo_and_lock_and_validation flags;
672  struct {
683  struct {
688  struct {
695  struct {
700 };
701 
702 static_assert(sizeof(YYSTYPE) <= 32, "YYSTYPE is too big");
703 
704 #endif // PARSER_YYSTYPE_INCLUDED
enum_alter_table_algorithm
The different values of the ALGORITHM clause.
Definition: sql_alter.h:354
@ ALTER_TABLE_ALGORITHM_DEFAULT
Definition: sql_alter.h:356
enum_alter_table_lock
The different values of the LOCK clause.
Definition: sql_alter.h:372
@ ALTER_TABLE_LOCK_DEFAULT
Definition: sql_alter.h:374
enum_with_validation
Status of validation clause in ALTER TABLE statement.
Definition: sql_alter.h:390
@ ALTER_VALIDATION_DEFAULT
Default value, used when it's not specified in the statement.
Definition: sql_alter.h:396
A condition information item.
Definition: sql_get_diagnostics.h:223
Name
The name of a condition information item.
Definition: sql_get_diagnostics.h:228
Represents the diagnostics information to be obtained.
Definition: sql_get_diagnostics.h:73
Which_area
Which Diagnostics Area to access.
Definition: sql_get_diagnostics.h:78
std::optional-like wrapper for simple bitmaps (usually enums of binary flags)
Definition: parser_yystype.h:282
Enum get_or_default() const
Return the wrapped Enum value (if any) or the Default_value.
Definition: parser_yystype.h:302
void init()
Constructor-like function.
Definition: parser_yystype.h:288
Enum get() const
Return the wrapped Enum value.
Definition: parser_yystype.h:296
bool is_set() const
False if the wrapped Enum value is not assigned.
Definition: parser_yystype.h:291
void merge(const Enum_parser &x)
Merge the x bit set into the wrapped Enum value (if any), or replace it.
Definition: parser_yystype.h:311
Enum m_enum
The wrapped Enum value.
Definition: parser_yystype.h:317
bool m_is_set
True if m_enum is assigned with some value.
Definition: parser_yystype.h:316
void set(Enum value)
Assign the wrapped Enum value.
Definition: parser_yystype.h:305
Definition: sql_lex.h:487
Definition: item.h:3741
Dynamic parameters used as placeholders ('?') inside prepared statements.
Definition: item.h:4434
Definition: item.h:5075
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:802
Definition: sql_list.h:431
Definition: parse_tree_items.h:238
Definition: parse_tree_nodes.h:4757
Top-level node for the ALTER INSTANCE statement.
Definition: parse_tree_nodes.h:2026
Definition: parse_tree_nodes.h:3777
Definition: parse_tree_nodes.h:4156
Definition: parse_tree_nodes.h:4743
A template-free base class for index options that we can predeclare in sql_lex.h.
Definition: parse_tree_nodes.h:2042
Parse tree node for a single of a window extent's borders, cf.
Definition: parse_tree_nodes.h:1277
Parse tree node for one or both of a window extent's borders, cf.
Definition: parse_tree_nodes.h:1322
Base class for all column attributes in CREATE/ALTER TABLE
Definition: parse_tree_column_attrs.h:84
Definition: parse_tree_nodes.h:2774
Represents an element of the WITH list: WITH [...], [...] SELECT ..., ^ or ^ i.e.
Definition: parse_tree_nodes.h:250
Definition: parse_tree_nodes.h:2220
Base class for CREATE TABLE option nodes.
Definition: parse_tree_nodes.h:2337
Common base class for CREATE TABLE and ALTER TABLE option nodes.
Definition: parse_tree_nodes.h:2323
Definition: parse_tree_nodes.h:483
Parse tree node for a window frame's exclusions, cf.
Definition: parse_tree_nodes.h:1344
Base class for both generated and regular column definitions.
Definition: parse_tree_column_attrs.h:873
Parse tree node for a window's frame, cf.
Definition: parse_tree_nodes.h:1356
Definition: parse_tree_nodes.h:619
Definition: parse_tree_hints.h:97
The class is a base class for representation of the different types of the hints.
Definition: parse_tree_hints.h:57
Definition: parse_tree_nodes.h:1843
Definition: parse_tree_nodes.h:780
Definition: parse_tree_nodes.h:1181
Definition: parse_tree_nodes.h:1075
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:101
Definition: parse_tree_nodes.h:514
Definition: parse_tree_nodes.h:444
A key part specification.
Definition: parse_tree_nodes.h:2051
Definition: parse_tree_nodes.h:389
Definition: parse_tree_nodes.h:707
Definition: parse_tree_nodes.h:644
Definition: parse_tree_nodes.h:829
Definition: parse_tree_nodes.h:1004
Definition: parse_tree_nodes.h:845
Definition: parse_tree_nodes.h:200
Definition: parse_tree_nodes.h:212
Definition: parse_tree_nodes.h:632
Node for the PARTITION clause of CREATE/ALTER TABLE.
Definition: parse_tree_partitions.h:385
Definition: parse_tree_partitions.h:471
Node for a list of partitioning values in VALUES clauses.
Definition: parse_tree_partitions.h:328
Base class for partition value nodes: MAX_VALUE values or expressions.
Definition: parse_tree_partitions.h:280
Base class for VALUES partitioning clauses.
Definition: parse_tree_partitions.h:321
Base class for all partition options.
Definition: parse_tree_partitions.h:84
Node for the PARTITION definition clause.
Definition: parse_tree_partitions.h:593
Definition: parse_tree_nodes.h:4807
Definition: parse_tree_nodes.h:727
Definition: parse_tree_nodes.h:1496
Definition: parse_tree_nodes.h:1376
Definition: parse_tree_nodes.h:2937
Definition: parse_tree_nodes.h:1260
Definition: parse_tree_nodes.h:1225
Definition: parse_tree_nodes.h:1168
Definition: parse_tree_nodes.h:1117
Definition: parse_tree_nodes.h:935
Base class for all subpartitioning clause nodes.
Definition: parse_tree_partitions.h:421
Node for the SUBRAPTITION clause of CREATE/ALTER TABLE
Definition: parse_tree_partitions.h:262
Definition: parse_tree_nodes.h:1638
Definition: parse_tree_nodes.h:2259
Base class for column/constraint definitions in CREATE TABLE.
Definition: parse_tree_nodes.h:2257
Definition: parse_tree_nodes.h:404
Definition: parse_tree_nodes.h:1067
Definition: parse_tree_nodes.h:1083
Base class for all column type nodes.
Definition: parse_tree_column_attrs.h:530
Parse tree node for a list of window definitions corresponding to a <window clause> in SQL 2003.
Definition: parse_tree_window.h:59
Parse tree node for a window; just a shallow wrapper for class Window, q.v.
Definition: parse_tree_window.h:38
Represents the WITH clause: WITH [...], [...] SELECT ..., ^^^^^^^^^^^^^^^^^.
Definition: parse_tree_nodes.h:336
Represents the WITH list.
Definition: parse_tree_nodes.h:316
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:102
Base class for all top-level nodes of SQL statements.
Definition: parse_tree_nodes.h:157
This class represents a query block, aka a query specification, which is a query consisting of a SELE...
Definition: sql_lex.h:1123
Set_signal_information is a container used in the parsed tree to represent the collection of assignme...
Definition: sql_signal.h:67
Histogram_command
Specifies which (if any) of the commands UPDATE HISTOGRAM or DROP HISTOGRAM that is specified after A...
Definition: sql_admin.h:69
A statement information item.
Definition: sql_get_diagnostics.h:174
Name
The name of a statement information item.
Definition: sql_get_diagnostics.h:177
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:165
Definition: sql_lex.h:292
This class represents condition-value term in DECLARE CONDITION or DECLARE HANDLER statements.
Definition: sp_pcontext.h:132
sp_head represents one instance of a stored program.
Definition: sp_head.h:379
Definition: sp_head.h:119
A class representing one system variable - that is something that can be accessed as @global....
Definition: set_var.h:102
Comp_creator *(*)(bool invert) chooser_compare_func_creator
Convenience typedef for a function that returns factories for Item comparators (ie....
Definition: comp_creator.h:38
This file contains the field type.
@ MYSQL_TYPE_LONGLONG
Definition: field_types.h:65
@ MYSQL_TYPE_TINY
Definition: field_types.h:58
@ MYSQL_TYPE_LONG
Definition: field_types.h:60
@ MYSQL_TYPE_NEWDECIMAL
Definition: field_types.h:81
@ MYSQL_TYPE_DOUBLE
Definition: field_types.h:62
@ MYSQL_TYPE_SHORT
Definition: field_types.h:59
@ MYSQL_TYPE_FLOAT
Definition: field_types.h:61
@ MYSQL_TYPE_INT24
Definition: field_types.h:66
Acl_type
Definition: sql_lex.h:259
Cast_target
Definition: item_create.h:55
Builder for SQL functions.
fk_match_opt
Definition: key_spec.h:57
enum_order
Definition: key_spec.h:64
keytype
Definition: key_spec.h:39
fk_option
Definition: key_spec.h:48
This file includes constants used by all storage engines.
ha_key_alg
Definition: my_base.h:96
ha_rkey_function
Definition: my_base.h:77
ha_storage_media
Definition: my_base.h:114
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:55
uint16_t uint16
Definition: my_inttypes.h:64
uint32 my_thread_id
Definition: my_thread_local.h:33
Interface for low level time utilities.
interval_type
Available interval types used in any statement.
Definition: my_time.h:403
Time declarations shared between the server and client API: you should not add anything to this heade...
enum_mysql_timestamp_type
Definition: mysql_time.h:44
constexpr value_type Enum
Definition: classic_protocol_constants.h:249
Provides atomic access in shared-exclusive modes.
Definition: shared_spin_lock.h:78
uint32_t cpu_id_t
Definition: thread_attrs_api.h:33
Type
Definition: resource_group_basic_types.h:32
opt_hints_enum
Hint types, MAX_HINT_ENUM should be always last.
Definition: opt_hints.h:63
enum_drop_mode
Definition: parser_yystype.h:172
@ DROP_CASCADE
Definition: parser_yystype.h:174
@ DROP_DEFAULT
Definition: parser_yystype.h:173
@ DROP_RESTRICT
Definition: parser_yystype.h:175
olap_type
Definition: parser_yystype.h:178
@ ROLLUP_TYPE
Definition: parser_yystype.h:178
@ UNSPECIFIED_OLAP_TYPE
Definition: parser_yystype.h:178
On_duplicate
Definition: parser_yystype.h:241
Int_type
Definition: parser_yystype.h:245
Locked_row_action
We will static_cast this one to thr_lock_type.
Definition: parser_yystype.h:212
delete_option_enum
Definition: parser_yystype.h:203
@ DELETE_IGNORE
Definition: parser_yystype.h:206
@ DELETE_LOW_PRIORITY
Definition: parser_yystype.h:205
@ DELETE_QUICK
Definition: parser_yystype.h:204
enum_yes_no_unknown
Definition: parser_yystype.h:162
@ TVL_UNKNOWN
Definition: parser_yystype.h:162
@ TVL_NO
Definition: parser_yystype.h:162
@ TVL_YES
Definition: parser_yystype.h:162
Mem_root_array_YY< LEX_CSTRING > Create_col_name_list
Definition: parser_yystype.h:237
Lock_strength
Definition: parser_yystype.h:209
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:224
@ JTT_LEFT
Definition: parser_yystype.h:228
@ JTT_STRAIGHT_INNER
Definition: parser_yystype.h:231
@ JTT_NATURAL_LEFT
Definition: parser_yystype.h:233
@ JTT_NATURAL
Definition: parser_yystype.h:227
@ JTT_NATURAL_INNER
Definition: parser_yystype.h:232
@ JTT_NATURAL_RIGHT
Definition: parser_yystype.h:234
@ JTT_STRAIGHT
Definition: parser_yystype.h:226
@ JTT_RIGHT
Definition: parser_yystype.h:229
@ JTT_INNER
Definition: parser_yystype.h:225
Explain_format_type
Definition: parser_yystype.h:326
Show_cmd_type
Definition: parser_yystype.h:259
Ternary_option
Definition: parser_yystype.h:239
Numeric_type
Definition: parser_yystype.h:253
Virtual_or_stored
Definition: parser_yystype.h:243
partition_type
An enum and a struct to handle partitioning and subpartitioning.
Definition: partition_element.h:32
enum_key_algorithm
PARTITION BY KEY ALGORITHM=N Which algorithm to use for hashing the fields.
Definition: partition_info.h:173
const string value("\"Value\"")
"public" interface to sys_var - server configuration variables.
enum_var_type
Definition: set_var.h:87
column_format_type
Definition: field.h:188
ts_alter_tablespace_type
Definition: handler.h:838
enum_tx_isolation
Definition: handler.h:2750
row_type
Definition: handler.h:669
index_hint_type
Definition: table.h:1385
enum_filetype
Definition: sql_exchange.h:29
enum_ha_read_modes
Definition: sql_handler.h:34
enum_condition_item_name
This enumeration list all the condition item names of a condition in the SQL condition area.
Definition: sql_signal.h:40
Definition: parse_tree_nodes.h:4911
Definition: m_ctype.h:354
Definition: parser_yystype.h:180
Cast_target target
Definition: parser_yystype.h:181
const char * length
Definition: parser_yystype.h:183
const CHARSET_INFO * charset
Definition: parser_yystype.h:182
const char * dec
Definition: parser_yystype.h:184
Helper for the sql_exchange class.
Definition: sql_exchange.h:50
uint sql_flags
Definition: handler.h:3351
uint flags
Definition: handler.h:3350
Definition: parse_tree_hints.h:44
Definition: table.h:2454
Definition: table.h:2561
The LEX object currently serves three different purposes:
Definition: sql_lex.h:3654
Definition: parser_yystype.h:187
bool is_offset_first
Definition: parser_yystype.h:193
Item * limit
Definition: parser_yystype.h:188
Item * opt_offset
Definition: parser_yystype.h:189
Helper for the sql_exchange class.
Definition: sql_exchange.h:35
Definition: mysql_lex_string.h:39
Definition: mysql_lex_string.h:34
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:90
Definition: parser_yystype.h:196
bool save_to(Parse_context *)
Definition: sql_lex.cc:4786
ulonglong query_spec_options
Definition: parser_yystype.h:197
bool merge(const Query_options &a, const Query_options &b)
Definition: sql_lex.cc:4781
Definition: sql_cmd_srs.h:40
Definition: parser_yystype.h:321
T value
undefined if is_default is true
Definition: parser_yystype.h:323
bool is_default
Definition: parser_yystype.h:322
Definition: parser_yystype.h:636
void merge(const Algo_and_lock_and_validation &x)
Definition: parser_yystype.h:651
Enum_parser< Alter_info::enum_alter_table_algorithm, Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT > algo
Definition: parser_yystype.h:639
Enum_parser< Alter_info::enum_alter_table_lock, Alter_info::ALTER_TABLE_LOCK_DEFAULT > lock
Definition: parser_yystype.h:642
Enum_parser< Alter_info::enum_with_validation, Alter_info::ALTER_VALIDATION_DEFAULT > validation
Definition: parser_yystype.h:645
void init()
Definition: parser_yystype.h:646
Definition: parser_yystype.h:624
void init()
Definition: parser_yystype.h:631
Enum_parser< Alter_info::enum_alter_table_algorithm, Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT > algo
Definition: parser_yystype.h:627
Enum_parser< Alter_info::enum_alter_table_lock, Alter_info::ALTER_TABLE_LOCK_DEFAULT > lock
Definition: parser_yystype.h:630
Definition: parser_yystype.h:594
Json_on_response_type type
Definition: parser_yystype.h:595
Item * default_string
Definition: parser_yystype.h:596
used by the parser to store internal variable name
Definition: parser_yystype.h:167
sys_var * var
Definition: parser_yystype.h:168
LEX_CSTRING base_name
Definition: parser_yystype.h:169
Definition: sql_udf.h:43
struct xid_t is binary compatible with the XID structure as in the X/Open CAE Specification,...
Definition: xa.h:215
Json_on_response_type
Types of ON EMPTY/ON ERROR clauses for JSON_TABLE and JSON_VALUE.
Definition: table_function.h:191
enum_jt_column
Type of columns for JSON_TABLE function.
Definition: table_function.h:182
thr_lock_type
Definition: thr_lock.h:50
@ THR_NOWAIT
Definition: thr_lock.h:96
@ THR_SKIP
Definition: thr_lock.h:96
@ THR_DEFAULT
Definition: thr_lock.h:96
@ THR_WAIT
Definition: thr_lock.h:96
This file defines all base public constants related to triggers in MySQL.
enum_trigger_order_type
Possible trigger ordering clause values:
Definition: trigger_def.h:63
Definition: lexer_yystype.h:32
Definition: parser_yystype.h:341
Condition_information_item * cond_info_item
Definition: parser_yystype.h:416
PT_part_definition * part_definition
Definition: parser_yystype.h:534
PT_select_var_list * select_var_list
Definition: parser_yystype.h:467
chooser_compare_func_creator boolfunc2creator
Definition: parser_yystype.h:398
PT_start_option_value_list_following_option_type * start_option_value_list_following_option_type
Definition: parser_yystype.h:461
Mem_root_array< PT_partition_option * > * partition_option_list
Definition: parser_yystype.h:522
Mem_root_array< PT_role_or_privilege * > * role_or_privilege_list
Definition: parser_yystype.h:617
Table_ident * table_ident
Definition: parser_yystype.h:502
Parse_tree_root * top_level_node
Definition: parser_yystype.h:501
PT_internal_variable_name * internal_variable_name
Definition: parser_yystype.h:452
struct YYSTYPE::@114 opt_part_values
Explain_format_type explain_format_type
Definition: parser_yystype.h:682
PT_group * group
Definition: parser_yystype.h:437
PT_table_constraint_def * table_constraint_def
Definition: parser_yystype.h:507
bool is_not_empty
Definition: parser_yystype.h:419
Mem_root_array< ulonglong > * thread_id_list_type
Definition: parser_yystype.h:681
PT_with_clause * with_clause
Definition: parser_yystype.h:517
List< Index_hint > * key_usage_list
Definition: parser_yystype.h:427
List< String > * string_list
Definition: parser_yystype.h:366
enum_null_treatment null_treatment
Definition: parser_yystype.h:445
Item_num * item_num
Definition: parser_yystype.h:364
ulonglong ulonglong_number
Definition: parser_yystype.h:358
enum_filetype filetype
Definition: parser_yystype.h:407
struct YYSTYPE::@113 index_name_and_type
sp_condition_value * spcondvalue
Definition: parser_yystype.h:399
Query_block * query_block
Definition: parser_yystype.h:397
my_thread_id query_id
Definition: parser_yystype.h:699
Mem_root_array< PT_part_value_item_list_paren * > * part_value_list
Definition: parser_yystype.h:528
PT_partition * partition_clause
Definition: parser_yystype.h:540
Mem_root_array< PT_create_table_option * > * create_table_options
Definition: parser_yystype.h:549
struct YYSTYPE::@122 histogram
PT_alter_tablespace_option_base * ts_option
Definition: parser_yystype.h:670
PT_frame * window_frame
Definition: parser_yystype.h:440
PT_table_reference * table_reference
Definition: parser_yystype.h:449
PT_base_index_option * index_option
Definition: parser_yystype.h:513
List< String > * set_expr_str_list
Definition: parser_yystype.h:691
PT_preload_keys * preload_keys
Definition: parser_yystype.h:668
On_duplicate on_duplicate
Definition: parser_yystype.h:551
ha_storage_media storage_media
Definition: parser_yystype.h:554
Mem_root_array< PT_table_element * > * table_element_list
Definition: parser_yystype.h:581
struct YYSTYPE::@126 load_set_element
PT_subquery * subquery
Definition: parser_yystype.h:475
Value_or_default< bool > resource_group_state_type
Definition: parser_yystype.h:678
PT_isolation_level * isolation_level
Definition: parser_yystype.h:458
Value_or_default< int > resource_group_priority_type
Definition: parser_yystype.h:677
LEX_MFA * mfa2
Definition: parser_yystype.h:374
fk_option fk_delete_opt
Definition: parser_yystype.h:568
Mem_root_array< PT_column_attr_base * > * col_attr_list
Definition: parser_yystype.h:555
Mem_root_array_YY< LEX_STRING > lex_str_list
Definition: parser_yystype.h:515
PT_derived_table * derived_table
Definition: parser_yystype.h:472
LEX_CSTRING anchor_trigger_name
Definition: parser_yystype.h:424
List< String > * columns
Definition: parser_yystype.h:611
PT_item_list * set_var_list
Definition: parser_yystype.h:689
PT_part_values * values
Definition: parser_yystype.h:532
LEX_USER * lex_user
Definition: parser_yystype.h:370
enum_from_first_last from_first_last
Definition: parser_yystype.h:446
Item_string * item_string
Definition: parser_yystype.h:447
String * string
Definition: parser_yystype.h:367
LEX_MFA * mfa3
Definition: parser_yystype.h:374
PT_part_type_def * part_type_def
Definition: parser_yystype.h:539
interval_type interval_time_st
Definition: parser_yystype.h:395
fk_option m_fk_option
Definition: parser_yystype.h:408
PT_create_index_stmt * create_index_stmt
Definition: parser_yystype.h:506
Item * column
Definition: parser_yystype.h:481
PT_hint_list * hint_list
Definition: parser_yystype.h:348
ulong field_option
Definition: parser_yystype.h:557
PT_alter_table_action * alter_table_action
Definition: parser_yystype.h:620
Mem_root_array< PT_ddl_table_option * > * actions
Definition: parser_yystype.h:659
Alter_info::enum_alter_table_algorithm alter_table_algorithm
Definition: parser_yystype.h:622
PT_alter_table_standalone_action * alter_table_standalone_action
Definition: parser_yystype.h:621
PT_locking_clause * locking_clause
Definition: parser_yystype.h:590
const char * length
Definition: parser_yystype.h:390
LEX * lex
Definition: parser_yystype.h:404
const char * expr_start
Definition: parser_yystype.h:562
PT_key_part_specification * key_part
Definition: parser_yystype.h:476
enum_window_frame_unit frame_units
Definition: parser_yystype.h:441
Mem_root_array< PT_part_value_item * > * part_value_item_list
Definition: parser_yystype.h:526
Mem_root_array_YY< PT_table_reference * > table_reference_list
Definition: parser_yystype.h:468
int curs
Definition: parser_yystype.h:401
PT_insert_values_list * values_list
Definition: parser_yystype.h:500
Virtual_or_stored virtual_or_stored
Definition: parser_yystype.h:556
enum_drop_mode opt_restrict
Definition: parser_yystype.h:546
resourcegroups::platform::cpu_id_t end
Definition: parser_yystype.h:674
mem_root_deque< Item * > * item_list
Definition: parser_yystype.h:365
PT_subpartition * sub_part_definition
Definition: parser_yystype.h:523
Statement_information_item * stmt_info_item
Definition: parser_yystype.h:413
List< Key_part_spec > * reference_list
Definition: parser_yystype.h:571
PT_joined_table * join_table
Definition: parser_yystype.h:450
resourcegroups::platform::cpu_id_t start
Definition: parser_yystype.h:673
List< PT_key_part_specification > * index_column_list
Definition: parser_yystype.h:508
bool force_binary
Definition: parser_yystype.h:387
resourcegroups::Type resource_group_type
Definition: parser_yystype.h:680
udf_func * udf
Definition: parser_yystype.h:369
PT_locking_clause_list * locking_clause_list
Definition: parser_yystype.h:591
Item * where
Definition: parser_yystype.h:606
partition_type type
Definition: parser_yystype.h:531
LEX_STRING name
Definition: parser_yystype.h:510
PT_with_list * with_list
Definition: parser_yystype.h:518
Condition_information_item::Name cond_info_item_name
Definition: parser_yystype.h:417
PT_exclusion * frame_exclusion
Definition: parser_yystype.h:444
Mem_root_array< PT_ddl_table_option * > * space_separated_alter_table_opts
Definition: parser_yystype.h:550
struct YYSTYPE::@121 wild_or_where
Item * expr
Definition: parser_yystype.h:563
struct YYSTYPE::Algo_and_lock_and_validation algo_and_lock_and_validation
Diagnostics_information * diag_info
Definition: parser_yystype.h:412
thr_lock_type lock_type
Definition: parser_yystype.h:394
Lexer_yystype lexer
Definition: parser_yystype.h:342
int conds
Definition: parser_yystype.h:401
Line_separators line_separators
Definition: parser_yystype.h:463
int num
Definition: parser_yystype.h:356
struct YYSTYPE::@123 alter_list
ha_rkey_function ha_rkey_mode
Definition: parser_yystype.h:381
PT_query_expression_body * query_expression_body
Definition: parser_yystype.h:473
struct YYSTYPE::@127 load_set_list
PT_field_def_base * field_def
Definition: parser_yystype.h:565
bool resource_group_flag_type
Definition: parser_yystype.h:679
Alter_info::enum_alter_table_lock alter_table_lock
Definition: parser_yystype.h:623
Item * offset
Definition: parser_yystype.h:497
Ternary_option ternary_option
Definition: parser_yystype.h:547
PT_partition * opt_partitioning
Definition: parser_yystype.h:584
PT_column_def * column_def
Definition: parser_yystype.h:579
enum_ha_read_modes ha_read_mode
Definition: parser_yystype.h:382
Table_ident * table
Definition: parser_yystype.h:361
enum_order order_direction
Definition: parser_yystype.h:618
struct YYSTYPE::@115 mi_type
Algo_and_lock_and_validation flags
Definition: parser_yystype.h:658
Hint_param_table_list hint_param_table_list
Definition: parser_yystype.h:351
PT_part_values * part_values
Definition: parser_yystype.h:529
PT_query_expression * query_expression
Definition: parser_yystype.h:471
enum_mysql_timestamp_type date_time_type
Definition: parser_yystype.h:396
Table_ident * table_name
Definition: parser_yystype.h:573
char * simple_string
Definition: parser_yystype.h:362
const CHARSET_INFO * charset
Definition: parser_yystype.h:386
enum_jt_column jt_column_type
Definition: parser_yystype.h:603
PT_item_list * value_list
Definition: parser_yystype.h:486
PT_query_primary * opt_query_expression
Definition: parser_yystype.h:586
struct YYSTYPE::@105 precision
LEX_CSTRING lex_cstr
Definition: parser_yystype.h:359
PT_alter_instance * alter_instance_cmd
Definition: parser_yystype.h:505
struct YYSTYPE::@118 fk_references
Item * set_var
Definition: parser_yystype.h:684
XID * xid
Definition: parser_yystype.h:478
PT_add_partition * add_partition_rule
Definition: parser_yystype.h:541
PT_subselect * subselect
Definition: parser_yystype.h:428
PT_borders * frame_extent
Definition: parser_yystype.h:442
PT_part_value_item_list_paren * part_value_item_list_paren
Definition: parser_yystype.h:527
Index_hint * key_usage_element
Definition: parser_yystype.h:426
struct YYSTYPE::Algo_and_lock opt_index_lock_and_algorithm
struct YYSTYPE::@106 spblock
PT_order * order
Definition: parser_yystype.h:448
Parse_tree_node * node
Definition: parser_yystype.h:435
int num_buckets
Definition: parser_yystype.h:612
struct YYSTYPE::@117 fk_options
decltype(HA_CHECK_OPT::flags) flags
Definition: parser_yystype.h:543
enum_condition_item_name da_condition_item_name
Definition: parser_yystype.h:410
int hndlrs
Definition: parser_yystype.h:401
enum_trigger_order_type ordering_clause
Definition: parser_yystype.h:423
Json_on_response error
Definition: parser_yystype.h:599
Acl_type acl_type
Definition: parser_yystype.h:614
Limit_options limit_options
Definition: parser_yystype.h:432
sys_var_with_base variable
Definition: parser_yystype.h:376
Mem_root_array< LEX_CSTRING > * lex_cstring_list
Definition: parser_yystype.h:615
LEX_STRING wild
Definition: parser_yystype.h:605
String * set_expr_str
Definition: parser_yystype.h:686
struct YYSTYPE::@104 charset_with_opt_binary
index_hint_type index_hint
Definition: parser_yystype.h:406
struct YYSTYPE::@124 standalone_alter_table_action
Mem_root_array_YY< PT_base_index_option * > index_options
Definition: parser_yystype.h:514
ts_alter_tablespace_type alter_tablespace_type
Definition: parser_yystype.h:693
Item * value
Definition: parser_yystype.h:482
Item * default_value
Definition: parser_yystype.h:498
List< Statement_information_item > * stmt_info_list
Definition: parser_yystype.h:415
struct YYSTYPE::@116 sp_default
decltype(HA_CHECK_OPT::sql_flags) sql_flags
Definition: parser_yystype.h:544
PT_limit_clause * limit_clause
Definition: parser_yystype.h:434
List< LEX_USER > * user_list
Definition: parser_yystype.h:371
PT_joined_table_type join_type
Definition: parser_yystype.h:451
PT_option_value_following_option_type * option_value_following_option_type
Definition: parser_yystype.h:453
PT_border * bound
Definition: parser_yystype.h:443
struct YYSTYPE::@120 json_on_error_or_empty
struct YYSTYPE::@108 column_value_pair
LEX_CSTRING table_alias
Definition: parser_yystype.h:696
Mem_root_array< resourcegroups::Range > * resource_group_vcpu_list_type
Definition: parser_yystype.h:676
struct YYSTYPE::@107 trg_characteristics
sp_head * sphead
Definition: parser_yystype.h:405
PT_order_list * order_list
Definition: parser_yystype.h:431
ha_key_alg key_alg
Definition: parser_yystype.h:379
Item * set_expr
Definition: parser_yystype.h:685
List< Condition_information_item > * cond_info_list
Definition: parser_yystype.h:418
Mem_root_array< PT_alter_tablespace_option_base * > * ts_options
Definition: parser_yystype.h:671
struct YYSTYPE::@128 insert_update_values_reference
Hint_param_index_list hint_param_index_list
Definition: parser_yystype.h:349
enum_var_type var_type
Definition: parser_yystype.h:377
enum_key_algorithm opt_key_algo
Definition: parser_yystype.h:537
Int_type int_type
Definition: parser_yystype.h:558
Mem_root_array< PT_subpartition * > * sub_part_list
Definition: parser_yystype.h:524
PT_start_option_value_list * start_option_value_list
Definition: parser_yystype.h:456
PT_set * set
Definition: parser_yystype.h:462
enum row_type row_type
Definition: parser_yystype.h:380
PT_common_table_expr * common_table_expr
Definition: parser_yystype.h:519
PT_select_var * select_var_ident
Definition: parser_yystype.h:466
PT_sub_partition * opt_sub_part
Definition: parser_yystype.h:538
PTI_text_literal * text_literal
Definition: parser_yystype.h:470
opt_hints_enum hint_type
Definition: parser_yystype.h:346
ulong ulong_num
Definition: parser_yystype.h:357
PT_column_attr_base * col_attr
Definition: parser_yystype.h:552
enum_yes_no_unknown m_yes_no_unk
Definition: parser_yystype.h:409
struct YYSTYPE::Json_on_response json_on_response
Query_options select_options
Definition: parser_yystype.h:433
PT_window * window
Definition: parser_yystype.h:439
LEX_STRING * lex_str_ptr
Definition: parser_yystype.h:360
PT_create_table_option * create_table_option
Definition: parser_yystype.h:548
Numeric_type numeric_type
Definition: parser_yystype.h:560
enum_tx_isolation tx_isolation
Definition: parser_yystype.h:383
PT_part_value_item * part_value_item
Definition: parser_yystype.h:525
const char * dec
Definition: parser_yystype.h:391
fk_option fk_update_opt
Definition: parser_yystype.h:567
PT_insert_values_list * row_value_list
Definition: parser_yystype.h:490
PT_hint * hint
Definition: parser_yystype.h:347
PT_item_list * column_list
Definition: parser_yystype.h:485
LEX_MFA * lex_mfa
Definition: parser_yystype.h:372
PT_type * type
Definition: parser_yystype.h:559
PT_window_list * windows
Definition: parser_yystype.h:438
Mem_root_array_YY< Table_ident * > table_ident_list
Definition: parser_yystype.h:503
struct YYSTYPE::@110 column_row_value_list_pair
Mem_root_array< PT_assign_to_keycache * > * keycache_list
Definition: parser_yystype.h:666
delete_option_enum opt_delete_option
Definition: parser_yystype.h:504
PT_json_table_column * jt_column
Definition: parser_yystype.h:602
Alter_info::enum_with_validation with_validation
Definition: parser_yystype.h:619
Cast_type cast_type
Definition: parser_yystype.h:393
PT_alter_table_standalone_action * action
Definition: parser_yystype.h:663
sp_name * spname
Definition: parser_yystype.h:403
PT_item_list * set_expr_list
Definition: parser_yystype.h:690
fk_match_opt opt_match_clause
Definition: parser_yystype.h:570
Show_cmd_type show_cmd_type
Definition: parser_yystype.h:608
PT_option_value_list_head * option_value_list
Definition: parser_yystype.h:455
Mem_root_array< PT_part_definition * > * part_def_list
Definition: parser_yystype.h:535
Lock_strength lock_strength
Definition: parser_yystype.h:588
Json_on_response empty
Definition: parser_yystype.h:600
Create_col_name_list simple_ident_list
Definition: parser_yystype.h:520
PT_query_primary * insert_query_expression
Definition: parser_yystype.h:494
PT_adm_partition * adm_partition
Definition: parser_yystype.h:667
PT_table_element * table_element
Definition: parser_yystype.h:580
struct YYSTYPE::@103 lex_mfas
const char * c_str
Definition: parser_yystype.h:384
interval_type interval
Definition: parser_yystype.h:395
PT_transaction_characteristics * transaction_characteristics
Definition: parser_yystype.h:459
struct YYSTYPE::@112 lead_lag_info
Mem_root_array< PT_preload_keys * > * preload_list
Definition: parser_yystype.h:669
Mem_root_array< PT_json_table_column * > * jtc_list
Definition: parser_yystype.h:592
Create_col_name_list * column_list
Definition: parser_yystype.h:697
bool visibility
Definition: parser_yystype.h:516
List< char > * name_list
Definition: parser_yystype.h:536
Locked_row_action locked_row_action
Definition: parser_yystype.h:589
PT_item_list * item_list2
Definition: parser_yystype.h:429
Set_signal_information * signal_item_list
Definition: parser_yystype.h:420
Item * item
Definition: parser_yystype.h:363
PT_into_destination * into_destination
Definition: parser_yystype.h:465
int vars
Definition: parser_yystype.h:401
fk_match_opt fk_match_option
Definition: parser_yystype.h:575
Field_separators field_separators
Definition: parser_yystype.h:464
column_format_type column_format
Definition: parser_yystype.h:553
enum olap_type olap_type
Definition: parser_yystype.h:436
struct YYSTYPE::@119 create_table_tail
PT_partition_option * partition_option
Definition: parser_yystype.h:521
PT_query_primary * query_primary
Definition: parser_yystype.h:474
Sql_cmd_analyze_table::Histogram_command command
Definition: parser_yystype.h:610
PT_order_expr * order_expr
Definition: parser_yystype.h:430
Mem_root_array< Table_ident * > * table_list
Definition: parser_yystype.h:368
Hint_param_table hint_param_table
Definition: parser_yystype.h:350
Diagnostics_information::Which_area diag_area
Definition: parser_yystype.h:411
struct YYSTYPE::@125 vcpu_range_type
Item_param * param_marker
Definition: parser_yystype.h:469
PT_option_value_no_option_type * option_value_no_option_type
Definition: parser_yystype.h:454
PT_assign_to_keycache * assign_to_keycache
Definition: parser_yystype.h:665
Mem_root_array< PT_create_table_option * > * opt_create_table_options
Definition: parser_yystype.h:583
struct YYSTYPE::@109 column_value_list_pair
Sql_cmd_srs_attributes * sql_cmd_srs_attributes
Definition: parser_yystype.h:694
PT_base_index_option * type
Definition: parser_yystype.h:511
xa_option_words xa_option_type
Definition: parser_yystype.h:479
PT_role_or_privilege * role_or_privilege
Definition: parser_yystype.h:616
keytype key_type
Definition: parser_yystype.h:378
Statement_information_item::Name stmt_info_item_name
Definition: parser_yystype.h:414
enum_trigger_order_type trigger_action_order_type
Definition: parser_yystype.h:421
PT_transaction_access_mode * transaction_access_mode
Definition: parser_yystype.h:457
enum_null_treatment
Cf.
Definition: window_lex.h:57
enum_window_frame_unit
Cf.
Definition: window_lex.h:30
enum_from_first_last
Cf.
Definition: window_lex.h:62
xa_option_words
Definition: xa.h:49