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:11227
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:11464
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:5497
#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