24#ifndef SQL_ALTER_TABLE_H 
   25#define SQL_ALTER_TABLE_H 
   72    assert(par_name != 
nullptr);
 
  151    assert(
name != 
nullptr);
 
  191                               bool par_is_enforced)
 
  193    assert(par_name != 
nullptr);
 
  492                 const char *decimal, 
uint type_modifier, 
Item *default_value,
 
  498                 std::optional<gis::srid_t> srid,
 
  513                  const char *new_db_arg, 
const char *new_name_arg);
 
  618  using Sql_cmd_common_alter_table::Sql_cmd_common_alter_table;
 
  629  using Sql_cmd_common_alter_table::Sql_cmd_common_alter_table;
 
  643  using Sql_cmd_common_alter_table::Sql_cmd_common_alter_table;
 
Class representing SET DEFAULT, DROP DEFAULT, RENAME COLUMN, SET VISIBLE and SET INVISIBLE clause in ...
Definition: sql_alter.h:81
 
Alter_column(const char *old_name, const char *new_name)
Constructor used while renaming field name.
Definition: sql_alter.h:129
 
const char * m_new_name
The new column name.
Definition: sql_alter.h:93
 
Alter_column(const char *par_name, bool par_is_visible)
Constructor used while altering column visibility.
Definition: sql_alter.h:136
 
Value_generator * m_default_val_expr
The expression to be used to generate the default value.
Definition: sql_alter.h:90
 
Item * def
The default value supplied.
Definition: sql_alter.h:87
 
Alter_column(const char *par_name, Value_generator *gen_def)
Constructor used when setting a field's DEFAULT value to an expression.
Definition: sql_alter.h:121
 
Type
Definition: sql_alter.h:95
 
const char * name
The column name being altered.
Definition: sql_alter.h:84
 
Type change_type() const
Type of change requested in ALTER TABLE.
Definition: sql_alter.h:105
 
Alter_column(const char *par_name, Item *literal)
Constructor used when altering the field's default value with a literal constant or when dropping a f...
Definition: sql_alter.h:109
 
Type m_type
Definition: sql_alter.h:143
 
Class representing ALTER CHECK and ALTER CONSTRAINT clauses in ALTER TABLE statement.
Definition: sql_alter.h:183
 
const char * name
Definition: sql_alter.h:186
 
Type type
Definition: sql_alter.h:187
 
Type
Definition: sql_alter.h:185
 
Alter_constraint_enforcement(Type par_type, const char *par_name, bool par_is_enforced)
Definition: sql_alter.h:190
 
bool is_enforced
Definition: sql_alter.h:188
 
Class representing DROP COLUMN, DROP KEY, DROP FOREIGN KEY, DROP CHECK CONSTRAINT and DROP CONSTRAINT...
Definition: sql_alter.h:64
 
drop_type type
Definition: sql_alter.h:68
 
const char * name
Definition: sql_alter.h:67
 
Alter_drop(drop_type par_type, const char *par_name)
Definition: sql_alter.h:70
 
drop_type
Definition: sql_alter.h:66
 
@ FOREIGN_KEY
Definition: sql_alter.h:66
 
@ ANY_CONSTRAINT
Definition: sql_alter.h:66
 
@ KEY
Definition: sql_alter.h:66
 
@ COLUMN
Definition: sql_alter.h:66
 
@ CHECK_CONSTRAINT
Definition: sql_alter.h:66
 
An ALTER INDEX operation that changes the visibility of an index.
Definition: sql_alter.h:147
 
const char * m_name
Definition: sql_alter.h:160
 
bool is_visible() const
The visibility after the operation is performed.
Definition: sql_alter.h:157
 
Alter_index_visibility(const char *name, bool is_visible)
Definition: sql_alter.h:149
 
const char * name() const
Definition: sql_alter.h:154
 
bool m_is_visible
Definition: sql_alter.h:161
 
Data describing the table being created by CREATE TABLE or altered by ALTER TABLE.
Definition: sql_alter.h:204
 
enum_alter_table_algorithm
The different values of the ALGORITHM clause.
Definition: sql_alter.h:354
 
