MySQL  8.0.18
Source Code Documentation
Go to the documentation of this file.
1 /* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
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.
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.
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  GNU General Public License, version 2.0, for more details.
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 */
26 #include "handler.h"
27 #include "key_spec.h" // keytype, fk_option
28 #include "my_base.h"
29 #include "my_time.h" // interval_type
30 #include "resourcegroups/platform/thread_attrs_api.h" // ...::cpu_id_t
31 #include "resourcegroups/resource_group_basic_types.h" // resourcegroups::Range
32 #include "sql/item_create.h" // Cast_target
33 #include "sql/lexer_yystype.h" // Lexer_yystype
34 #include "sql/opt_hints.h" // opt_hints_enum
35 #include "sql/parse_tree_hints.h"
36 #include "sql_admin.h" // Sql_cmd_analyze_table::Histogram_command
37 #include "sql_alter.h" // Alter_info::enum_with_validation
38 #include "sql_exchange.h" // Line_separators, enum_filetype
39 #include "sql_get_diagnostics.h" // Diagnostics_information::Which_area
40 #include "sql_signal.h" // enum_condition_item_name
41 #include "sql_string.h" // String
42 #include "table.h" // index_hint_type
43 #include "thr_lock.h" // thr_lock_type
44 #include "trigger_def.h" // enum_trigger_order_type
45 #include "window_lex.h" // enum_window_frame_unit
46 #include "xa.h" // xa_option_words
50 class Parse_tree_root;
51 class Table_ident;
52 enum class Acl_type;
53 enum class enum_ha_read_modes;
54 enum class enum_jt_column;
55 enum class enum_jtc_on : uint16;
56 enum class enum_key_algorithm;
57 enum class partition_type;
60 struct udf_func;
62 typedef Parse_tree_node_tmpl<Alter_tablespace_parse_context>
67 enum class enum_ha_read_modes;
69 /**
70  used by the parser to store internal variable name
71 */
75 };
78  DROP_DEFAULT, // mode is not specified
81 };
85 struct Cast_type {
88  const char *length;
89  const char *dec;
90 };
92 struct Limit_options {
95  /*
96  true for "LIMIT offset,limit" and false for "LIMIT limit OFFSET offset"
97  */
99 };
104  bool merge(const Query_options &a, const Query_options &b);
105  bool save_to(Parse_context *);
106 };
109  DELETE_QUICK = 1 << 0,
111  DELETE_IGNORE = 1 << 2
112 };
114 enum class Lock_strength { UPDATE, SHARE };
116 /// We will static_cast this one to thr_lock_type.
117 enum class Locked_row_action {
122 };
124 /**
125  Internally there is no CROSS JOIN join type, as cross joins are just a
126  special case of inner joins with a join condition that is always true. The
127  only difference is the nesting, and that is handled by the parser.
128 */
130  JTT_INNER = 0x01,
131  JTT_STRAIGHT = 0x02,
132  JTT_NATURAL = 0x04,
133  JTT_LEFT = 0x08,
134  JTT_RIGHT = 0x10,
140 };
144 enum class Ternary_option { DEFAULT, ON, OFF };
150 enum class Int_type : ulong {
156 };
158 enum class Numeric_type : ulong {
162 };
164 enum class Show_cmd_type {
169 };
171 /**
172  std::optional-like wrapper for simple bitmaps (usually enums of binary flags)
174  This template wraps trivial bitmap implementations to add two features:
176  * std::optional-like behavior -- the "unset" flag, so we don't have
177  to inject a special "invalid" value into existent enum types, this
178  wrapper class does that for us.
180  * the merge() function to merge two bitmap values in a type-safe way.
182  @tparam Enum Usually a enum type which simulates a bit set.
183  @tparam Default_value A default Enum value for "unset" variables.
185 */
186 template <typename Enum, Enum Default_value>
187 class Enum_parser {
188  public:
189  /// Constructor-like function
190  ///
191  /// The Enum_parser<> class is designed for use as a field of restricted
192  /// unions, so it can't have C++ constructors.
193  void init() { m_is_set = false; }
195  /// False if the wrapped Enum value is not assigned.
196  bool is_set() const { return m_is_set; }
198  /// Return the wrapped Enum value.
199  ///
200  /// @note The wrapped value must be assigned.
201  Enum get() const {
202  DBUG_ASSERT(is_set());
203  return m_enum;
204  }
206  /// Return the wrapped Enum value (if any) or the Default_value.
207  Enum get_or_default() const { return is_set() ? get() : Default_value; }
209  /// Assign the wrapped Enum value.
210  void set(Enum value) {
211  m_is_set = true;
212  m_enum = value;
213  }
215  /// Merge the x bit set into the wrapped Enum value (if any), or replace it
216  void merge(const Enum_parser &x) {
217  if (x.is_set()) set(x.get());
218  }
220  private:
221  bool m_is_set; ///< True if m_enum is assigned with some value
222  Enum m_enum; ///< The wrapped Enum value.
223 };
225 template <typename T>
228  T value; ///< undefined if is_default is true
229 };
233 // Compatibility with Bison 2.3:
238 union YYSTYPE {
239  Lexer_yystype lexer; // terminal values from the lexical scanner
240  /*
241  Hint parser section (sql_hints.yy)
242  */
244  class PT_hint *hint;
250  /*
251  Main parser section (sql_yacc.yy)
252  */
253  int num;
277  const char *c_str;
278  struct {
282  struct {
283  const char *length;
284  const char *dec;
285  } precision;
293  struct {
295  } spblock;
315  struct {
321  class PT_subselect *subselect;
330  class PT_group *group;
336  class PT_border *bound;
341  class PT_order *order;
356  class PT_set *set;
374  struct {
378  struct {
382  struct {
383  class PT_item_list *column_list;
386  struct {
387  class PT_item_list *column_list;
390  struct {
391  class Item *offset;
393  } lead_lag_info;
403  struct {
424  struct {
427  } opt_part_values;
430  List<char> *name_list; // TODO: merge with string_list
435  class PT_add_partition *add_partition_rule;
436  struct {
439  } mi_type;
451  ulong field_option; // 0 or combinations of UNSIGNED_FLAG and ZEROFILL_FLAG
453  class PT_type *type;
455  struct {
456  const char *expr_start;
458  } sp_default;
460  struct {
463  } fk_options;
466  struct {
472  } fk_references;
476  struct {
487  struct jt_on_response {
490  } jt_on_response;
491  struct {
497  struct {
500  } wild_or_where;
502  struct {
506  } histogram;
517  struct Algo_and_lock {
524  void init() {
525  algo.init();
526  lock.init();
527  }
539  void init() {
540  algo.init();
541  lock.init();
542  validation.init();
543  }
545  algo.merge(x.algo);
546  lock.merge(x.lock);
548  }
550  struct {
553  } alter_list;
554  struct {
555  Algo_and_lock_and_validation flags;
565  struct {
568  } vcpu_range_type;
576  struct {
581  struct {
585  } load_set_list;
588 };
590 static_assert(sizeof(YYSTYPE) <= 32, "YYSTYPE is too big");
int hndlrs
Definition: parser_yystype.h:294
Definition: sql_udf.h:42
class PT_part_value_item * part_value_item
Definition: parser_yystype.h:419
Definition: parser_yystype.h:83
Builder for SQL functions.
Definition: parser_yystype.h:226
Statement_information_item::Name stmt_info_item_name
Definition: parser_yystype.h:307
struct YYSTYPE::@79 create_table_tail
unsigned long long int ulonglong
Definition: my_inttypes.h:55
List< PT_key_part_specification > * index_column_list
Definition: parser_yystype.h:402
struct jt_on_response empty
Definition: parser_yystype.h:493
class PT_key_part_specification * key_part
Definition: parser_yystype.h:370
Condition_information_item * cond_info_item
Definition: parser_yystype.h:309
This file defines all base public constants related to triggers in MySQL.
enum index_hint_type index_hint
Definition: parser_yystype.h:299
Definition: parser_yystype.h:517
Definition: sql_cmd_srs.h:40
struct YYSTYPE::@83 alter_list
class PT_column_attr_base * col_attr
Definition: parser_yystype.h:446
ts_alter_tablespace_type alter_tablespace_type
Definition: parser_yystype.h:586
Item * limit
Definition: parser_yystype.h:93
Definition: parse_tree_nodes.h:235
Definition: window_lex.h:62
enum_condition_item_name da_condition_item_name
Definition: parser_yystype.h:303
Our own string classes, used pervasively throughout the executor.
enum fk_option m_fk_option
Definition: parser_yystype.h:301
Item * item
Definition: parser_yystype.h:260
class PT_subselect * subselect
Definition: parser_yystype.h:321
class Table_ident * table_ident
Definition: parser_yystype.h:396
struct YYSTYPE::@74 opt_part_values
Alter_info::enum_alter_table_lock alter_table_lock
Definition: parser_yystype.h:516
Set_signal_information * signal_item_list
Definition: parser_yystype.h:313
Definition: parser_yystype.h:131
class PT_border * bound
Definition: parser_yystype.h:336
class PT_internal_variable_name * internal_variable_name
Definition: parser_yystype.h:345
Definition: key_spec.h:64
Definition: mysql_lex_string.h:34
Specifies which (if any) of the commands UPDATE HISTOGRAM or DROP HISTOGRAM that is specified after A...
Definition: sql_admin.h:68
interval_type interval_time_st
Definition: parser_yystype.h:288
Definition: parse_tree_nodes.h:3295
Definition: parse_tree_nodes.h:4776
Definition: sql_lex.h:3192
Set_signal_information is a container used in the parsed tree to represent the collection of assignme...
Definition: sql_signal.h:67
decltype(HA_CHECK_OPT::flags) flags
Definition: parser_yystype.h:437
struct YYSTYPE::@85 vcpu_range_type
Definition: parser_yystype.h:138
Definition: parse_tree_nodes.h:967
Definition: parse_tree_nodes.h:1374
struct YYSTYPE::@81 wild_or_where
Definition: parse_tree_nodes.h:4938
bool visibility
Definition: parser_yystype.h:410
Enum m_enum
The wrapped Enum value.
Definition: parser_yystype.h:222
struct YYSTYPE::jt_on_response jt_on_response
enum enum_yes_no_unknown m_yes_no_unk
Definition: parser_yystype.h:302
class sp_condition_value * spcondvalue
Definition: parser_yystype.h:292
T value
undefined if is_default is true
Definition: parser_yystype.h:228
class Item * default_value
Definition: parser_yystype.h:392
Acl_type acl_type
Definition: parser_yystype.h:507
Node for a list of partitioning values in VALUES clauses.
Definition: parse_tree_partitions.h:325
Default value, used when it&#39;s not specified in the statement.
Definition: sql_alter.h:362
fk_option fk_update_opt
Definition: parser_yystype.h:461
enum_ha_read_modes ha_read_mode
Definition: parser_yystype.h:275
List< String > * set_expr_str_list
Definition: parser_yystype.h:584
class PT_alter_table_action * alter_table_action
Definition: parser_yystype.h:513
Hint_param_table_list hint_param_table_list
Definition: parser_yystype.h:248
Mem_root_array< PT_assign_to_keycache * > * keycache_list
Definition: parser_yystype.h:559
enum enum_null_treatment null_treatment
Definition: parser_yystype.h:338
Definition: field_types.h:59
Definition: parse_tree_nodes.h:249
struct YYSTYPE::@73 index_name_and_type
Item * opt_offset
Definition: parser_yystype.h:94
ulong field_option
Definition: parser_yystype.h:451
Definition: parse_tree_nodes.h:1254
PT_alter_tablespace_option_base * ts_option
Definition: parser_yystype.h:563
struct YYSTYPE::@65 precision
struct YYSTYPE::@72 lead_lag_info
bool is_set() const
False if the wrapped Enum value is not assigned.
Definition: parser_yystype.h:196
This class represents a query block, aka a query specification, which is a query consisting of a SELE...
Definition: sql_lex.h:971
class PT_item_list * item_list2
Definition: parser_yystype.h:322
Mem_root_array_YY< PT_base_index_option * > index_options
Definition: parser_yystype.h:408
Mem_root_array< resourcegroups::Range > * resource_group_vcpu_list_type
Definition: parser_yystype.h:569
PARTITION BY KEY ALGORITHM=N Which algorithm to use for hashing the fields.
Definition: partition_info.h:173
struct sys_var_with_base variable
Definition: parser_yystype.h:269
enum enum_tx_isolation tx_isolation
Definition: parser_yystype.h:276
Definition: item.h:4193
class PT_order_list * order_list
Definition: parser_yystype.h:324
Definition: parser_yystype.h:150
Definition: parser_yystype.h:148
Base class for all partition options.
Definition: parse_tree_partitions.h:81
Lock_strength lock_strength
Definition: parser_yystype.h:482
Mem_root_array_YY< LEX_STRING > lex_str_list
Definition: parser_yystype.h:409
class PT_transaction_access_mode * transaction_access_mode
Definition: parser_yystype.h:351
struct YYSTYPE::@76 sp_default
Definition: mysql_lex_string.h:39
enum_jt_column jt_column_type
Definition: parser_yystype.h:496
partition_type type
Definition: parser_yystype.h:425
const char * c_str
Definition: parser_yystype.h:277
Definition: field_types.h:61
Definition: window_lex.h:30
List< Item > * item_list
Definition: parser_yystype.h:262
class PT_option_value_list_head * option_value_list
Definition: parser_yystype.h:349
class PT_hint_list * hint_list
Definition: parser_yystype.h:245
Definition: parse_tree_hints.h:90
column_format_type column_format
Definition: parser_yystype.h:447
used by the parser to store internal variable name
Definition: parser_yystype.h:72
Definition: parse_tree_partitions.h:468
Diagnostics_information::Which_area diag_area
Definition: parser_yystype.h:304
Definition: parser_yystype.h:114
List< char > * name_list
Definition: parser_yystype.h:430
const char * dec
Definition: parser_yystype.h:89
Parse tree node for a window; just a shallow wrapper for class Window, q.v.
Definition: parse_tree_nodes.h:1775
class PT_derived_table * derived_table
Definition: parser_yystype.h:366
Mem_root_array_YY< PT_table_reference * > table_reference_list
Definition: parser_yystype.h:362
PT_base_index_option * index_option
Definition: parser_yystype.h:407
PT_json_table_column * jt_column
Definition: parser_yystype.h:495
Definition: parse_tree_nodes.h:523
Definition: sql_lex.h:219
struct YYSTYPE::@70 column_row_value_list_pair
class Item * offset
Definition: parser_yystype.h:391
Definition: sql_handler.h:34
String * string
Definition: parser_yystype.h:264
List< Statement_information_item > * stmt_info_list
Definition: parser_yystype.h:308
Base class for all column type nodes.
Definition: parse_tree_column_attrs.h:491
enum xa_option_words xa_option_type
Definition: parser_yystype.h:373
Definition: parser_yystype.h:79
Definition: field_types.h:60
Base class for all subpartitioning clause nodes.
Definition: parse_tree_partitions.h:418
class Index_hint * key_usage_element
Definition: parser_yystype.h:319
Definition: parser_yystype.h:144
int conds
Definition: parser_yystype.h:294
class PT_select_var * select_var_ident
Definition: parser_yystype.h:360
Definition: parser_yystype.h:77
class PT_with_clause * with_clause
Definition: parser_yystype.h:411
Definition: my_base.h:77
class PT_type * type
Definition: parser_yystype.h:453
List< Condition_information_item > * cond_info_list
Definition: parser_yystype.h:311
Definition: parser_yystype.h:231
Definition: parse_tree_nodes.h:2741
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:96
Node for the PARTITION definition clause.
Definition: parse_tree_partitions.h:590
Definition: parser_yystype.h:498
Enum_parser< Alter_info::enum_alter_table_lock, Alter_info::ALTER_TABLE_LOCK_DEFAULT > lock
Definition: parser_yystype.h:535
Item_num * item_num
Definition: parser_yystype.h:261
struct YYSTYPE::@84 standalone_alter_table_action
Mem_root_array< PT_subpartition * > * sub_part_list
Definition: parser_yystype.h:418
On_duplicate on_duplicate
Definition: parser_yystype.h:445
Definition: parse_tree_nodes.h:437
class PT_window_list * windows
Definition: parser_yystype.h:331
char * simple_string
Definition: parser_yystype.h:259
Item * set_expr
Definition: parser_yystype.h:578
Mem_root_array< ulonglong > * thread_id_list_type
Definition: parser_yystype.h:574
struct YYSTYPE::@67 trg_characteristics
Using this class is fraught with peril, and you need to be very careful when doing so...
Definition: sql_string.h:161
Alter_info::enum_with_validation with_validation
Definition: parser_yystype.h:512
class PT_window * window
Definition: parser_yystype.h:332
uint32_t cpu_id_t
Definition: thread_attrs_api.h:33
Definition: parse_tree_nodes.h:4062
Definition: parser_yystype.h:92
Diagnostics_information * diag_info
Definition: parser_yystype.h:305
void init()
Definition: parser_yystype.h:539
Definition: parser_yystype.h:136
Item * column
Definition: parser_yystype.h:375
Definition: parse_tree_items.h:284
Definition: parse_tree_nodes.h:2780
class PT_order * order
Definition: parser_yystype.h:341
Definition: thr_lock.h:96
Locked_row_action locked_row_action
Definition: parser_yystype.h:483
Definition: sql_lex.h:250
Parse_tree_node * node
Definition: parser_yystype.h:328
Item * value
Definition: parser_yystype.h:376
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:216
Base class for all column attributes in CREATE/ALTER TABLE
Definition: parse_tree_column_attrs.h:63
class PT_subpartition * sub_part_definition
Definition: parser_yystype.h:417
Definition: parse_tree_nodes.h:471
class PT_select_var_list * select_var_list
Definition: parser_yystype.h:361
const LEX_STRING * default_str
Definition: parser_yystype.h:489
Definition: parse_tree_nodes.h:1419
class PT_base_index_option * type
Definition: parser_yystype.h:405
An enum and a struct to handle partitioning and subpartitioning.
Definition: partition_element.h:32
class PT_query_primary * query_primary
Definition: parser_yystype.h:368
Definition: field_types.h:65
Base class for partition value nodes: MAX_VALUE values or expressions.
Definition: parse_tree_partitions.h:277
class PT_table_constraint_def * table_constraint_def
Definition: parser_yystype.h:401
Definition: parse_tree_nodes.h:4712
enum enum_trigger_order_type trigger_action_order_type
Definition: parser_yystype.h:314
void merge(const Algo_and_lock_and_validation &x)
Definition: parser_yystype.h:544
Placeholder (&#39;?&#39;) of prepared statement.
Definition: item.h:3659
fk_match_opt fk_match_option
Definition: parser_yystype.h:469
enum enum_var_type var_type
Definition: parser_yystype.h:270
Definition: sql_exchange.h:29
Mem_root_array< PT_part_value_item_list_paren * > * part_value_list
Definition: parser_yystype.h:422
class PT_locking_clause_list * locking_clause_list
Definition: parser_yystype.h:485
Represents the diagnostics information to be obtained.
Definition: sql_get_diagnostics.h:72
struct YYSTYPE::@64 charset_with_opt_binary
Definition: parse_tree_nodes.h:1064
class PT_column_def * column_def
Definition: parser_yystype.h:473
The name of a statement information item.
Definition: sql_get_diagnostics.h:176
This file includes constants used by all storage engines.
Parse tree node for a window frame&#39;s exclusions, cf.
Definition: parse_tree_nodes.h:1739
void init()
Constructor-like function.
Definition: parser_yystype.h:193
Mem_root_array< PT_part_value_item * > * part_value_item_list
Definition: parser_yystype.h:420
Definition: parser_yystype.h:139
struct YYSTYPE::Algo_and_lock_and_validation algo_and_lock_and_validation
Definition: parse_tree_nodes.h:1182
Definition: table.h:2367
int vars
Definition: parser_yystype.h:294
class PT_part_value_item_list_paren * part_value_item_list_paren
Definition: parser_yystype.h:421
A key part specification.
Definition: parse_tree_nodes.h:2572
#define DBUG_ASSERT(A)
Definition: my_dbug.h:197
The different values of the LOCK clause.
Definition: sql_alter.h:338
Hint types, MAX_HINT_ENUM should be always last.
Definition: opt_hints.h:62
bool is_not_empty
Definition: parser_yystype.h:312
Table_ident * table
Definition: parser_yystype.h:258
sp_head * sphead
Definition: parser_yystype.h:298
Definition: parser_yystype.h:65
Available interval types used in any statement.
Definition: my_time.h:384
Enum_parser< Alter_info::enum_alter_table_lock, Alter_info::ALTER_TABLE_LOCK_DEFAULT > lock
Definition: parser_yystype.h:523
A class representing one system variable - that is something that can be accessed as @global...
Definition: set_var.h:102
class PT_insert_values_list * values_list
Definition: parser_yystype.h:394
class PT_assign_to_keycache * assign_to_keycache
Definition: parser_yystype.h:558
class PT_create_table_option * create_table_option
Definition: parser_yystype.h:442
Definition: parser_yystype.h:65
Parse tree node for one or both of a window extent&#39;s borders, cf.
Definition: parse_tree_nodes.h:1717
interval_type interval
Definition: parser_yystype.h:288
int num
Definition: parser_yystype.h:253
Parse tree node for a single of a window extent&#39;s borders, cf.
Definition: parse_tree_nodes.h:1672
class PT_locking_clause * locking_clause
Definition: parser_yystype.h:484
fk_option fk_delete_opt
Definition: parser_yystype.h:462
Definition: thr_lock.h:50
bool save_to(Parse_context *)
XID * xid
Definition: parser_yystype.h:372
Mem_root_array_YY< Table_ident * > table_ident_list
Definition: parser_yystype.h:397
Algo_and_lock_and_validation flags
Definition: parser_yystype.h:551
Statement_information_item * stmt_info_item
Definition: parser_yystype.h:306
Definition: parser_yystype.h:110
Mem_root_array< PT_role_or_privilege * > * role_or_privilege_list
Definition: parser_yystype.h:510
Definition: parse_tree_nodes.h:1029
Definition: item.h:3112
Parse_tree_root * top_level_node
Definition: parser_yystype.h:395
struct YYSTYPE::Algo_and_lock opt_index_lock_and_algorithm
Mem_root_array< Table_ident * > * table_list
Definition: parser_yystype.h:265
Definition: parser_yystype.h:134
class PTI_text_literal * text_literal
Definition: parser_yystype.h:364
Table_ident * table_name
Definition: parser_yystype.h:467
keytype key_type
Definition: parser_yystype.h:271
List< Index_hint > * key_usage_list
Definition: parser_yystype.h:320
Enum_parser< Alter_info::enum_with_validation, Alter_info::ALTER_VALIDATION_DEFAULT > validation
Definition: parser_yystype.h:538
Item_string * item_string
Definition: parser_yystype.h:340
Definition: parser_yystype.h:78
uint flags
Definition: handler.h:3197
Type of columns for JSON_TABLE function.
Definition: table_function.h:186
PT_alter_table_standalone_action * action
Definition: parser_yystype.h:556
delete_option_enum opt_delete_option
Definition: parser_yystype.h:398
ulong ulong_num
Definition: parser_yystype.h:254
Definition: parser_yystype.h:529
uint sql_flags
Definition: handler.h:3198
LEX * lex
Definition: parser_yystype.h:297
class PT_role_or_privilege * role_or_privilege
Definition: parser_yystype.h:509
struct jt_on_response error
Definition: parser_yystype.h:492
class PT_isolation_level * isolation_level
Definition: parser_yystype.h:352
This class represents condition-value term in DECLARE CONDITION or DECLARE HANDLER statements...
Definition: sp_pcontext.h:131
Definition: my_base.h:114
class PT_hint * hint
Definition: parser_yystype.h:244
Mem_root_array_YY< LEX_CSTRING > Create_col_name_list
Definition: parser_yystype.h:142
class PT_start_option_value_list_following_option_type * start_option_value_list_following_option_type
Definition: parser_yystype.h:354
Mem_root_array< PT_create_table_option * > * opt_create_table_options
Definition: parser_yystype.h:477
resourcegroups::platform::cpu_id_t start
Definition: parser_yystype.h:566
Mem_root_array< PT_table_element * > * table_element_list
Definition: parser_yystype.h:475
Value_or_default< int > resource_group_priority_type
Definition: parser_yystype.h:570
enum_mysql_timestamp_type date_time_type
Definition: parser_yystype.h:289
Definition: parse_tree_nodes.h:921
const CHARSET_INFO * charset
Definition: parser_yystype.h:87
List< String > * columns
Definition: parser_yystype.h:504
chooser_compare_func_creator boolfunc2creator
Definition: parser_yystype.h:291
Definition: field_types.h:66
enum_jtc_on type
Definition: parser_yystype.h:488
struct YYSTYPE::@87 load_set_list
class PT_table_reference * table_reference
Definition: parser_yystype.h:342
LEX_USER * lex_user
Definition: parser_yystype.h:267
Definition: parser_yystype.h:164
Definition: key_spec.h:39
thr_lock_type lock_type
Definition: parser_yystype.h:287
Sql_cmd_srs_attributes * sql_cmd_srs_attributes
Definition: parser_yystype.h:587
Item * expr
Definition: parser_yystype.h:457
uint16_t uint16
Definition: my_inttypes.h:64
Definition: item.h:668
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:111
bool is_offset_first
Definition: parser_yystype.h:98
Definition: parse_tree_nodes.h:3701
class PT_group * group
Definition: parser_yystype.h:330
Definition: parse_tree_nodes.h:1949
enum ha_rkey_function ha_rkey_mode
Definition: parser_yystype.h:274
Field_separators field_separators
Definition: parser_yystype.h:358
class PT_sub_partition * opt_sub_part
Definition: parser_yystype.h:432
class PT_part_values * part_values
Definition: parser_yystype.h:423
struct xid_t is binary compatible with the XID structure as in the X/Open CAE Specification, Distributed Transaction Processing: The XA Specification, X/Open Company Ltd., 1991.
Definition: xa.h:213
Definition: resource_group_basic_types.h:32
enum alter_instance_action_enum alter_instance_action
Definition: parser_yystype.h:399
Definition: parser_yystype.h:108
class PT_exclusion * frame_exclusion
Definition: parser_yystype.h:337
Virtual_or_stored virtual_or_stored
Definition: parser_yystype.h:450
The class is a base class for representation of the different types of the hints. ...
Definition: parse_tree_hints.h:57
Definition: parse_tree_hints.h:44
class PT_item_list * column_list
Definition: parser_yystype.h:379
LEX_CSTRING base_name
Definition: parser_yystype.h:74
Definition: parser_yystype.h:146
Base class for CREATE TABLE option nodes.
Definition: parse_tree_nodes.h:2858
Definition: m_ctype.h:359
Definition: parser_yystype.h:133
Mem_root_array< PT_ddl_table_option * > * actions
Definition: parser_yystype.h:552
Int_type int_type
Definition: parser_yystype.h:452
Definition: field_types.h:58
fk_match_opt opt_match_clause
Definition: parser_yystype.h:464
Definition: parse_tree_nodes.h:1635
resourcegroups::platform::cpu_id_t end
Definition: parser_yystype.h:567
Enum_parser< Alter_info::enum_alter_table_algorithm, Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT > algo
Definition: parser_yystype.h:520
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:398
Query_options select_options
Definition: parser_yystype.h:326
class PT_create_index_stmt * create_index_stmt
Definition: parser_yystype.h:400
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:99
struct YYSTYPE::@86 load_set_element
A statement information item.
Definition: sql_get_diagnostics.h:173
class PT_partition_option * partition_option
Definition: parser_yystype.h:415
struct YYSTYPE::@78 fk_references
Definition: parse_tree_nodes.h:1522
sp_head represents one instance of a stored program.
Definition: sp_head.h:405
Represents the WITH list.
Definition: parse_tree_nodes.h:354
struct Limit_options limit_options
Definition: parser_yystype.h:325
Internally there is no CROSS JOIN join type, as cross joins are just a special case of inner joins wi...
Definition: parser_yystype.h:129
Mem_root_array< PT_column_attr_base * > * col_attr_list
Definition: parser_yystype.h:449
Definition: parse_tree_nodes.h:1358
Definition: parser_yystype.h:85
Mem_root_array< PT_json_table_column * > * jtc_list
Definition: parser_yystype.h:486
Hint_param_table hint_param_table
Definition: parser_yystype.h:247
class PT_query_expression_body * query_expression_body
Definition: parser_yystype.h:367
Definition: parse_tree_nodes.h:569
class PT_into_destination * into_destination
Definition: parser_yystype.h:359
Definition: key_spec.h:48
Alter_info::enum_alter_table_algorithm alter_table_algorithm
Definition: parser_yystype.h:515
LEX_CSTRING lex_cstr
Definition: parser_yystype.h:256
resourcegroups::Type resource_group_type
Definition: parser_yystype.h:573
Mem_root_array< PT_partition_option * > * partition_option_list
Definition: parser_yystype.h:416
class PT_preload_keys * preload_keys
Definition: parser_yystype.h:561
A condition information item.
Definition: sql_get_diagnostics.h:222
sp_name * spname
Definition: parser_yystype.h:296
List< String > * string_list
Definition: parser_yystype.h:263
class PT_start_option_value_list * start_option_value_list
Definition: parser_yystype.h:350
This enumeration list all the condition item names of a condition in the SQL condition area...
Definition: sql_signal.h:40
const char * length
Definition: parser_yystype.h:283
Definition: parser_yystype.h:101
int num_buckets
Definition: parser_yystype.h:505
class PT_insert_values_list * row_value_list
Definition: parser_yystype.h:384
enum_order order_direction
Definition: parser_yystype.h:511
struct YYSTYPE::@77 fk_options
Definition: parser_yystype.h:487
struct YYSTYPE::@66 spblock
Cast_target target
Definition: parser_yystype.h:86
enum_drop_mode opt_restrict
Definition: parser_yystype.h:440
class PT_table_element * table_element
Definition: parser_yystype.h:474
Definition: parse_tree_nodes.h:896
List< Key_part_spec > * reference_list
Definition: parser_yystype.h:465
Mem_root_array< LEX_CSTRING > * lex_cstring_list
Definition: parser_yystype.h:508
ulonglong query_spec_options
Definition: parser_yystype.h:102
Definition: parse_tree_nodes.h:3467
decltype(HA_CHECK_OPT::sql_flags) sql_flags
Definition: parser_yystype.h:438
The name of a condition information item.
Definition: sql_get_diagnostics.h:227
enum_window_frame_unit frame_units
Definition: parser_yystype.h:334
void init()
Definition: parser_yystype.h:524
A template-free base class for index options that we can predeclare in sql_lex.h. ...
Definition: parse_tree_nodes.h:2563
Definition: mysql_time.h:44
class PT_joined_table * join_table
Definition: parser_yystype.h:343
Definition: set_var.h:87
Helper for the sql_exchange class.
Definition: sql_exchange.h:50
const char * length
Definition: parser_yystype.h:88
Definition: parse_tree_nodes.h:1600
Definition: parser_yystype.h:65
class PT_partition * partition_clause
Definition: parser_yystype.h:434
bool is_default
Definition: parser_yystype.h:227
PT_query_expression * opt_query_expression
Definition: parser_yystype.h:480
sys_var * var
Definition: parser_yystype.h:73
Definition: parse_tree_nodes.h:791
class PT_part_type_def * part_type_def
Definition: parser_yystype.h:433
struct YYSTYPE::@69 column_value_list_pair
Definition: handler.h:812
enum enum_filetype filetype
Definition: parser_yystype.h:300
Definition: parser_yystype.h:83
Hint_param_index_list hint_param_index_list
Definition: parser_yystype.h:246
Definition: parser_yystype.h:65
Definition: parser_yystype.h:238
enum row_type row_type
Definition: parser_yystype.h:273
class PT_item_list * value_list
Definition: parser_yystype.h:380
Create_col_name_list simple_ident_list
Definition: parser_yystype.h:414
Definition: thr_lock.h:96
Definition: my_base.h:96
Definition: parser_yystype.h:132
Status of validation clause in ALTER TABLE statement.
Definition: sql_alter.h:356
Item * where
Definition: parser_yystype.h:499
We will static_cast this one to thr_lock_type.
Definition: parser_yystype.h:117
Definition: parse_tree_nodes.h:4726
Definition: parse_tree_nodes.h:1494
enum enum_from_first_last from_first_last
Definition: parser_yystype.h:339
struct YYSTYPE::@68 column_value_pair
Definition: sql_admin.h:372
Parse tree node for a window&#39;s frame, cf.
Definition: parse_tree_nodes.h:1751
Mem_root_array< PT_create_table_option * > * create_table_options
Definition: parser_yystype.h:443
Definition: parser_yystype.h:80
LEX_CSTRING anchor_trigger_name
Definition: parser_yystype.h:317
bool resource_group_flag_type
Definition: parser_yystype.h:572
Node for the PARTITION clause of CREATE/ALTER TABLE.
Definition: parse_tree_partitions.h:382
Ternary_option ternary_option
Definition: parser_yystype.h:441
class Item_param * param_marker
Definition: parser_yystype.h:363
LEX_STRING * lex_str_ptr
Definition: parser_yystype.h:257
class PT_add_partition * add_partition_rule
Definition: parser_yystype.h:435
class PT_query_expression * insert_query_expression
Definition: parser_yystype.h:388
const char * expr_start
Definition: parser_yystype.h:456
Definition: parser_yystype.h:404
bool merge(const Query_options &a, const Query_options &b)
std::optional-like wrapper for simple bitmaps (usually enums of binary flags)
Definition: parser_yystype.h:187
Definition: field_types.h:79
Mem_root_array< PT_preload_keys * > * preload_list
Definition: parser_yystype.h:562
The different values of the ALGORITHM clause.
Definition: sql_alter.h:320
const char * dec
Definition: parser_yystype.h:284
ha_storage_media storage_media
Definition: parser_yystype.h:448
enum_key_algorithm opt_key_algo
Definition: parser_yystype.h:431
class PT_alter_table_standalone_action * alter_table_standalone_action
Definition: parser_yystype.h:514
class PT_subquery * subquery
Definition: parser_yystype.h:369
Types of ON ERROR/ON EMPTY clause for JSON_TABLE function.
Definition: table_function.h:195
struct YYSTYPE::@82 histogram
Explain_format_type explain_format_type
Definition: parser_yystype.h:575
Enum get() const
Return the wrapped Enum value.
Definition: parser_yystype.h:201
class PT_adm_partition * adm_partition
Definition: parser_yystype.h:560
Definition: parser_yystype.h:137
udf_func * udf
Definition: parser_yystype.h:266
Definition: parse_tree_nodes.h:803
Definition: parser_yystype.h:83
Definition: parse_tree_nodes.h:2222
struct Cast_type cast_type
Definition: parser_yystype.h:286
Possible trigger ordering clause values:
Definition: trigger_def.h:63
Definition: parse_tree_nodes.h:1881
enum enum_trigger_order_type ordering_clause
Definition: parser_yystype.h:316
Definition: parse_tree_partitions.h:259
Definition: field_types.h:62
const string value("\alue\)
Base class for column/constraint definitions in CREATE TABLE.
Definition: parse_tree_nodes.h:2778
enum ha_key_alg key_alg
Definition: parser_yystype.h:272
String * set_expr_str
Definition: parser_yystype.h:579
Enum get_or_default() const
Return the wrapped Enum value (if any) or the Default_value.
Definition: parser_yystype.h:207
class PT_field_def_base * field_def
Definition: parser_yystype.h:459
Interface for low level time utilities.
Which Diagnostics Area to access.
Definition: sql_get_diagnostics.h:77
Definition: parse_tree_nodes.h:1808
SELECT_LEX * select_lex
Definition: parser_yystype.h:290
class PT_frame * window_frame
Definition: parser_yystype.h:333
Definition: key_spec.h:57
Mem_root_array< PT_alter_tablespace_option_base * > * ts_options
Definition: parser_yystype.h:564
class PT_borders * frame_extent
Definition: parser_yystype.h:335
class PT_part_definition * part_definition
Definition: parser_yystype.h:428
Common base class for CREATE TABLE and ALTER TABLE option nodes.
Definition: parse_tree_nodes.h:2844
Mem_root_array< PT_ddl_table_option * > * space_separated_alter_table_opts
Definition: parser_yystype.h:444
const CHARSET_INFO * charset
Definition: parser_yystype.h:279
Definition: field.h:191
Lexer_yystype lexer
Definition: parser_yystype.h:239
class PT_option_value_no_option_type * option_value_no_option_type
Definition: parser_yystype.h:348
opt_hints_enum hint_type
Definition: parser_yystype.h:243
Base class for VALUES partitioning clauses.
Definition: parse_tree_partitions.h:318
Line_separators line_separators
Definition: parser_yystype.h:357
enum PT_joined_table_type join_type
Definition: parser_yystype.h:344
PT_item_list * set_expr_list
Definition: parser_yystype.h:583
Base class for all top-level nodes of SQL statements.
Definition: parse_tree_nodes.h:159
Represents the WITH clause: WITH [...], [...] SELECT ..., ^^^^^^^^^^^^^^^^^.
Definition: parse_tree_nodes.h:374
PT_item_list * set_var_list
Definition: parser_yystype.h:582
class PT_with_list * with_list
Definition: parser_yystype.h:412
Definition: thr_lock.h:96
class PT_order_expr * order_expr
Definition: parser_yystype.h:323
PT_part_values * values
Definition: parser_yystype.h:426
class PT_transaction_characteristics * transaction_characteristics
Definition: parser_yystype.h:353
class PT_limit_clause * limit_clause
Definition: parser_yystype.h:327
struct YYSTYPE::@75 mi_type
Definition: parser_yystype.h:130
Definition: window_lex.h:57
Comp_creator *(* chooser_compare_func_creator)(bool invert)
Convenience typedef used in this file, and further used by any files including this file...
Definition: item_subselect.h:69
class PT_query_expression * query_expression
Definition: parser_yystype.h:365
Sql_cmd_analyze_table::Histogram_command command
Definition: parser_yystype.h:503
Definition: lexer_yystype.h:32
class PT_option_value_following_option_type * option_value_following_option_type
Definition: parser_yystype.h:346
Item * set_var
Definition: parser_yystype.h:577
unsigned long ulong
Definition: my_inttypes.h:48
Definition: table.h:1292
Show_cmd_type show_cmd_type
Definition: parser_yystype.h:501
bool m_is_set
True if m_enum is assigned with some value.
Definition: parser_yystype.h:221
bool force_binary
Definition: parser_yystype.h:280
Definition: sql_alter.h:340
Definition: handler.h:2615
Condition_information_item::Name cond_info_item_name
Definition: parser_yystype.h:310
PT_partition * opt_partitioning
Definition: parser_yystype.h:478
Numeric_type numeric_type
Definition: parser_yystype.h:454
Definition: parse_tree_nodes.h:778
Represents an element of the WITH list: WITH [...], [...] SELECT ..., ^ or ^ i.e. ...
Definition: parse_tree_nodes.h:288
Base class for both generated and regular column definitions.
Definition: parse_tree_column_attrs.h:834
enum olap_type olap_type
Definition: parser_yystype.h:329
ulonglong ulonglong_number
Definition: parser_yystype.h:255
Definition: sp_head.h:125
Definition: item_create.h:53
Definition: parser_yystype.h:158
Definition: thr_lock.h:96
struct YYSTYPE::@80 jt_on_error_or_empty
Definition: sql_lex.h:405
Definition: parser_yystype.h:111
Parse tree node for a list of window definitions corresponding to a <window clause> in SQL 2003...
Definition: parse_tree_nodes.h:1796
Value_or_default< bool > resource_group_state_type
Definition: parser_yystype.h:571
Definition: xa.h:49
Mem_root_array< PT_part_definition * > * part_def_list
Definition: parser_yystype.h:429
List< LEX_USER > * user_list
Definition: parser_yystype.h:268
Helper for the sql_exchange class.
Definition: sql_exchange.h:35
Definition: parse_tree_nodes.h:1366
class PT_common_table_expr * common_table_expr
Definition: parser_yystype.h:413
Definition: parser_yystype.h:109
Definition: parse_tree_nodes.h:600
Definition: handler.h:666
Enum_parser< Alter_info::enum_alter_table_algorithm, Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT > algo
Definition: parser_yystype.h:532
int curs
Definition: parser_yystype.h:294