MySQL  8.0.17
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/parser_yystype.h"
37 #include "sql_admin.h" // Sql_cmd_analyze_table::Histogram_command
38 #include "sql_alter.h" // Alter_info::enum_with_validation
39 #include "sql_exchange.h" // Line_separators, enum_filetype
40 #include "sql_get_diagnostics.h" // Diagnostics_information::Which_area
41 #include "sql_signal.h" // enum_condition_item_name
42 #include "sql_string.h" // String
43 #include "table.h" // index_hint_type
44 #include "thr_lock.h" // thr_lock_type
45 #include "trigger_def.h" // enum_trigger_order_type
46 #include "window_lex.h" // enum_window_frame_unit
47 #include "xa.h" // xa_option_words
51 class Parse_tree_root;
52 class Table_ident;
53 enum class Acl_type;
54 enum class enum_ha_read_modes;
55 enum class enum_jt_column;
56 enum class enum_jtc_on : uint16;
57 enum class enum_key_algorithm;
58 enum class partition_type;
61 struct udf_func;
63 typedef Parse_tree_node_tmpl<Alter_tablespace_parse_context>
68 enum class enum_ha_read_modes;
70 /**
71  used by the parser to store internal variable name
72 */
76 };
79  DROP_DEFAULT, // mode is not specified
82 };
86 struct Cast_type {
89  const char *length;
90  const char *dec;
91 };
93 struct Limit_options {
96  /*
97  true for "LIMIT offset,limit" and false for "LIMIT limit OFFSET offset"
98  */
100 };
105  bool merge(const Query_options &a, const Query_options &b);
106  bool save_to(Parse_context *);
107 };
110  DELETE_QUICK = 1 << 0,
112  DELETE_IGNORE = 1 << 2
113 };
115 enum class Lock_strength { UPDATE, SHARE };
117 /// We will static_cast this one to thr_lock_type.
118 enum class Locked_row_action {
123 };
125 /**
126  Internally there is no CROSS JOIN join type, as cross joins are just a
127  special case of inner joins with a join condition that is always true. The
128  only difference is the nesting, and that is handled by the parser.
129 */
131  JTT_INNER = 0x01,
132  JTT_STRAIGHT = 0x02,
133  JTT_NATURAL = 0x04,
134  JTT_LEFT = 0x08,
135  JTT_RIGHT = 0x10,
141 };
145 enum class Ternary_option { DEFAULT, ON, OFF };
151 enum class Int_type : ulong {
157 };
159 enum class Numeric_type : ulong {
163 };
165 enum class Show_cmd_type {
170 };
172 /**
173  std::optional-like wrapper for simple bitmaps (usually enums of binary flags)
175  This template wraps trivial bitmap implementations to add two features:
177  * std::optional-like behavior -- the "unset" flag, so we don't have
178  to inject a special "invalid" value into existent enum types, this
179  wrapper class does that for us.
181  * the merge() function to merge two bitmap values in a type-safe way.
183  @tparam Enum Usually a enum type which simulates a bit set.
184  @tparam Default_value A default Enum value for "unset" variables.
186 */
187 template <typename Enum, Enum Default_value>
188 class Enum_parser {
189  public:
190  /// Constructor-like function
191  ///
192  /// The Enum_parser<> class is designed for use as a field of restricted
193  /// unions, so it can't have C++ constructors.
194  void init() { m_is_set = false; }
196  /// False if the wrapped Enum value is not assigned.
197  bool is_set() const { return m_is_set; }
199  /// Return the wrapped Enum value.
200  ///
201  /// @note The wrapped value must be assigned.
202  Enum get() const {
203  DBUG_ASSERT(is_set());
204  return m_enum;
205  }
207  /// Return the wrapped Enum value (if any) or the Default_value.
208  Enum get_or_default() const { return is_set() ? get() : Default_value; }
210  /// Assign the wrapped Enum value.
211  void set(Enum value) {
212  m_is_set = true;
213  m_enum = value;
214  }
216  /// Merge the x bit set into the wrapped Enum value (if any), or replace it
217  void merge(const Enum_parser &x) {
218  if (x.is_set()) set(x.get());
219  }
221  private:
222  bool m_is_set; ///< True if m_enum is assigned with some value
223  Enum m_enum; ///< The wrapped Enum value.
224 };
226 template <typename T>
229  T value; ///< undefined if is_default is true
230 };
234 // Compatibility with Bison 2.3:
239 union YYSTYPE {
240  Lexer_yystype lexer; // terminal values from the lexical scanner
241  /*
242  Hint parser section (sql_hints.yy)
243  */
245  class PT_hint *hint;
251  /*
252  Main parser section (sql_yacc.yy)
253  */
254  int num;
278  const char *c_str;
279  struct {
283  struct {
284  const char *length;
285  const char *dec;
286  } precision;
294  struct {
296  } spblock;
316  struct {
322  class PT_subselect *subselect;
331  class PT_group *group;
337  class PT_border *bound;
342  class PT_order *order;
357  class PT_set *set;
375  struct {
379  struct {
383  struct {
384  class PT_item_list *column_list;
387  struct {
388  class PT_item_list *column_list;
391  struct {
392  class Item *offset;
394  } lead_lag_info;
404  struct {
425  struct {
428  } opt_part_values;
431  List<char> *name_list; // TODO: merge with string_list
436  class PT_add_partition *add_partition_rule;
437  struct {
440  } mi_type;
452  ulong field_option; // 0 or combinations of UNSIGNED_FLAG and ZEROFILL_FLAG
454  class PT_type *type;
456  struct {
457  const char *expr_start;
459  } sp_default;
461  struct {
464  } fk_options;
467  struct {
473  } fk_references;
477  struct {
488  struct jt_on_response {
491  } jt_on_response;
492  struct {
498  struct {
501  } wild_or_where;
503  struct {
507  } histogram;
518  struct Algo_and_lock {
525  void init() {
526  algo.init();
527  lock.init();
528  }
540  void init() {
541  algo.init();
542  lock.init();
543  validation.init();
544  }
546  algo.merge(x.algo);
547  lock.merge(x.lock);
549  }
551  struct {
554  } alter_list;
555  struct {
556  Algo_and_lock_and_validation flags;
566  struct {
569  } vcpu_range_type;
577  struct {
582  struct {
586  } load_set_list;
589 };
591 static_assert(sizeof(YYSTYPE) <= 32, "YYSTYPE is too big");
int hndlrs
Definition: parser_yystype.h:295
Definition: sql_udf.h:42
class PT_part_value_item * part_value_item
Definition: parser_yystype.h:420
Definition: parser_yystype.h:84
Builder for SQL functions.
Definition: parser_yystype.h:227
Statement_information_item::Name stmt_info_item_name
Definition: parser_yystype.h:308
unsigned long long int ulonglong
Definition: my_inttypes.h:74
List< PT_key_part_specification > * index_column_list
Definition: parser_yystype.h:403
struct jt_on_response empty
Definition: parser_yystype.h:494
class PT_key_part_specification * key_part
Definition: parser_yystype.h:371
Condition_information_item * cond_info_item
Definition: parser_yystype.h:310
This file defines all base public constants related to triggers in MySQL.
enum index_hint_type index_hint
Definition: parser_yystype.h:300
Definition: parser_yystype.h:518
Definition: sql_cmd_srs.h:40
class PT_column_attr_base * col_attr
Definition: parser_yystype.h:447
ts_alter_tablespace_type alter_tablespace_type
Definition: parser_yystype.h:587
Item * limit
Definition: parser_yystype.h:94
Definition: parse_tree_nodes.h:227
Definition: window_lex.h:62
enum_condition_item_name da_condition_item_name
Definition: parser_yystype.h:304
Our own string classes, used pervasively throughout the executor.
struct YYSTYPE::@62 opt_part_values
enum fk_option m_fk_option
Definition: parser_yystype.h:302
Item * item
Definition: parser_yystype.h:261
class PT_subselect * subselect
Definition: parser_yystype.h:322
class Table_ident * table_ident
Definition: parser_yystype.h:397
Alter_info::enum_alter_table_lock alter_table_lock
Definition: parser_yystype.h:517
Set_signal_information * signal_item_list
Definition: parser_yystype.h:314
Definition: parser_yystype.h:132
class PT_border * bound
Definition: parser_yystype.h:337
class PT_internal_variable_name * internal_variable_name
Definition: parser_yystype.h:346
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:289
Definition: parse_tree_nodes.h:3292
Definition: parse_tree_nodes.h:4773
Definition: sql_lex.h:3063
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:438
Definition: parser_yystype.h:139
Definition: parse_tree_nodes.h:925
Definition: parse_tree_nodes.h:1327
Definition: parse_tree_nodes.h:4935
bool visibility
Definition: parser_yystype.h:411
Enum m_enum
The wrapped Enum value.
Definition: parser_yystype.h:223
struct YYSTYPE::jt_on_response jt_on_response
enum enum_yes_no_unknown m_yes_no_unk
Definition: parser_yystype.h:303
class sp_condition_value * spcondvalue
Definition: parser_yystype.h:293
T value
undefined if is_default is true
Definition: parser_yystype.h:229
class Item * default_value
Definition: parser_yystype.h:393
Acl_type acl_type
Definition: parser_yystype.h:508
Node for a list of partitioning values in VALUES clauses.
Definition: parse_tree_partitions.h:325
struct YYSTYPE::@63 mi_type
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:462
enum_ha_read_modes ha_read_mode
Definition: parser_yystype.h:276
List< String > * set_expr_str_list
Definition: parser_yystype.h:585
class PT_alter_table_action * alter_table_action
Definition: parser_yystype.h:514
Hint_param_table_list hint_param_table_list
Definition: parser_yystype.h:249
Mem_root_array< PT_assign_to_keycache * > * keycache_list
Definition: parser_yystype.h:560
enum enum_null_treatment null_treatment
Definition: parser_yystype.h:339
Definition: field_types.h:59
struct YYSTYPE::@67 create_table_tail
Definition: parse_tree_nodes.h:241
Item * opt_offset
Definition: parser_yystype.h:95
ulong field_option
Definition: parser_yystype.h:452
Definition: parse_tree_nodes.h:1207
PT_alter_tablespace_option_base * ts_option
Definition: parser_yystype.h:564
bool is_set() const
False if the wrapped Enum value is not assigned.
Definition: parser_yystype.h:197
This class represents a query block, aka a query specification, which is a query consisting of a SELE...
Definition: sql_lex.h:847
class PT_item_list * item_list2
Definition: parser_yystype.h:323
Mem_root_array_YY< PT_base_index_option * > index_options
Definition: parser_yystype.h:409
Mem_root_array< resourcegroups::Range > * resource_group_vcpu_list_type
Definition: parser_yystype.h:570
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:270
enum enum_tx_isolation tx_isolation
Definition: parser_yystype.h:277
Definition: item.h:4200
class PT_order_list * order_list
Definition: parser_yystype.h:325
Definition: parser_yystype.h:151
Definition: parser_yystype.h:149
Base class for all partition options.
Definition: parse_tree_partitions.h:81
Lock_strength lock_strength
Definition: parser_yystype.h:483
Mem_root_array_YY< LEX_STRING > lex_str_list
Definition: parser_yystype.h:410
class PT_transaction_access_mode * transaction_access_mode
Definition: parser_yystype.h:352
struct YYSTYPE::@60 lead_lag_info
Definition: mysql_lex_string.h:39
enum_jt_column jt_column_type
Definition: parser_yystype.h:497
partition_type type
Definition: parser_yystype.h:426
const char * c_str
Definition: parser_yystype.h:278
Definition: field_types.h:61
Definition: window_lex.h:30
List< Item > * item_list
Definition: parser_yystype.h:263
class PT_option_value_list_head * option_value_list
Definition: parser_yystype.h:350
class PT_hint_list * hint_list
Definition: parser_yystype.h:246
Definition: parse_tree_hints.h:90
column_format_type column_format
Definition: parser_yystype.h:448
used by the parser to store internal variable name
Definition: parser_yystype.h:73
Definition: parse_tree_partitions.h:468
Diagnostics_information::Which_area diag_area
Definition: parser_yystype.h:305
Definition: parser_yystype.h:115
List< char > * name_list
Definition: parser_yystype.h:431
const char * dec
Definition: parser_yystype.h:90
Parse tree node for a window; just a shallow wrapper for class Window, q.v.
Definition: parse_tree_nodes.h:1728
class PT_derived_table * derived_table
Definition: parser_yystype.h:367
Mem_root_array_YY< PT_table_reference * > table_reference_list
Definition: parser_yystype.h:363
PT_base_index_option * index_option
Definition: parser_yystype.h:408
PT_json_table_column * jt_column
Definition: parser_yystype.h:496
Definition: parse_tree_nodes.h:520
Definition: sql_lex.h:217
class Item * offset
Definition: parser_yystype.h:392
Definition: sql_handler.h:34
String * string
Definition: parser_yystype.h:265
List< Statement_information_item > * stmt_info_list
Definition: parser_yystype.h:309
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:374
Definition: parser_yystype.h:80
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:320
Definition: parser_yystype.h:145
int conds
Definition: parser_yystype.h:295
class PT_select_var * select_var_ident
Definition: parser_yystype.h:361
Definition: parser_yystype.h:78
class PT_with_clause * with_clause
Definition: parser_yystype.h:412
Definition: my_base.h:77
class PT_type * type
Definition: parser_yystype.h:454
List< Condition_information_item > * cond_info_list
Definition: parser_yystype.h:312
Definition: parser_yystype.h:232
Definition: parse_tree_nodes.h:2738
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:499
Enum_parser< Alter_info::enum_alter_table_lock, Alter_info::ALTER_TABLE_LOCK_DEFAULT > lock
Definition: parser_yystype.h:536
Item_num * item_num
Definition: parser_yystype.h:262
Mem_root_array< PT_subpartition * > * sub_part_list
Definition: parser_yystype.h:419
struct YYSTYPE::@64 sp_default
struct YYSTYPE::@69 wild_or_where
On_duplicate on_duplicate
Definition: parser_yystype.h:446
Definition: parse_tree_nodes.h:429
class PT_window_list * windows
Definition: parser_yystype.h:332
char * simple_string
Definition: parser_yystype.h:260
Item * set_expr
Definition: parser_yystype.h:579
Mem_root_array< ulonglong > * thread_id_list_type
Definition: parser_yystype.h:575
Using this class is fraught with peril, and you need to be very careful when doing so...
Definition: sql_string.h:159
Alter_info::enum_with_validation with_validation
Definition: parser_yystype.h:513
struct YYSTYPE::@70 histogram
class PT_window * window
Definition: parser_yystype.h:333
uint32_t cpu_id_t
Definition: thread_attrs_api.h:33
Definition: parse_tree_nodes.h:4059
struct YYSTYPE::@71 alter_list
Definition: parser_yystype.h:93
Diagnostics_information * diag_info
Definition: parser_yystype.h:306
void init()
Definition: parser_yystype.h:540
Definition: parser_yystype.h:137
Item * column
Definition: parser_yystype.h:376
Definition: parse_tree_items.h:303
struct YYSTYPE::@55 trg_characteristics
Definition: parse_tree_nodes.h:2777
class PT_order * order
Definition: parser_yystype.h:342
Definition: thr_lock.h:96
Locked_row_action locked_row_action
Definition: parser_yystype.h:484
Definition: sql_lex.h:248
Parse_tree_node * node
Definition: parser_yystype.h:329
Item * value
Definition: parser_yystype.h:377
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:217
Base class for all column attributes in CREATE/ALTER TABLE
Definition: parse_tree_column_attrs.h:63
struct YYSTYPE::@74 load_set_element
class PT_subpartition * sub_part_definition
Definition: parser_yystype.h:418
Definition: parse_tree_nodes.h:468
class PT_select_var_list * select_var_list
Definition: parser_yystype.h:362
const LEX_STRING * default_str
Definition: parser_yystype.h:490
Definition: parse_tree_nodes.h:1372
class PT_base_index_option * type
Definition: parser_yystype.h:406
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:369
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:402
Definition: parse_tree_nodes.h:4709
enum enum_trigger_order_type trigger_action_order_type
Definition: parser_yystype.h:315
void merge(const Algo_and_lock_and_validation &x)
Definition: parser_yystype.h:545
Placeholder (&#39;?&#39;) of prepared statement.
Definition: item.h:3667
fk_match_opt fk_match_option
Definition: parser_yystype.h:470
enum enum_var_type var_type
Definition: parser_yystype.h:271
Definition: sql_exchange.h:29
Mem_root_array< PT_part_value_item_list_paren * > * part_value_list
Definition: parser_yystype.h:423
class PT_locking_clause_list * locking_clause_list
Definition: parser_yystype.h:486
Represents the diagnostics information to be obtained.
Definition: sql_get_diagnostics.h:72
Definition: parse_tree_nodes.h:1023
class PT_column_def * column_def
Definition: parser_yystype.h:474
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:1692
void init()
Constructor-like function.
Definition: parser_yystype.h:194
Mem_root_array< PT_part_value_item * > * part_value_item_list
Definition: parser_yystype.h:421
Definition: parser_yystype.h:140
struct YYSTYPE::Algo_and_lock_and_validation algo_and_lock_and_validation
Definition: parse_tree_nodes.h:1141
Definition: table.h:2342
int vars
Definition: parser_yystype.h:295
class PT_part_value_item_list_paren * part_value_item_list_paren
Definition: parser_yystype.h:422
A key part specification.
Definition: parse_tree_nodes.h:2569
#define DBUG_ASSERT(A)
Definition: my_dbug.h:183
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
struct YYSTYPE::@54 spblock
bool is_not_empty
Definition: parser_yystype.h:313
Table_ident * table
Definition: parser_yystype.h:259
sp_head * sphead
Definition: parser_yystype.h:299
Definition: parser_yystype.h:66
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:524
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:395
class PT_assign_to_keycache * assign_to_keycache
Definition: parser_yystype.h:559
class PT_create_table_option * create_table_option
Definition: parser_yystype.h:443
Definition: parser_yystype.h:66
Parse tree node for one or both of a window extent&#39;s borders, cf.
Definition: parse_tree_nodes.h:1670
interval_type interval
Definition: parser_yystype.h:289
int num
Definition: parser_yystype.h:254
Parse tree node for a single of a window extent&#39;s borders, cf.
Definition: parse_tree_nodes.h:1625
class PT_locking_clause * locking_clause
Definition: parser_yystype.h:485
fk_option fk_delete_opt
Definition: parser_yystype.h:463
Definition: thr_lock.h:50
bool save_to(Parse_context *)
XID * xid
Definition: parser_yystype.h:373
Mem_root_array_YY< Table_ident * > table_ident_list
Definition: parser_yystype.h:398
Algo_and_lock_and_validation flags
Definition: parser_yystype.h:552
Statement_information_item * stmt_info_item
Definition: parser_yystype.h:307
Definition: parser_yystype.h:111
Mem_root_array< PT_role_or_privilege * > * role_or_privilege_list
Definition: parser_yystype.h:511
Definition: parse_tree_nodes.h:988
Definition: item.h:3120
Parse_tree_root * top_level_node
Definition: parser_yystype.h:396
struct YYSTYPE::Algo_and_lock opt_index_lock_and_algorithm
Mem_root_array< Table_ident * > * table_list
Definition: parser_yystype.h:266
Definition: parser_yystype.h:135
class PTI_text_literal * text_literal
Definition: parser_yystype.h:365
Table_ident * table_name
Definition: parser_yystype.h:468
keytype key_type
Definition: parser_yystype.h:272
List< Index_hint > * key_usage_list
Definition: parser_yystype.h:321
Enum_parser< Alter_info::enum_with_validation, Alter_info::ALTER_VALIDATION_DEFAULT > validation
Definition: parser_yystype.h:539
Item_string * item_string
Definition: parser_yystype.h:341
Definition: parser_yystype.h:79
uint flags
Definition: handler.h:3175
struct YYSTYPE::@61 index_name_and_type
Type of columns for JSON_TABLE function.
Definition: table_function.h:186
PT_alter_table_standalone_action * action
Definition: parser_yystype.h:557
delete_option_enum opt_delete_option
Definition: parser_yystype.h:399
ulong ulong_num
Definition: parser_yystype.h:255
Definition: my_tree.h:67
Definition: parser_yystype.h:530
LEX_STRING base_name
Definition: parser_yystype.h:75
uint sql_flags
Definition: handler.h:3176
LEX * lex
Definition: parser_yystype.h:298
class PT_role_or_privilege * role_or_privilege
Definition: parser_yystype.h:510
struct jt_on_response error
Definition: parser_yystype.h:493
class PT_isolation_level * isolation_level
Definition: parser_yystype.h:353
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:245
Mem_root_array_YY< LEX_CSTRING > Create_col_name_list
Definition: parser_yystype.h:143
class PT_start_option_value_list_following_option_type * start_option_value_list_following_option_type
Definition: parser_yystype.h:355
Mem_root_array< PT_create_table_option * > * opt_create_table_options
Definition: parser_yystype.h:478
struct YYSTYPE::@65 fk_options
resourcegroups::platform::cpu_id_t start
Definition: parser_yystype.h:567
Mem_root_array< PT_table_element * > * table_element_list
Definition: parser_yystype.h:476
Value_or_default< int > resource_group_priority_type
Definition: parser_yystype.h:571
enum_mysql_timestamp_type date_time_type
Definition: parser_yystype.h:290
Definition: parse_tree_nodes.h:918
struct YYSTYPE::@56 column_value_pair
const CHARSET_INFO * charset
Definition: parser_yystype.h:88
List< String > * columns
Definition: parser_yystype.h:505
chooser_compare_func_creator boolfunc2creator
Definition: parser_yystype.h:292
Definition: field_types.h:66
enum_jtc_on type
Definition: parser_yystype.h:489
class PT_table_reference * table_reference
Definition: parser_yystype.h:343
LEX_USER * lex_user
Definition: parser_yystype.h:268
Definition: parser_yystype.h:165
struct YYSTYPE::@73 vcpu_range_type
Definition: key_spec.h:39
thr_lock_type lock_type
Definition: parser_yystype.h:288
Sql_cmd_srs_attributes * sql_cmd_srs_attributes
Definition: parser_yystype.h:588
Item * expr
Definition: parser_yystype.h:458
uint16_t uint16
Definition: my_inttypes.h:60
Definition: item.h:666
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:111
struct YYSTYPE::@52 charset_with_opt_binary
bool is_offset_first
Definition: parser_yystype.h:99
Definition: parse_tree_nodes.h:3698
struct YYSTYPE::@72 standalone_alter_table_action
class PT_group * group
Definition: parser_yystype.h:331
Definition: parse_tree_nodes.h:1945
enum ha_rkey_function ha_rkey_mode
Definition: parser_yystype.h:275
Field_separators field_separators
Definition: parser_yystype.h:359
class PT_sub_partition * opt_sub_part
Definition: parser_yystype.h:433
class PT_part_values * part_values
Definition: parser_yystype.h:424
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:212
Definition: resource_group_basic_types.h:32
enum alter_instance_action_enum alter_instance_action
Definition: parser_yystype.h:400
Definition: parser_yystype.h:109
class PT_exclusion * frame_exclusion
Definition: parser_yystype.h:338
Virtual_or_stored virtual_or_stored
Definition: parser_yystype.h:451
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:380
Definition: parser_yystype.h:147
Base class for CREATE TABLE option nodes.
Definition: parse_tree_nodes.h:2855
Definition: m_ctype.h:359
Definition: parser_yystype.h:134
Mem_root_array< PT_ddl_table_option * > * actions
Definition: parser_yystype.h:553
Int_type int_type
Definition: parser_yystype.h:453
Definition: field_types.h:58
fk_match_opt opt_match_clause
Definition: parser_yystype.h:465
Definition: parse_tree_nodes.h:1588
resourcegroups::platform::cpu_id_t end
Definition: parser_yystype.h:568
Enum_parser< Alter_info::enum_alter_table_algorithm, Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT > algo
Definition: parser_yystype.h:521
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:397
struct YYSTYPE::@66 fk_references
Query_options select_options
Definition: parser_yystype.h:327
class PT_create_index_stmt * create_index_stmt
Definition: parser_yystype.h:401
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:99
A statement information item.
Definition: sql_get_diagnostics.h:173
class PT_partition_option * partition_option
Definition: parser_yystype.h:416
Definition: parse_tree_nodes.h:1475
sp_head represents one instance of a stored program.
Definition: sp_head.h:405
Represents the WITH list.
Definition: parse_tree_nodes.h:346
struct YYSTYPE::@57 column_value_list_pair
struct Limit_options limit_options
Definition: parser_yystype.h:326
Internally there is no CROSS JOIN join type, as cross joins are just a special case of inner joins wi...
Definition: parser_yystype.h:130
Mem_root_array< PT_column_attr_base * > * col_attr_list
Definition: parser_yystype.h:450
Definition: parse_tree_nodes.h:1311
Definition: parser_yystype.h:86
Mem_root_array< PT_json_table_column * > * jtc_list
Definition: parser_yystype.h:487
Hint_param_table hint_param_table
Definition: parser_yystype.h:248
class PT_query_expression_body * query_expression_body
Definition: parser_yystype.h:368
Definition: parse_tree_nodes.h:566
class PT_into_destination * into_destination
Definition: parser_yystype.h:360
Definition: key_spec.h:48
Alter_info::enum_alter_table_algorithm alter_table_algorithm
Definition: parser_yystype.h:516
LEX_CSTRING lex_cstr
Definition: parser_yystype.h:257
resourcegroups::Type resource_group_type
Definition: parser_yystype.h:574
Mem_root_array< PT_partition_option * > * partition_option_list
Definition: parser_yystype.h:417
class PT_preload_keys * preload_keys
Definition: parser_yystype.h:562
A condition information item.
Definition: sql_get_diagnostics.h:222
sp_name * spname
Definition: parser_yystype.h:297
List< String > * string_list
Definition: parser_yystype.h:264
class PT_start_option_value_list * start_option_value_list
Definition: parser_yystype.h:351
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:284
Definition: parser_yystype.h:102
int num_buckets
Definition: parser_yystype.h:506
class PT_insert_values_list * row_value_list
Definition: parser_yystype.h:385
enum_order order_direction
Definition: parser_yystype.h:512
struct YYSTYPE::@53 precision
struct YYSTYPE::@68 jt_on_error_or_empty
Definition: parser_yystype.h:488
Cast_target target
Definition: parser_yystype.h:87
enum_drop_mode opt_restrict
Definition: parser_yystype.h:441
class PT_table_element * table_element
Definition: parser_yystype.h:475
Definition: parse_tree_nodes.h:893
List< Key_part_spec > * reference_list
Definition: parser_yystype.h:466
Mem_root_array< LEX_CSTRING > * lex_cstring_list
Definition: parser_yystype.h:509
ulonglong query_spec_options
Definition: parser_yystype.h:103
Definition: parse_tree_nodes.h:3464
decltype(HA_CHECK_OPT::sql_flags) sql_flags
Definition: parser_yystype.h:439
The name of a condition information item.
Definition: sql_get_diagnostics.h:227
enum_window_frame_unit frame_units
Definition: parser_yystype.h:335
void init()
Definition: parser_yystype.h:525
A template-free base class for index options that we can predeclare in sql_lex.h. ...
Definition: parse_tree_nodes.h:2560
Definition: mysql_time.h:44
class PT_joined_table * join_table
Definition: parser_yystype.h:344
Definition: set_var.h:87
Helper for the sql_exchange class.
Definition: sql_exchange.h:50
const char * length
Definition: parser_yystype.h:89
Definition: parse_tree_nodes.h:1553
Definition: parser_yystype.h:66
struct YYSTYPE::@58 column_row_value_list_pair
class PT_partition * partition_clause
Definition: parser_yystype.h:435
bool is_default
Definition: parser_yystype.h:228
PT_query_expression * opt_query_expression
Definition: parser_yystype.h:481
sys_var * var
Definition: parser_yystype.h:74
Definition: parse_tree_nodes.h:788
class PT_part_type_def * part_type_def
Definition: parser_yystype.h:434
Definition: handler.h:818
enum enum_filetype filetype
Definition: parser_yystype.h:301
Definition: parser_yystype.h:84
Hint_param_index_list hint_param_index_list
Definition: parser_yystype.h:247
Definition: parser_yystype.h:66
Definition: parser_yystype.h:239
enum row_type row_type
Definition: parser_yystype.h:274
class PT_item_list * value_list
Definition: parser_yystype.h:381
Create_col_name_list simple_ident_list
Definition: parser_yystype.h:415
Definition: thr_lock.h:96
Definition: my_base.h:96
Definition: parser_yystype.h:133
Status of validation clause in ALTER TABLE statement.
Definition: sql_alter.h:356
Item * where
Definition: parser_yystype.h:500
We will static_cast this one to thr_lock_type.
Definition: parser_yystype.h:118
struct YYSTYPE::@75 load_set_list
Definition: parse_tree_nodes.h:4723
Definition: parse_tree_nodes.h:1447
enum enum_from_first_last from_first_last
Definition: parser_yystype.h:340
Definition: sql_admin.h:372
Parse tree node for a window&#39;s frame, cf.
Definition: parse_tree_nodes.h:1704
Mem_root_array< PT_create_table_option * > * create_table_options
Definition: parser_yystype.h:444
Definition: parser_yystype.h:81
LEX_CSTRING anchor_trigger_name
Definition: parser_yystype.h:318
bool resource_group_flag_type
Definition: parser_yystype.h:573
Node for the PARTITION clause of CREATE/ALTER TABLE.
Definition: parse_tree_partitions.h:382
Ternary_option ternary_option
Definition: parser_yystype.h:442
class Item_param * param_marker
Definition: parser_yystype.h:364
LEX_STRING * lex_str_ptr
Definition: parser_yystype.h:258
class PT_add_partition * add_partition_rule
Definition: parser_yystype.h:436
class PT_query_expression * insert_query_expression
Definition: parser_yystype.h:389
const char * expr_start
Definition: parser_yystype.h:457
Definition: parser_yystype.h:405
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:188
Definition: field_types.h:79
Mem_root_array< PT_preload_keys * > * preload_list
Definition: parser_yystype.h:563
The different values of the ALGORITHM clause.
Definition: sql_alter.h:320
const char * dec
Definition: parser_yystype.h:285
ha_storage_media storage_media
Definition: parser_yystype.h:449
enum_key_algorithm opt_key_algo
Definition: parser_yystype.h:432
class PT_alter_table_standalone_action * alter_table_standalone_action
Definition: parser_yystype.h:515
class PT_subquery * subquery
Definition: parser_yystype.h:370
Types of ON ERROR/ON EMPTY clause for JSON_TABLE function.
Definition: table_function.h:195
Explain_format_type explain_format_type
Definition: parser_yystype.h:576
Enum get() const
Return the wrapped Enum value.
Definition: parser_yystype.h:202
class PT_adm_partition * adm_partition
Definition: parser_yystype.h:561
Definition: parser_yystype.h:138
udf_func * udf
Definition: parser_yystype.h:267
Definition: parse_tree_nodes.h:800
Definition: parser_yystype.h:84
Definition: parse_tree_nodes.h:2219
struct Cast_type cast_type
Definition: parser_yystype.h:287
Possible trigger ordering clause values:
Definition: trigger_def.h:63
Definition: parse_tree_nodes.h:1831
enum enum_trigger_order_type ordering_clause
Definition: parser_yystype.h:317
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:2775
enum ha_key_alg key_alg
Definition: parser_yystype.h:273
String * set_expr_str
Definition: parser_yystype.h:580
Enum get_or_default() const
Return the wrapped Enum value (if any) or the Default_value.
Definition: parser_yystype.h:208
class PT_field_def_base * field_def
Definition: parser_yystype.h:460
Interface for low level time utilities.
Which Diagnostics Area to access.
Definition: sql_get_diagnostics.h:77
Definition: parse_tree_nodes.h:1761
SELECT_LEX * select_lex
Definition: parser_yystype.h:291
class PT_frame * window_frame
Definition: parser_yystype.h:334
Definition: key_spec.h:57
Mem_root_array< PT_alter_tablespace_option_base * > * ts_options
Definition: parser_yystype.h:565
class PT_borders * frame_extent
Definition: parser_yystype.h:336
class PT_part_definition * part_definition
Definition: parser_yystype.h:429
Common base class for CREATE TABLE and ALTER TABLE option nodes.
Definition: parse_tree_nodes.h:2841
Mem_root_array< PT_ddl_table_option * > * space_separated_alter_table_opts
Definition: parser_yystype.h:445
const CHARSET_INFO * charset
Definition: parser_yystype.h:280
Definition: field.h:191
Lexer_yystype lexer
Definition: parser_yystype.h:240
class PT_option_value_no_option_type * option_value_no_option_type
Definition: parser_yystype.h:349
opt_hints_enum hint_type
Definition: parser_yystype.h:244
Base class for VALUES partitioning clauses.
Definition: parse_tree_partitions.h:318
Line_separators line_separators
Definition: parser_yystype.h:358
enum PT_joined_table_type join_type
Definition: parser_yystype.h:345
PT_item_list * set_expr_list
Definition: parser_yystype.h:584
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:366
PT_item_list * set_var_list
Definition: parser_yystype.h:583
class PT_with_list * with_list
Definition: parser_yystype.h:413
Definition: thr_lock.h:96
class PT_order_expr * order_expr
Definition: parser_yystype.h:324
PT_part_values * values
Definition: parser_yystype.h:427
class PT_transaction_characteristics * transaction_characteristics
Definition: parser_yystype.h:354
class PT_limit_clause * limit_clause
Definition: parser_yystype.h:328
Definition: parser_yystype.h:131
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:366
Sql_cmd_analyze_table::Histogram_command command
Definition: parser_yystype.h:504
Definition: lexer_yystype.h:32
class PT_option_value_following_option_type * option_value_following_option_type
Definition: parser_yystype.h:347
Item * set_var
Definition: parser_yystype.h:578
unsigned long ulong
Definition: my_inttypes.h:48
Definition: table.h:1285
Show_cmd_type show_cmd_type
Definition: parser_yystype.h:502
bool m_is_set
True if m_enum is assigned with some value.
Definition: parser_yystype.h:222
bool force_binary
Definition: parser_yystype.h:281
Definition: sql_alter.h:340
Definition: handler.h:2593
Condition_information_item::Name cond_info_item_name
Definition: parser_yystype.h:311
PT_partition * opt_partitioning
Definition: parser_yystype.h:479
Numeric_type numeric_type
Definition: parser_yystype.h:455
Definition: parse_tree_nodes.h:775
Represents an element of the WITH list: WITH [...], [...] SELECT ..., ^ or ^ i.e. ...
Definition: parse_tree_nodes.h:280
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:330
ulonglong ulonglong_number
Definition: parser_yystype.h:256
Definition: sp_head.h:125
Definition: item_create.h:53
Definition: parser_yystype.h:159
Definition: thr_lock.h:96
Definition: sql_lex.h:391
Definition: parser_yystype.h:112
Parse tree node for a list of window definitions corresponding to a <window clause> in SQL 2003...
Definition: parse_tree_nodes.h:1749
Value_or_default< bool > resource_group_state_type
Definition: parser_yystype.h:572
Definition: xa.h:48
Mem_root_array< PT_part_definition * > * part_def_list
Definition: parser_yystype.h:430
List< LEX_USER > * user_list
Definition: parser_yystype.h:269
Helper for the sql_exchange class.
Definition: sql_exchange.h:35
Definition: parse_tree_nodes.h:1319
class PT_common_table_expr * common_table_expr
Definition: parser_yystype.h:414
Definition: parser_yystype.h:110
Definition: parse_tree_nodes.h:597
Definition: handler.h:671
Enum_parser< Alter_info::enum_alter_table_algorithm, Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT > algo
Definition: parser_yystype.h:533
int curs
Definition: parser_yystype.h:295