MySQL 8.2.0
Source Code Documentation
parser_yystype.h
Go to the documentation of this file.
1/* Copyright (c) 2019, 2023, 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
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
62class Index_hint;
63class Item;
64class Item_num;
65class Item_param;
66class Item_string;
68class PT_add_partition;
75class PT_border;
76class PT_borders;
78class PT_column_def;
84class PT_exclusion;
86class PT_frame;
87class PT_group;
91class PT_item_list;
92class PT_joined_table;
95class PT_limit_clause;
100class PT_order;
101class PT_order_expr;
102class PT_order_list;
104class PT_part_type_def;
107class PT_part_values;
108class PT_partition;
110class PT_preload_keys;
113class PT_query_primary;
115class PT_select_var;
117class PT_set;
121class PT_sub_partition;
122class PT_subpartition;
123class PT_subquery;
124class PT_subselect;
126class PT_table_element;
130class PT_type;
131class PT_window;
132class PT_window_list;
133class PT_with_clause;
134class PT_with_list;
135class Parse_tree_root;
136class Query_block;
137class String;
138class Table_ident;
140class sp_head;
141class sp_name;
142enum class Acl_type;
143enum class Json_on_response_type : uint16;
144enum class enum_ha_read_modes;
145enum class enum_ha_read_modes;
146enum class enum_jt_column;
147enum class enum_key_algorithm;
148enum class partition_type;
150struct CHARSET_INFO;
151struct LEX;
153struct udf_func;
155
156template <class T>
157class List;
158
159typedef 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
177
179
180struct 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
208
209enum class Lock_strength { UPDATE, SHARE };
210
211/// We will static_cast this one to thr_lock_type.
214 WAIT = THR_WAIT,
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,
228 JTT_LEFT = 0x08,
229 JTT_RIGHT = 0x10,
230
236
238
239enum class Ternary_option { DEFAULT, ON, OFF };
240
242
244
245enum class Int_type : ulong {
251};
252
253enum class Numeric_type : ulong {
257};
258
259enum 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*/
281template <typename Enum, Enum Default_value>
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
320template <typename T>
323 T value; ///< undefined if is_default is true
324};
325
327 LEX_CSTRING prefix; ///< prefix is optional: prefix.str can be nullptr
329};
330
335};
336
338
340 Lexer_yystype lexer; // terminal values from the lexical scanner
341 /*
342 Hint parser section (sql_hints.yy)
343 */
350
351 /*
352 Main parser section (sql_yacc.yy)
353 */
354 int num;
371 struct {
382 const char *c_str;
383 struct {
387 struct {
388 const char *length;
389 const char *dec;
398 struct {
421 struct {
427 PT_subselect *subselect;
472 struct {
479
482 struct {
486 struct {
490 struct {
494 struct {
498 struct {
511 struct {
532 struct {
538 List<char> *name_list; // TODO: merge with string_list
543 PT_add_partition *add_partition_rule;
544 struct {
559 ulong field_option; // 0 or combinations of UNSIGNED_FLAG and ZEROFILL_FLAG
563 struct {
564 const char *expr_start;
568 struct {
574 struct {
584 struct {
595 // ON EMPTY/ON ERROR response for JSON_TABLE and JSON_VALUE.
600 struct {
606 struct {
615 struct {
637 void init() {
638 algo.init();
639 lock.init();
640 }
652 void init() {
653 algo.init();
654 lock.init();
655 validation.init();
656 }
658 algo.merge(x.algo);
659 lock.merge(x.lock);
660 validation.merge(x.validation);
661 }
663 struct {
667 struct {
668 Algo_and_lock_and_validation flags;
678 struct {
689 struct {
695 struct {
700 struct {
707 struct {
716 struct {
720};
721
722static_assert(sizeof(MY_SQL_PARSER_STYPE) <= 32, "YYSTYPE is too big");
724
725#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:4031
Dynamic parameters used as placeholders ('?') inside prepared statements.
Definition: item.h:4734
Definition: item.h:5417
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:932
Definition: sql_list.h:433
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:425
Definition: parse_tree_items.h:263
Definition: parse_tree_nodes.h:5010
Top-level node for the ALTER INSTANCE statement.
Definition: parse_tree_nodes.h:2186
Definition: parse_tree_nodes.h:4004
Definition: parse_tree_nodes.h:4392
Definition: parse_tree_nodes.h:4995
A template-free base class for index options that we can predeclare in sql_lex.h.
Definition: parse_tree_nodes.h:2202
Parse tree node for a single of a window extent's borders, cf.
Definition: parse_tree_nodes.h:1351
Parse tree node for one or both of a window extent's borders, cf.
Definition: parse_tree_nodes.h:1403
Base class for all column attributes in CREATE/ALTER TABLE
Definition: parse_tree_column_attrs.h:84
Definition: parse_tree_nodes.h:2972
Represents an element of the WITH list: WITH [...], [...] SELECT ..., ^ or ^ i.e.
Definition: parse_tree_nodes.h:272
Definition: parse_tree_nodes.h:2387
Base class for CREATE TABLE option nodes.
Definition: parse_tree_nodes.h:2516
Common base class for CREATE TABLE and ALTER TABLE option nodes.
Definition: parse_tree_nodes.h:2499
Definition: parse_tree_nodes.h:536
Parse tree node for a window frame's exclusions, cf.
Definition: parse_tree_nodes.h:1426
Base class for both generated and regular column definitions.
Definition: parse_tree_column_attrs.h:902
Parse tree node for a window's frame, cf.
Definition: parse_tree_nodes.h:1439
Definition: parse_tree_nodes.h:681
Definition: parse_tree_hints.h:99
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:1995
Definition: parse_tree_nodes.h:1254
Definition: parse_tree_nodes.h:1136
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:104
Definition: parse_tree_nodes.h:570
Definition: parse_tree_nodes.h:493
A key part specification.
Definition: parse_tree_nodes.h:2214
Definition: parse_tree_nodes.h:426
Definition: parse_tree_nodes.h:775
Definition: parse_tree_nodes.h:712
Definition: parse_tree_nodes.h:1060
Definition: parse_tree_nodes.h:873
Definition: parse_tree_nodes.h:213
Definition: parse_tree_nodes.h:231
Definition: parse_tree_nodes.h:701
Node for the PARTITION clause of CREATE/ALTER TABLE.
Definition: parse_tree_partitions.h:403
Definition: parse_tree_partitions.h:496
Node for a list of partitioning values in VALUES clauses.
Definition: parse_tree_partitions.h:344
Base class for partition value nodes: MAX_VALUE values or expressions.
Definition: parse_tree_partitions.h:293
Base class for VALUES partitioning clauses.
Definition: parse_tree_partitions.h:334
Base class for all partition options.
Definition: parse_tree_partitions.h:84
Node for the PARTITION definition clause.
Definition: parse_tree_partitions.h:624
Definition: parse_tree_nodes.h:5061
Definition: parse_tree_nodes.h:796
Definition: parse_tree_nodes.h:1595
Definition: parse_tree_nodes.h:1462
Definition: parse_tree_nodes.h:3143
Definition: parse_tree_nodes.h:1334
Definition: parse_tree_nodes.h:1297
Definition: parse_tree_nodes.h:851
Definition: parse_tree_nodes.h:1240
Definition: parse_tree_nodes.h:1181
Definition: parse_tree_nodes.h:987
Base class for all subpartitioning clause nodes.
Definition: parse_tree_partitions.h:440
Node for the SUBRAPTITION clause of CREATE/ALTER TABLE
Definition: parse_tree_partitions.h:272
Definition: parse_tree_nodes.h:1743
Definition: parse_tree_nodes.h:2429
Base class for column/constraint definitions in CREATE TABLE.
Definition: parse_tree_nodes.h:2424
Definition: parse_tree_nodes.h:448
Definition: parse_tree_nodes.h:1128
Definition: parse_tree_nodes.h:1144
Base class for all column type nodes.
Definition: parse_tree_column_attrs.h:555
Parse tree node for a list of window definitions corresponding to a <window clause> in SQL 2003.
Definition: parse_tree_window.h:62
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:363
Represents the WITH list.
Definition: parse_tree_nodes.h:341
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:229
Base class for all top-level nodes of SQL statements.
Definition: parse_tree_nodes.h:159
This class represents a query block, aka a query specification, which is a query consisting of a SELE...
Definition: sql_lex.h:1161
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:166
Definition: sql_lex.h:295
A (partial) implementation of std::deque allocating its blocks on a MEM_ROOT.
Definition: mem_root_deque.h:109
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:382
Definition: sp_head.h:122
A class representing one system variable - that is something that can be accessed as @global....
Definition: set_var.h:105
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:63
@ MYSQL_TYPE_TINY
Definition: field_types.h:56
@ MYSQL_TYPE_LONG
Definition: field_types.h:58
@ MYSQL_TYPE_NEWDECIMAL
Definition: field_types.h:79
@ MYSQL_TYPE_DOUBLE
Definition: field_types.h:60
@ MYSQL_TYPE_SHORT
Definition: field_types.h:57
@ MYSQL_TYPE_FLOAT
Definition: field_types.h:59
@ MYSQL_TYPE_INT24
Definition: field_types.h:64
Acl_type
Definition: sql_lex.h:262
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:454
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
borrowable::binary::Enum< true > Enum
Definition: classic_protocol_binary.h:329
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
Set_operator
Definition: parser_yystype.h:337
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
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
"public" interface to sys_var - server configuration variables.
enum_var_type
Definition: set_var.h:90
column_format_type
Definition: field.h:191
ts_alter_tablespace_type
Definition: handler.h:851
enum_tx_isolation
Definition: handler.h:3116
row_type
Definition: handler.h:682
index_hint_type
Definition: table.h:1387
enum_filetype
Definition: sql_exchange.h:31
enum_source_type
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:5169
Definition: parser_yystype.h:326
LEX_CSTRING prefix
prefix is optional: prefix.str can be nullptr
Definition: parser_yystype.h:327
LEX_CSTRING name
Definition: parser_yystype.h:328
Definition: m_ctype.h:422
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:52
uint sql_flags
Definition: handler.h:3721
uint flags
Definition: handler.h:3720
Definition: parse_tree_hints.h:44
Definition: table.h:2604
Definition: table.h:2713
The LEX object currently serves three different purposes:
Definition: sql_lex.h:3721
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:37
Definition: mysql_lex_string.h:39
Definition: mysql_lex_string.h:34
Enum_parser< Alter_info::enum_with_validation, Alter_info::ALTER_VALIDATION_DEFAULT > validation
Definition: parser_yystype.h:651
void init()
Definition: parser_yystype.h:652
void merge(const Algo_and_lock_and_validation &x)
Definition: parser_yystype.h:657
Enum_parser< Alter_info::enum_alter_table_lock, Alter_info::ALTER_TABLE_LOCK_DEFAULT > lock
Definition: parser_yystype.h:648
Enum_parser< Alter_info::enum_alter_table_algorithm, Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT > algo
Definition: parser_yystype.h:645
Definition: parser_yystype.h:630
void init()
Definition: parser_yystype.h:637
Enum_parser< Alter_info::enum_alter_table_lock, Alter_info::ALTER_TABLE_LOCK_DEFAULT > lock
Definition: parser_yystype.h:636
Enum_parser< Alter_info::enum_alter_table_algorithm, Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT > algo
Definition: parser_yystype.h:633
Definition: parser_yystype.h:611
LEX_STRING data
Definition: parser_yystype.h:613
int num_buckets
Definition: parser_yystype.h:612
Definition: parser_yystype.h:596
Item * default_string
Definition: parser_yystype.h:598
Json_on_response_type type
Definition: parser_yystype.h:597
Definition: parser_yystype.h:331
Item * expr
Definition: parser_yystype.h:334
Bipartite_name name
Definition: parser_yystype.h:333
enum_var_type type
Definition: parser_yystype.h:332
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:418
Definition: parser_yystype.h:196
bool save_to(Parse_context *)
Definition: sql_lex.cc:4928
ulonglong query_spec_options
Definition: parser_yystype.h:197
bool merge(const Query_options &a, const Query_options &b)
Definition: sql_lex.cc:4923
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
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:82
Explain_format_type
Values for explain_format sysvar.
Definition: system_variables.h:121
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:339
PT_hint * hint
Definition: parser_yystype.h:345
PT_query_expression_body * opt_query_expression
Definition: parser_yystype.h:588
int hndlrs
Definition: parser_yystype.h:399
LEX * lex
Definition: parser_yystype.h:402
Mem_root_array_YY< PT_base_index_option * > index_options
Definition: parser_yystype.h:516
enum_mysql_timestamp_type date_time_type
Definition: parser_yystype.h:394
PT_order * order
Definition: parser_yystype.h:447
PT_field_def_base * field_def
Definition: parser_yystype.h:567
chooser_compare_func_creator boolfunc2creator
Definition: parser_yystype.h:396
struct MY_SQL_PARSER_STYPE::Algo_and_lock opt_index_lock_and_algorithm
struct MY_SQL_PARSER_STYPE::@136 histogram
xa_option_words xa_option_type
Definition: parser_yystype.h:481
PT_create_table_option * create_table_option
Definition: parser_yystype.h:550
Set_operator query_operator
Definition: parser_yystype.h:713
List< Index_hint > * key_usage_list
Definition: parser_yystype.h:426
PT_item_list * set_var_list
Definition: parser_yystype.h:701
interval_type interval_time_st
Definition: parser_yystype.h:393
PT_borders * frame_extent
Definition: parser_yystype.h:441
struct MY_SQL_PARSER_STYPE::@126 lead_lag_info
Alter_info::enum_alter_table_algorithm alter_table_algorithm
Definition: parser_yystype.h:628
Mem_root_array< resourcegroups::Range > * resource_group_vcpu_list_type
Definition: parser_yystype.h:682
enum_filetype filetype
Definition: parser_yystype.h:405
Lock_strength lock_strength
Definition: parser_yystype.h:590
Diagnostics_information::Which_area diag_area
Definition: parser_yystype.h:410
struct MY_SQL_PARSER_STYPE::@134 json_on_error_or_empty
ulong ulong_num
Definition: parser_yystype.h:355
PT_border * bound
Definition: parser_yystype.h:442
const CHARSET_INFO * charset
Definition: parser_yystype.h:384
PT_frame * window_frame
Definition: parser_yystype.h:439
ts_alter_tablespace_type alter_tablespace_type
Definition: parser_yystype.h:705
struct MY_SQL_PARSER_STYPE::@131 fk_options
Mem_root_array< PT_part_definition * > * part_def_list
Definition: parser_yystype.h:537
Mem_root_array< PT_create_table_option * > * create_table_options
Definition: parser_yystype.h:551
Query_block * query_block
Definition: parser_yystype.h:395
PT_adm_partition * adm_partition
Definition: parser_yystype.h:673
PT_transaction_characteristics * transaction_characteristics
Definition: parser_yystype.h:457
decltype(HA_CHECK_OPT::flags) flags
Definition: parser_yystype.h:545
Create_col_name_list simple_ident_list
Definition: parser_yystype.h:522
bool force_binary
Definition: parser_yystype.h:385
struct MY_SQL_PARSER_STYPE::@128 opt_part_values
enum_tx_isolation tx_isolation
Definition: parser_yystype.h:381
LEX_CSTRING table_alias
Definition: parser_yystype.h:708
Show_cmd_type show_cmd_type
Definition: parser_yystype.h:610
struct MY_SQL_PARSER_STYPE::@124 column_row_value_list_pair
LEX_STRING * lex_str_ptr
Definition: parser_yystype.h:358
PT_item_list * value_list
Definition: parser_yystype.h:488
Ternary_option ternary_option
Definition: parser_yystype.h:549
struct MY_SQL_PARSER_STYPE::Histogram_param histogram_param
List< String > * columns
Definition: parser_yystype.h:617
Bipartite_name bipartite_name
Definition: parser_yystype.h:712
Sql_cmd_srs_attributes * sql_cmd_srs_attributes
Definition: parser_yystype.h:706
PT_alter_table_standalone_action * action
Definition: parser_yystype.h:669
List< LEX_USER > * user_list
Definition: parser_yystype.h:369
Parse_tree_root * top_level_node
Definition: parser_yystype.h:503
enum_source_type source_type
Definition: parser_yystype.h:406
const char * length
Definition: parser_yystype.h:388
Mem_root_array< PT_create_table_option * > * opt_create_table_options
Definition: parser_yystype.h:585
Item * offset
Definition: parser_yystype.h:499
PT_assign_to_keycache * assign_to_keycache
Definition: parser_yystype.h:671
const char * dec
Definition: parser_yystype.h:389
struct MY_SQL_PARSER_STYPE::@143 insert_update_values_reference
PT_transaction_access_mode * transaction_access_mode
Definition: parser_yystype.h:455
PT_locking_clause_list * locking_clause_list
Definition: parser_yystype.h:593
PT_query_expression_body * query_expression_body
Definition: parser_yystype.h:471
Mem_root_array< PT_subpartition * > * sub_part_list
Definition: parser_yystype.h:526
Table_ident * table_ident
Definition: parser_yystype.h:504
Item * set_var
Definition: parser_yystype.h:696
PT_alter_table_action * alter_table_action
Definition: parser_yystype.h:626
PT_query_expression_body * body
Definition: parser_yystype.h:473
ha_storage_media storage_media
Definition: parser_yystype.h:556
Diagnostics_information * diag_info
Definition: parser_yystype.h:411
Acl_type acl_type
Definition: parser_yystype.h:620
Mem_root_array< PT_role_or_privilege * > * role_or_privilege_list
Definition: parser_yystype.h:623
partition_type type
Definition: parser_yystype.h:533
fk_match_opt opt_match_clause
Definition: parser_yystype.h:572
ulonglong ulonglong_number
Definition: parser_yystype.h:356
Value_or_default< bool > resource_group_state_type
Definition: parser_yystype.h:684
PT_base_index_option * type
Definition: parser_yystype.h:513
delete_option_enum opt_delete_option
Definition: parser_yystype.h:506
column_format_type column_format
Definition: parser_yystype.h:555
PT_set * set
Definition: parser_yystype.h:460
enum_order order_direction
Definition: parser_yystype.h:624
PT_limit_clause * limit_clause
Definition: parser_yystype.h:433
Histogram_param * param
Definition: parser_yystype.h:618
Item * default_value
Definition: parser_yystype.h:500
enum row_type row_type
Definition: parser_yystype.h:378
PT_insert_values_list * values_list
Definition: parser_yystype.h:502
struct MY_SQL_PARSER_STYPE::@118 precision
Virtual_or_stored virtual_or_stored
Definition: parser_yystype.h:558
PT_joined_table * join_table
Definition: parser_yystype.h:449
struct MY_SQL_PARSER_STYPE::@140 explain_options_type
LEX_MFA * lex_mfa
Definition: parser_yystype.h:370
Condition_information_item::Name cond_info_item_name
Definition: parser_yystype.h:416
Mem_root_array< PT_partition_option * > * partition_option_list
Definition: parser_yystype.h:524
const char * expr_start
Definition: parser_yystype.h:564
sp_condition_value * spcondvalue
Definition: parser_yystype.h:397
PT_option_value_list_head * option_value_list
Definition: parser_yystype.h:453
Explain_format_type explain_format_type
Definition: parser_yystype.h:688
PT_into_destination * into_destination
Definition: parser_yystype.h:463
opt_hints_enum hint_type
Definition: parser_yystype.h:344
struct MY_SQL_PARSER_STYPE::@130 sp_default
PT_type * type
Definition: parser_yystype.h:561
Hint_param_table_list hint_param_table_list
Definition: parser_yystype.h:349
struct MY_SQL_PARSER_STYPE::@123 column_value_list_pair
struct MY_SQL_PARSER_STYPE::Json_on_response json_on_response
LEX_MFA * mfa3
Definition: parser_yystype.h:372
PT_query_primary * query_primary
Definition: parser_yystype.h:476
PT_derived_table * derived_table
Definition: parser_yystype.h:470
interval_type interval
Definition: parser_yystype.h:393
LEX_STRING explain_into_variable_name
Definition: parser_yystype.h:693
struct MY_SQL_PARSER_STYPE::@138 standalone_alter_table_action
enum_null_treatment null_treatment
Definition: parser_yystype.h:444
Mem_root_array< PT_assign_to_keycache * > * keycache_list
Definition: parser_yystype.h:672
Sql_cmd_analyze_table::Histogram_command command
Definition: parser_yystype.h:616
PT_part_value_item * part_value_item
Definition: parser_yystype.h:527
PT_partition_option * partition_option
Definition: parser_yystype.h:523
List< String > * string_list
Definition: parser_yystype.h:364
keytype key_type
Definition: parser_yystype.h:376
Item * column
Definition: parser_yystype.h:483
sys_var_with_base variable
Definition: parser_yystype.h:374
List< PT_key_part_specification > * index_column_list
Definition: parser_yystype.h:510
Set_signal_information * signal_item_list
Definition: parser_yystype.h:419
Statement_information_item::Name stmt_info_item_name
Definition: parser_yystype.h:413
Query_options select_options
Definition: parser_yystype.h:432
PT_part_values * values
Definition: parser_yystype.h:534
int vars
Definition: parser_yystype.h:399
PT_sub_partition * opt_sub_part
Definition: parser_yystype.h:540
struct MY_SQL_PARSER_STYPE::@129 mi_type
PT_group * group
Definition: parser_yystype.h:436
resourcegroups::platform::cpu_id_t start
Definition: parser_yystype.h:679
Hint_param_index_list hint_param_index_list
Definition: parser_yystype.h:347
fk_option m_fk_option
Definition: parser_yystype.h:407
Item * expr
Definition: parser_yystype.h:565
List< String > * set_expr_str_list
Definition: parser_yystype.h:703
struct MY_SQL_PARSER_STYPE::@120 trg_characteristics
PT_window * window
Definition: parser_yystype.h:438
char * simple_string
Definition: parser_yystype.h:360
LEX_MFA * mfa2
Definition: parser_yystype.h:372
PT_preload_keys * preload_keys
Definition: parser_yystype.h:674
Value_or_default< int > resource_group_priority_type
Definition: parser_yystype.h:683
PT_select_var * select_var_ident
Definition: parser_yystype.h:464
struct MY_SQL_PARSER_STYPE::@133 create_table_tail
LEX_STRING name
Definition: parser_yystype.h:512
Table_ident * table_name
Definition: parser_yystype.h:575
Int_type int_type
Definition: parser_yystype.h:560
PT_alter_table_standalone_action * alter_table_standalone_action
Definition: parser_yystype.h:627
int num
Definition: parser_yystype.h:354
Mem_root_array< PT_part_value_item_list_paren * > * part_value_list
Definition: parser_yystype.h:530
struct MY_SQL_PARSER_STYPE::Algo_and_lock_and_validation algo_and_lock_and_validation
PT_item_list * item_list2
Definition: parser_yystype.h:428
PT_partition * opt_partitioning
Definition: parser_yystype.h:586
List< Condition_information_item > * cond_info_list
Definition: parser_yystype.h:417
Parse_tree_node * node
Definition: parser_yystype.h:434
PT_order_list * order_list
Definition: parser_yystype.h:430
PT_query_expression * query_expression
Definition: parser_yystype.h:469
mem_root_deque< Item * > * item_list
Definition: parser_yystype.h:363
PT_alter_tablespace_option_base * ts_option
Definition: parser_yystype.h:676
enum_trigger_order_type ordering_clause
Definition: parser_yystype.h:422
struct MY_SQL_PARSER_STYPE::@139 vcpu_range_type
PT_create_index_stmt * create_index_stmt
Definition: parser_yystype.h:508
ha_rkey_function ha_rkey_mode
Definition: parser_yystype.h:379
struct MY_SQL_PARSER_STYPE::@122 column_value_pair
Line_separators line_separators
Definition: parser_yystype.h:461
Statement_information_item * stmt_info_item
Definition: parser_yystype.h:412
enum_from_first_last from_first_last
Definition: parser_yystype.h:445
enum_drop_mode opt_restrict
Definition: parser_yystype.h:548
Mem_root_array< PT_json_table_column * > * jtc_list
Definition: parser_yystype.h:594
Item_param * param_marker
Definition: parser_yystype.h:467
struct MY_SQL_PARSER_STYPE::@127 index_name_and_type
ha_key_alg key_alg
Definition: parser_yystype.h:377
Item * value
Definition: parser_yystype.h:484
enum_key_algorithm opt_key_algo
Definition: parser_yystype.h:539
PT_subpartition * sub_part_definition
Definition: parser_yystype.h:525
Json_on_response empty
Definition: parser_yystype.h:602
LEX_USER * lex_user
Definition: parser_yystype.h:368
struct MY_SQL_PARSER_STYPE::@137 alter_list
enum_window_frame_unit frame_units
Definition: parser_yystype.h:440
PT_with_clause * with_clause
Definition: parser_yystype.h:519
PT_part_definition * part_definition
Definition: parser_yystype.h:536
PT_item_list * column_list
Definition: parser_yystype.h:487
resourcegroups::Type resource_group_type
Definition: parser_yystype.h:686
Mem_root_array< ulonglong > * thread_id_list_type
Definition: parser_yystype.h:687
enum_condition_item_name da_condition_item_name
Definition: parser_yystype.h:409
const char * c_str
Definition: parser_yystype.h:382
Mem_root_array< PT_ddl_table_option * > * space_separated_alter_table_opts
Definition: parser_yystype.h:552
PT_column_attr_base * col_attr
Definition: parser_yystype.h:554
LEX_CSTRING schema_name_for_explain
Definition: parser_yystype.h:718
Mem_root_array< Table_ident * > * table_list
Definition: parser_yystype.h:366
PT_install_component_set_element * install_component_set_element
Definition: parser_yystype.h:714
PT_key_part_specification * key_part
Definition: parser_yystype.h:478
PT_option_value_no_option_type * option_value_no_option_type
Definition: parser_yystype.h:452
enum olap_type olap_type
Definition: parser_yystype.h:435
int curs
Definition: parser_yystype.h:399
enum_var_type var_type
Definition: parser_yystype.h:375
enum_yes_no_unknown m_yes_no_unk
Definition: parser_yystype.h:408
Mem_root_array< PT_part_value_item * > * part_value_item_list
Definition: parser_yystype.h:528
PT_start_option_value_list_following_option_type * start_option_value_list_following_option_type
Definition: parser_yystype.h:459
PT_exclusion * frame_exclusion
Definition: parser_yystype.h:443
PT_select_var_list * select_var_list
Definition: parser_yystype.h:465
Condition_information_item * cond_info_item
Definition: parser_yystype.h:415
fk_option fk_update_opt
Definition: parser_yystype.h:569
PT_role_or_privilege * role_or_privilege
Definition: parser_yystype.h:622
LEX_STRING wild
Definition: parser_yystype.h:607
Mem_root_array_YY< PT_table_reference * > table_reference_list
Definition: parser_yystype.h:466
Parse_tree_root * statement
Definition: parser_yystype.h:717
bool visibility
Definition: parser_yystype.h:518
Item_num * item_num
Definition: parser_yystype.h:362
PT_isolation_level * isolation_level
Definition: parser_yystype.h:456
Mem_root_array< LEX_CSTRING > * lex_cstring_list
Definition: parser_yystype.h:621
Json_on_response error
Definition: parser_yystype.h:601
struct MY_SQL_PARSER_STYPE::@135 wild_or_where
List< PT_install_component_set_element > * install_component_set_list
Definition: parser_yystype.h:715
bool is_analyze
Definition: parser_yystype.h:691
PT_insert_values_list * row_value_list
Definition: parser_yystype.h:492
Create_col_name_list * column_list
Definition: parser_yystype.h:709
Index_hint * key_usage_element
Definition: parser_yystype.h:425
Mem_root_array< PT_column_attr_base * > * col_attr_list
Definition: parser_yystype.h:557
Item_string * item_string
Definition: parser_yystype.h:446
PT_subselect * subselect
Definition: parser_yystype.h:427
PT_part_values * part_values
Definition: parser_yystype.h:531
my_thread_id query_id
Definition: parser_yystype.h:711
struct MY_SQL_PARSER_STYPE::@117 charset_with_opt_binary
int conds
Definition: parser_yystype.h:399
PT_part_value_item_list_paren * part_value_item_list_paren
Definition: parser_yystype.h:529
struct MY_SQL_PARSER_STYPE::@141 load_set_element
udf_func * udf
Definition: parser_yystype.h:367
PT_locking_clause * locking_clause
Definition: parser_yystype.h:592
PT_table_reference * table_reference
Definition: parser_yystype.h:448
fk_match_opt fk_match_option
Definition: parser_yystype.h:577
fk_option fk_delete_opt
Definition: parser_yystype.h:570
PT_column_def * column_def
Definition: parser_yystype.h:581
PT_item_list * set_expr_list
Definition: parser_yystype.h:702
resourcegroups::platform::cpu_id_t end
Definition: parser_yystype.h:680
LEX_CSTRING lex_cstr
Definition: parser_yystype.h:357
ulong field_option
Definition: parser_yystype.h:559
PT_alter_instance * alter_instance_cmd
Definition: parser_yystype.h:507
PT_add_partition * add_partition_rule
Definition: parser_yystype.h:543
Mem_root_array< PT_ddl_table_option * > * actions
Definition: parser_yystype.h:665
PT_joined_table_type join_type
Definition: parser_yystype.h:450
PT_subquery * subquery
Definition: parser_yystype.h:477
String * set_expr_str
Definition: parser_yystype.h:698
On_duplicate on_duplicate
Definition: parser_yystype.h:553
PT_window_list * windows
Definition: parser_yystype.h:437
XID * xid
Definition: parser_yystype.h:480
Field_separators field_separators
Definition: parser_yystype.h:462
Mem_root_array_YY< Table_ident * > table_ident_list
Definition: parser_yystype.h:505
PT_table_constraint_def * table_constraint_def
Definition: parser_yystype.h:509
Locked_row_action locked_row_action
Definition: parser_yystype.h:591
Mem_root_array< PT_alter_tablespace_option_base * > * ts_options
Definition: parser_yystype.h:677
enum_trigger_order_type trigger_action_order_type
Definition: parser_yystype.h:420
bool resource_group_flag_type
Definition: parser_yystype.h:685
Item * where
Definition: parser_yystype.h:608
PT_hint_list * hint_list
Definition: parser_yystype.h:346
PT_set_scoped_system_variable * option_value_following_option_type
Definition: parser_yystype.h:451
Alter_info::enum_with_validation with_validation
Definition: parser_yystype.h:625
PT_partition * partition_clause
Definition: parser_yystype.h:542
PT_common_table_expr * common_table_expr
Definition: parser_yystype.h:521
Mem_root_array_YY< LEX_STRING > lex_str_list
Definition: parser_yystype.h:517
PT_part_type_def * part_type_def
Definition: parser_yystype.h:541
Algo_and_lock_and_validation flags
Definition: parser_yystype.h:664
PT_query_expression_body * insert_query_expression
Definition: parser_yystype.h:496
sp_name * spname
Definition: parser_yystype.h:401
Hint_param_table hint_param_table
Definition: parser_yystype.h:348
decltype(HA_CHECK_OPT::sql_flags) sql_flags
Definition: parser_yystype.h:546
Item * item
Definition: parser_yystype.h:361
sp_head * sphead
Definition: parser_yystype.h:403
List< Statement_information_item > * stmt_info_list
Definition: parser_yystype.h:414
struct MY_SQL_PARSER_STYPE::@142 load_set_list
thr_lock_type lock_type
Definition: parser_yystype.h:392
enum_ha_read_modes ha_read_mode
Definition: parser_yystype.h:380
PT_start_option_value_list * start_option_value_list
Definition: parser_yystype.h:454
struct MY_SQL_PARSER_STYPE::@132 fk_references
PTI_text_literal * text_literal
Definition: parser_yystype.h:468
PT_order_expr * order_expr
Definition: parser_yystype.h:429
Item * set_expr
Definition: parser_yystype.h:697
Mem_root_array< PT_preload_keys * > * preload_list
Definition: parser_yystype.h:675
Mem_root_array< PT_table_element * > * table_element_list
Definition: parser_yystype.h:583
struct MY_SQL_PARSER_STYPE::@144 explainable_stmt
Table_ident * table
Definition: parser_yystype.h:359
struct MY_SQL_PARSER_STYPE::@116 lex_mfas
Numeric_type numeric_type
Definition: parser_yystype.h:562
struct MY_SQL_PARSER_STYPE::@119 spblock
String * string
Definition: parser_yystype.h:365
bool is_explicit
Definition: parser_yystype.h:692
Alter_info::enum_alter_table_lock alter_table_lock
Definition: parser_yystype.h:629
Limit_options limit_options
Definition: parser_yystype.h:431
LEX_CSTRING anchor_trigger_name
Definition: parser_yystype.h:423
bool is_not_empty
Definition: parser_yystype.h:418
struct MY_SQL_PARSER_STYPE::@121 query_expression_body_opt_parens
PT_json_table_column * jt_column
Definition: parser_yystype.h:604
Cast_type cast_type
Definition: parser_yystype.h:391
PT_base_index_option * index_option
Definition: parser_yystype.h:515
enum_jt_column jt_column_type
Definition: parser_yystype.h:605
Lexer_yystype lexer
Definition: parser_yystype.h:340
List< Key_part_spec > * reference_list
Definition: parser_yystype.h:573
PT_with_list * with_list
Definition: parser_yystype.h:520
List< char > * name_list
Definition: parser_yystype.h:538
PT_table_element * table_element
Definition: parser_yystype.h:582
bool is_parenthesized
Definition: parser_yystype.h:474
index_hint_type index_hint
Definition: parser_yystype.h:404
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:52