@ ALTER_TABLE_ALGORITHM_DEFAULT
Definition: sql_alter.h:356
 
@ ALTER_TABLE_ALGORITHM_INPLACE
Definition: sql_alter.h:359
 
@ ALTER_TABLE_ALGORITHM_COPY
Definition: sql_alter.h:365
 
@ ALTER_TABLE_ALGORITHM_INSTANT
Definition: sql_alter.h:362
 
Sql_check_constraint_spec_list check_constraint_spec_list
Check constraints specification for CREATE and ALTER TABLE operations.
Definition: sql_alter.h:421
 
Alter_info & operator=(const Alter_info &rhs)
 
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
 
@ ALTER_TABLE_LOCK_EXCLUSIVE
Definition: sql_alter.h:383
 
@ ALTER_TABLE_LOCK_NONE
Definition: sql_alter.h:377
 
@ ALTER_TABLE_LOCK_SHARED
Definition: sql_alter.h:380
 
Alter_info(const Alter_info &rhs)
 
Mem_root_array< Key_spec * > key_list
Definition: sql_alter.h:409
 
Mem_root_array< const Alter_drop * > drop_list
Columns, keys and constraints to be dropped.
Definition: sql_alter.h:404
 
enum_alter_table_algorithm requested_algorithm
Definition: sql_alter.h:436
 
Mem_root_array< const Alter_constraint_enforcement * > alter_constraint_enforcement_list
List of check constraints whose enforcement state is changed.
Definition: sql_alter.h:418
 
enum_with_validation with_validation
Definition: sql_alter.h:443
 
List< String > partition_names
Definition: sql_alter.h:432
 
enum_with_validation
Status of validation clause in ALTER TABLE statement.
Definition: sql_alter.h:390
 
@ ALTER_VALIDATION_DEFAULT
Default value, used when it's not specified in the statement.
Definition: sql_alter.h:396
 
@ ALTER_WITHOUT_VALIDATION
Definition: sql_alter.h:398
 
@ ALTER_WITH_VALIDATION
Definition: sql_alter.h:397
 
enum_enable_or_disable
Definition: sql_alter.h:348
 
@ ENABLE
Definition: sql_alter.h:348
 
@ LEAVE_AS_IS
Definition: sql_alter.h:348
 
@ DISABLE
Definition: sql_alter.h:348
 
List< Create_field > create_list
Definition: sql_alter.h:424
 
Alter_info(MEM_ROOT *mem_root)
Definition: sql_alter.h:456
 
LEX_CSTRING new_table_name
New table name in the.
Definition: sql_alter.h:454
 
Mem_root_array< const Alter_column * > alter_list
Definition: sql_alter.h:406
 
LEX_CSTRING new_db_name
"new_db" (if any) or "db" (if any) or default database from ALTER TABLE [db.
Definition: sql_alter.h:447
 
enum_enable_or_disable keys_onoff
Definition: sql_alter.h:430
 
ulonglong flags
Definition: sql_alter.h:428
 
Mem_root_array< const Alter_rename_key * > alter_rename_key_list
Definition: sql_alter.h:411
 
std::vector< CreateFieldApplier > cf_appliers
Definition: sql_alter.h:425
 
uint num_parts
Definition: sql_alter.h:434
 
Alter_info_flag
Definition: sql_alter.h:215
 
@ ALTER_RENAME_INDEX
Set for RENAME INDEX.
Definition: sql_alter.h:300
 
@ ALTER_CHANGE_COLUMN_DEFAULT
Set for ALTER [COLUMN] ... SET DEFAULT ... | DROP DEFAULT.
Definition: sql_alter.h:243
 
@ ALTER_TRUNCATE_PARTITION
Set by Sql_cmd_alter_table_truncate_partition::execute()
Definition: sql_alter.h:294
 
@ DROP_CHECK_CONSTRAINT
Set for drop check constraint.
Definition: sql_alter.h:321
 
@ ALTER_REBUILD_PARTITION
Set for REBUILD PARTITION.
Definition: sql_alter.h:276
 
@ ALTER_DROP_INDEX
Set for DROP PRIMARY KEY | DROP FOREIGN KEY | DROP KEY | DROP INDEX.
Definition: sql_alter.h:231
 
@ ENFORCE_ANY_CONSTRAINT
Set for ALTER CONSTRAINT symbol ENFORCED.
Definition: sql_alter.h:333
 
@ ALTER_DROP_PARTITION
Set for DROP PARTITION.
Definition: sql_alter.h:257
 
@ ALTER_KEYS_ONOFF
Set for DISABLE KEYS | ENABLE KEYS.
Definition: sql_alter.h:246
 
@ ALTER_ADD_COLUMN
Set for ADD [COLUMN].
Definition: sql_alter.h:217
 
@ ALTER_INDEX_VISIBILITY
Means that the visibility of an index is changed.
Definition: sql_alter.h:309
 
@ ALTER_ADMIN_PARTITION
Set for LOAD INDEX INTO CACHE ... PARTITION Set for CACHE INDEX ... PARTITION.
Definition: sql_alter.h:270
 
@ ALTER_PARTITION
Set for partition_options.
Definition: sql_alter.h:266
 
@ ALTER_COLUMN_VISIBILITY
Set for column visibility attribute alter.
Definition: sql_alter.h:345
 
@ ALTER_ADD_PARTITION
Set for ADD PARTITION.
Definition: sql_alter.h:254
 
@ ADD_CHECK_CONSTRAINT
Set for add check constraint.
Definition: sql_alter.h:318
 
@ ALTER_RENAME
Set for RENAME [TO].
Definition: sql_alter.h:234
 
@ SUSPEND_CHECK_CONSTRAINT
Set for check constraint suspend.
Definition: sql_alter.h:327
 
@ ALTER_REORGANIZE_PARTITION
Set for REORGANIZE PARTITION ... INTO.
Definition: sql_alter.h:263
 
@ ALTER_ADD_INDEX
Set for ADD INDEX | ADD KEY | ADD PRIMARY KEY | ADD UNIQUE KEY | ADD UNIQUE INDEX | ALTER ADD [COLUMN...
Definition: sql_alter.h:228
 
@ ALTER_COALESCE_PARTITION
Set for COALESCE PARTITION.
Definition: sql_alter.h:260
 
@ DROP_FOREIGN_KEY
Set for DROP FOREIGN KEY.
Definition: sql_alter.h:288
 
@ ALTER_ALL_PARTITION
Set for partitioning operations specifying ALL keyword.
Definition: sql_alter.h:279
 
@ ALTER_CHANGE_COLUMN
Set for CHANGE [COLUMN] | MODIFY [CHANGE] Set by mysql_recreate_table()
Definition: sql_alter.h:224
 
@ ALTER_SECONDARY_LOAD
Set for SECONDARY LOAD.
Definition: sql_alter.h:312
 
@ ALTER_DROP_COLUMN
Set for DROP [COLUMN].
Definition: sql_alter.h:220
 
@ ALTER_RECREATE
Set for FORCE Set for ENGINE(same engine) Set by mysql_recreate_table()
Definition: sql_alter.h:251
 
@ ALTER_EXCHANGE_PARTITION
Set for EXCHANGE PARTITION.
Definition: sql_alter.h:291
 
@ ALTER_IMPORT_TABLESPACE
Set for importing the tablespace.
Definition: sql_alter.h:306
 
@ ANY_ENGINE_ATTRIBUTE
Set if ANY engine attribute is used (also in CREATE) Note that this is NOT to be set for SECONDARY_EN...
Definition: sql_alter.h:342
 
@ ALTER_OPTIONS
Set for table_options.
Definition: sql_alter.h:240
 
@ ALTER_SECONDARY_UNLOAD
Set for SECONDARY UNLOAD.
Definition: sql_alter.h:315
 
@ ALTER_REMOVE_PARTITIONING
Set for REMOVE PARTITIONING.
Definition: sql_alter.h:282
 
@ DROP_ANY_CONSTRAINT
Set for DROP CONSTRAINT.
Definition: sql_alter.h:330
 
@ ENFORCE_CHECK_CONSTRAINT
Set for check constraint enforce.
Definition: sql_alter.h:324
 
@ ALTER_COLUMN_ORDER
Set for ADD [COLUMN] FIRST | AFTER.
Definition: sql_alter.h:297
 
@ SUSPEND_ANY_CONSTRAINT
Set for ALTER CONSTRAINT symbol NOT ENFORCED.
Definition: sql_alter.h:336
 
@ ALTER_DISCARD_TABLESPACE
Set for discarding the tablespace.
Definition: sql_alter.h:303
 
@ ADD_FOREIGN_KEY
Set for ADD FOREIGN KEY.
Definition: sql_alter.h:285
 
@ ALTER_ORDER
Set for ORDER BY.
Definition: sql_alter.h:237
 
@ ALTER_TABLE_REORG
Set for REORGANIZE PARTITION.
Definition: sql_alter.h:273
 
Mem_root_array< const Alter_index_visibility * > alter_index_visibility_list
Indexes whose visibilities are to be changed.
Definition: sql_alter.h:414
 
enum_alter_table_lock requested_lock
Definition: sql_alter.h:438
 
Class which instances represent RENAME INDEX clauses in ALTER TABLE statement.
Definition: sql_alter.h:169
 
Alter_rename_key(const char *old_name_arg, const char *new_name_arg)
Definition: sql_alter.h:174
 
const char * new_name
Definition: sql_alter.h:172
 
const char * old_name
Definition: sql_alter.h:171
 
Runtime context for ALTER TABLE.
Definition: sql_alter.h:508
 
bool tmp_table
Indicates that we are altering temporary table.
Definition: sql_alter.h:590
 
char path[FN_REFLEN+1]
Definition: sql_alter.h:584
 
bool is_database_changed() const
Definition: sql_alter.h:520
 
Alter_table_ctx(const Alter_table_ctx &rhs)
 
const char * table_name
Definition: sql_alter.h:557
 
uint error_if_not_empty_mask
Definition: sql_alter.h:549
 
bool is_table_renamed() const
Definition: sql_alter.h:531
 
const char * new_name
Definition: sql_alter.h:560
 
uint fk_count
Definition: sql_alter.h:566
 
static const error_if_not_empty_mask DATETIME_WITHOUT_DEFAULT
Definition: sql_alter.h:550
 
FOREIGN_KEY * fk_info
Definition: sql_alter.h:565
 
char tmp_path[FN_REFLEN+1]
Definition: sql_alter.h:586
 
char tmp_name[80]
Definition: sql_alter.h:562
 
MDL_request target_db_mdl_request
Metadata lock request on table's new database if it is changed.
Definition: sql_alter.h:579
 
Alter_table_ctx & operator=(const Alter_table_ctx &rhs)
 
static const error_if_not_empty_mask GEOMETRY_WITHOUT_DEFAULT
Definition: sql_alter.h:551
 
bool is_table_name_changed() const
Definition: sql_alter.h:525
 
Alter_table_ctx()
Definition: sql_alter.cc:98
 
const char * get_tmp_path() const
Definition: sql_alter.h:546
 
const char * new_db
Definition: sql_alter.h:559
 
MDL_request target_mdl_request
Metadata lock request on table's new name when this name or database are changed.
Definition: sql_alter.h:577
 
const char * db
Definition: sql_alter.h:556
 
error_if_not_empty_mask error_if_not_empty
Definition: sql_alter.h:554
 
const char * new_alias
Definition: sql_alter.h:561
 
char new_alias_buff[FN_REFLEN+1]
Definition: sql_alter.h:583
 
Create_field * datetime_field
Definition: sql_alter.h:553
 
const char * get_path() const
Definition: sql_alter.h:538
 
char new_filename[FN_REFLEN+1]
Definition: sql_alter.h:582
 
uint fk_max_generated_name_number
Maximum number component used by generated foreign key names in the old version of table.
Definition: sql_alter.h:571
 
uint tables_opened
Definition: sql_alter.h:555
 
const char * alias
Definition: sql_alter.h:558
 
char new_path[FN_REFLEN+1]
Definition: sql_alter.h:585
 
Create_field is a description a field/column that may or may not exists in a table.
Definition: create_field.h:51
 
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:853
 
Definition: key_spec.h:208
 
Definition: sql_list.h:434
 
A pending metadata lock request.
Definition: mdl.h:801
 
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:426
 
Represents the generic ALTER TABLE statement.
Definition: sql_alter.h:616
 
bool reprepare_on_execute_required() const override
Some SQL commands currently require re-preparation on re-execution of a prepared statement or stored ...
Definition: sql_alter.cc:359
 
bool execute(THD *thd) override
Execute this SQL statement.
Definition: sql_alter.cc:219
 
Represents the common properties of the ALTER TABLE statements.
Definition: sql_alter.h:601
 
~Sql_cmd_common_alter_table() override=0
 
enum_sql_command sql_command_code() const final
Return the command code for this statement.
Definition: sql_alter.h:607
 
A base class for CREATE/ALTER TABLE commands and friends.
Definition: sql_cmd_ddl_table.h:50
 
Sql_cmd_ddl_table(Alter_info *alter_info)
Definition: sql_cmd_ddl_table.cc:68
 
Represents ALTER TABLE IMPORT/DISCARD TABLESPACE statements.
Definition: sql_alter.h:627
 
bool execute(THD *thd) override
Execute this SQL statement.
Definition: sql_alter.cc:371
 
bool mysql_discard_or_import_tablespace(THD *thd, Table_ref *table_list)
Definition: sql_table.cc:11236
 
Represents ALTER TABLE SECONDARY_LOAD/SECONDARY_UNLOAD statements.
Definition: sql_alter.h:640
 
bool execute(THD *thd) override
Execute this SQL statement.
Definition: sql_alter.cc:425
 
bool mysql_secondary_load_or_unload(THD *thd, Table_ref *table_list)
Loads a table into a secondary engine if SECONDARY_LOAD, unloads from secondary engine if SECONDARY_U...
Definition: sql_table.cc:11473
 
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:168
 
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:34
 
Used for storing information associated with generated column, default values generated from expressi...
Definition: field.h:483
 
enum_hidden_type
Definition: column.h:95
 
static MEM_ROOT mem_root
Definition: client_plugin.cc:110
 
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:222
 
This file contains the field type.
 
enum_field_types
Column types for MySQL.
Definition: field_types.h:53
 
bool add_field(THD *thd, const LEX_STRING *field_name, enum enum_field_types type, const char *length, const char *decimal, uint type_modifier, Item *default_value, Item *on_update_value, LEX_CSTRING *comment, const char *change, List< String > *interval_list, const CHARSET_INFO *cs, bool has_explicit_collation, uint uint_geom_type, Value_generator *gcol_info, Value_generator *default_val_expr, const char *opt_after, std::optional< gis::srid_t > srid, Sql_check_constraint_spec_list *check_cons_list, dd::Column::enum_hidden_type hidden, bool is_array=false)
Store field definition for create.
Definition: sql_parse.cc:5511
 
#define comment
Definition: lexyy.cc:959
 
unsigned long long int ulonglong
Definition: my_inttypes.h:56
 
Common #defines and includes for file and socket I/O.
 
#define FN_REFLEN
Definition: my_io.h:83
 
enum_sql_command
Definition: my_sqlcommand.h:46
 
@ SQLCOM_ALTER_TABLE
Definition: my_sqlcommand.h:50
 
Definition: commit_order_queue.h:34
 
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
 
Performance schema instrumentation interface.
 
required string type
Definition: replication_group_member_actions.proto:34
 
std::function< bool(Create_field *, Alter_info *)> CreateFieldApplier
Definition: sql_alter.h:197
 
Representation of an SQL command.
 
Definition: m_ctype.h:385
 
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:83
 
Definition: mysql_lex_string.h:40
 
Definition: mysql_lex_string.h:35
 
unsigned int uint
Definition: uca9-dump.cc:75