23#ifndef SQL_ALTER_TABLE_H
24#define SQL_ALTER_TABLE_H
71 assert(par_name !=
nullptr);
150 assert(
name !=
nullptr);
190 bool par_is_enforced)
192 assert(par_name !=
nullptr);
491 const char *decimal,
uint type_modifier,
Item *default_value,
497 std::optional<gis::srid_t> srid,
512 const char *new_db_arg,
const char *new_name_arg);
617 using Sql_cmd_common_alter_table::Sql_cmd_common_alter_table;
627 using Sql_cmd_common_alter_table::Sql_cmd_common_alter_table;
641 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:80
Alter_column(const char *old_name, const char *new_name)
Constructor used while renaming field name.
Definition: sql_alter.h:128
const char * m_new_name
The new column name.
Definition: sql_alter.h:92
Alter_column(const char *par_name, bool par_is_visible)
Constructor used while altering column visibility.
Definition: sql_alter.h:135
Value_generator * m_default_val_expr
The expression to be used to generate the default value.
Definition: sql_alter.h:89
Item * def
The default value supplied.
Definition: sql_alter.h:86
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:120
Type
Definition: sql_alter.h:94
const char * name
The column name being altered.
Definition: sql_alter.h:83
Type change_type() const
Type of change requested in ALTER TABLE.
Definition: sql_alter.h:104
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:108
Type m_type
Definition: sql_alter.h:142
Class representing ALTER CHECK and ALTER CONSTRAINT clauses in ALTER TABLE statement.
Definition: sql_alter.h:182
const char * name
Definition: sql_alter.h:185
Type type
Definition: sql_alter.h:186
Type
Definition: sql_alter.h:184
Alter_constraint_enforcement(Type par_type, const char *par_name, bool par_is_enforced)
Definition: sql_alter.h:189
bool is_enforced
Definition: sql_alter.h:187
Class representing DROP COLUMN, DROP KEY, DROP FOREIGN KEY, DROP CHECK CONSTRAINT and DROP CONSTRAINT...
Definition: sql_alter.h:63
drop_type type
Definition: sql_alter.h:67
const char * name
Definition: sql_alter.h:66
Alter_drop(drop_type par_type, const char *par_name)
Definition: sql_alter.h:69
drop_type
Definition: sql_alter.h:65
@ FOREIGN_KEY
Definition: sql_alter.h:65
@ ANY_CONSTRAINT
Definition: sql_alter.h:65
@ KEY
Definition: sql_alter.h:65
@ COLUMN
Definition: sql_alter.h:65
@ CHECK_CONSTRAINT
Definition: sql_alter.h:65
An ALTER INDEX operation that changes the visibility of an index.
Definition: sql_alter.h:146
const char * m_name
Definition: sql_alter.h:159
bool is_visible() const
The visibility after the operation is performed.
Definition: sql_alter.h:156
Alter_index_visibility(const char *name, bool is_visible)
Definition: sql_alter.h:148
const char * name() const
Definition: sql_alter.h:153
bool m_is_visible
Definition: sql_alter.h:160
Data describing the table being created by CREATE TABLE or altered by ALTER TABLE.
Definition: sql_alter.h:203
enum_alter_table_algorithm
The different values of the ALGORITHM clause.
Definition: sql_alter.h:353
@ ALTER_TABLE_ALGORITHM_DEFAULT
Definition: sql_alter.h:355
@ ALTER_TABLE_ALGORITHM_INPLACE
Definition: sql_alter.h:358
@ ALTER_TABLE_ALGORITHM_COPY
Definition: sql_alter.h:364
@ ALTER_TABLE_ALGORITHM_INSTANT
Definition: sql_alter.h:361
Sql_check_constraint_spec_list check_constraint_spec_list
Check constraints specification for CREATE and ALTER TABLE operations.
Definition: sql_alter.h:420
Alter_info & operator=(const Alter_info &rhs)
enum_alter_table_lock
The different values of the LOCK clause.
Definition: sql_alter.h:371
@ ALTER_TABLE_LOCK_DEFAULT
Definition: sql_alter.h:373
@ ALTER_TABLE_LOCK_EXCLUSIVE
Definition: sql_alter.h:382
@ ALTER_TABLE_LOCK_NONE
Definition: sql_alter.h:376
@ ALTER_TABLE_LOCK_SHARED
Definition: sql_alter.h:379
Alter_info(const Alter_info &rhs)
Mem_root_array< Key_spec * > key_list
Definition: sql_alter.h:408
Mem_root_array< const Alter_drop * > drop_list
Columns, keys and constraints to be dropped.
Definition: sql_alter.h:403
enum_alter_table_algorithm requested_algorithm
Definition: sql_alter.h:435
Mem_root_array< const Alter_constraint_enforcement * > alter_constraint_enforcement_list
List of check constraints whose enforcement state is changed.
Definition: sql_alter.h:417
enum_with_validation with_validation
Definition: sql_alter.h:442
List< String > partition_names
Definition: sql_alter.h:431
enum_with_validation
Status of validation clause in ALTER TABLE statement.
Definition: sql_alter.h:389
@ ALTER_VALIDATION_DEFAULT
Default value, used when it's not specified in the statement.
Definition: sql_alter.h:395
@ ALTER_WITHOUT_VALIDATION
Definition: sql_alter.h:397
@ ALTER_WITH_VALIDATION
Definition: sql_alter.h:396
enum_enable_or_disable
Definition: sql_alter.h:347
@ ENABLE
Definition: sql_alter.h:347
@ LEAVE_AS_IS
Definition: sql_alter.h:347
@ DISABLE
Definition: sql_alter.h:347
List< Create_field > create_list
Definition: sql_alter.h:423
Alter_info(MEM_ROOT *mem_root)
Definition: sql_alter.h:455
LEX_CSTRING new_table_name
New table name in the.
Definition: sql_alter.h:453
Mem_root_array< const Alter_column * > alter_list
Definition: sql_alter.h:405
LEX_CSTRING new_db_name
"new_db" (if any) or "db" (if any) or default database from ALTER TABLE [db.
Definition: sql_alter.h:446
enum_enable_or_disable keys_onoff
Definition: sql_alter.h:429
ulonglong flags
Definition: sql_alter.h:427
Mem_root_array< const Alter_rename_key * > alter_rename_key_list
Definition: sql_alter.h:410
std::vector< CreateFieldApplier > cf_appliers
Definition: sql_alter.h:424
uint num_parts
Definition: sql_alter.h:433
Alter_info_flag
Definition: sql_alter.h:214
@ ALTER_RENAME_INDEX
Set for RENAME INDEX.
Definition: sql_alter.h:299
@ ALTER_CHANGE_COLUMN_DEFAULT
Set for ALTER [COLUMN] ... SET DEFAULT ... | DROP DEFAULT.
Definition: sql_alter.h:242
@ ALTER_TRUNCATE_PARTITION
Set by Sql_cmd_alter_table_truncate_partition::execute()
Definition: sql_alter.h:293
@ DROP_CHECK_CONSTRAINT
Set for drop check constraint.
Definition: sql_alter.h:320
@ ALTER_REBUILD_PARTITION
Set for REBUILD PARTITION.
Definition: sql_alter.h:275
@ ALTER_DROP_INDEX
Set for DROP PRIMARY KEY | DROP FOREIGN KEY | DROP KEY | DROP INDEX.
Definition: sql_alter.h:230
@ ENFORCE_ANY_CONSTRAINT
Set for ALTER CONSTRAINT symbol ENFORCED.
Definition: sql_alter.h:332
@ ALTER_DROP_PARTITION
Set for DROP PARTITION.
Definition: sql_alter.h:256
@ ALTER_KEYS_ONOFF
Set for DISABLE KEYS | ENABLE KEYS.
Definition: sql_alter.h:245
@ ALTER_ADD_COLUMN
Set for ADD [COLUMN].
Definition: sql_alter.h:216
@ ALTER_INDEX_VISIBILITY
Means that the visibility of an index is changed.
Definition: sql_alter.h:308
@ ALTER_ADMIN_PARTITION
Set for LOAD INDEX INTO CACHE ... PARTITION Set for CACHE INDEX ... PARTITION.
Definition: sql_alter.h:269
@ ALTER_PARTITION
Set for partition_options.
Definition: sql_alter.h:265
@ ALTER_COLUMN_VISIBILITY
Set for column visibility attribute alter.
Definition: sql_alter.h:344
@ ALTER_ADD_PARTITION
Set for ADD PARTITION.
Definition: sql_alter.h:253
@ ADD_CHECK_CONSTRAINT
Set for add check constraint.
Definition: sql_alter.h:317
@ ALTER_RENAME
Set for RENAME [TO].
Definition: sql_alter.h:233
@ SUSPEND_CHECK_CONSTRAINT
Set for check constraint suspend.
Definition: sql_alter.h:326
@ ALTER_REORGANIZE_PARTITION
Set for REORGANIZE PARTITION ... INTO.
Definition: sql_alter.h:262
@ 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:227
@ ALTER_COALESCE_PARTITION
Set for COALESCE PARTITION.
Definition: sql_alter.h:259
@ DROP_FOREIGN_KEY
Set for DROP FOREIGN KEY.
Definition: sql_alter.h:287
@ ALTER_ALL_PARTITION
Set for partitioning operations specifying ALL keyword.
Definition: sql_alter.h:278
@ ALTER_CHANGE_COLUMN
Set for CHANGE [COLUMN] | MODIFY [CHANGE] Set by mysql_recreate_table()
Definition: sql_alter.h:223
@ ALTER_SECONDARY_LOAD
Set for SECONDARY LOAD.
Definition: sql_alter.h:311
@ ALTER_DROP_COLUMN
Set for DROP [COLUMN].
Definition: sql_alter.h:219
@ ALTER_RECREATE
Set for FORCE Set for ENGINE(same engine) Set by mysql_recreate_table()
Definition: sql_alter.h:250
@ ALTER_EXCHANGE_PARTITION
Set for EXCHANGE PARTITION.
Definition: sql_alter.h:290
@ ALTER_IMPORT_TABLESPACE
Set for importing the tablespace.
Definition: sql_alter.h:305
@ 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:341
@ ALTER_OPTIONS
Set for table_options.
Definition: sql_alter.h:239
@ ALTER_SECONDARY_UNLOAD
Set for SECONDARY UNLOAD.
Definition: sql_alter.h:314
@ ALTER_REMOVE_PARTITIONING
Set for REMOVE PARTITIONING.
Definition: sql_alter.h:281
@ DROP_ANY_CONSTRAINT
Set for DROP CONSTRAINT.
Definition: sql_alter.h:329
@ ENFORCE_CHECK_CONSTRAINT
Set for check constraint enforce.
Definition: sql_alter.h:323
@ ALTER_COLUMN_ORDER
Set for ADD [COLUMN] FIRST | AFTER.
Definition: sql_alter.h:296
@ SUSPEND_ANY_CONSTRAINT
Set for ALTER CONSTRAINT symbol NOT ENFORCED.
Definition: sql_alter.h:335
@ ALTER_DISCARD_TABLESPACE
Set for discarding the tablespace.
Definition: sql_alter.h:302
@ ADD_FOREIGN_KEY
Set for ADD FOREIGN KEY.
Definition: sql_alter.h:284
@ ALTER_ORDER
Set for ORDER BY.
Definition: sql_alter.h:236
@ ALTER_TABLE_REORG
Set for REORGANIZE PARTITION.
Definition: sql_alter.h:272
Mem_root_array< const Alter_index_visibility * > alter_index_visibility_list
Indexes whose visibilities are to be changed.
Definition: sql_alter.h:413
enum_alter_table_lock requested_lock
Definition: sql_alter.h:437
Class which instances represent RENAME INDEX clauses in ALTER TABLE statement.
Definition: sql_alter.h:168
Alter_rename_key(const char *old_name_arg, const char *new_name_arg)
Definition: sql_alter.h:173
const char * new_name
Definition: sql_alter.h:171
const char * old_name
Definition: sql_alter.h:170
Runtime context for ALTER TABLE.
Definition: sql_alter.h:507
bool tmp_table
Indicates that we are altering temporary table.
Definition: sql_alter.h:589
char path[FN_REFLEN+1]
Definition: sql_alter.h:583
bool is_database_changed() const
Definition: sql_alter.h:519
Alter_table_ctx(const Alter_table_ctx &rhs)
const char * table_name
Definition: sql_alter.h:556
uint error_if_not_empty_mask
Definition: sql_alter.h:548
bool is_table_renamed() const
Definition: sql_alter.h:530
const char * new_name
Definition: sql_alter.h:559
uint fk_count
Definition: sql_alter.h:565
static const error_if_not_empty_mask DATETIME_WITHOUT_DEFAULT
Definition: sql_alter.h:549
FOREIGN_KEY * fk_info
Definition: sql_alter.h:564
char tmp_path[FN_REFLEN+1]
Definition: sql_alter.h:585
char tmp_name[80]
Definition: sql_alter.h:561
MDL_request target_db_mdl_request
Metadata lock request on table's new database if it is changed.
Definition: sql_alter.h:578
Alter_table_ctx & operator=(const Alter_table_ctx &rhs)
static const error_if_not_empty_mask GEOMETRY_WITHOUT_DEFAULT
Definition: sql_alter.h:550
bool is_table_name_changed() const
Definition: sql_alter.h:524
Alter_table_ctx()
Definition: sql_alter.cc:97
const char * get_tmp_path() const
Definition: sql_alter.h:545
const char * new_db
Definition: sql_alter.h:558
MDL_request target_mdl_request
Metadata lock request on table's new name when this name or database are changed.
Definition: sql_alter.h:576
const char * db
Definition: sql_alter.h:555
error_if_not_empty_mask error_if_not_empty
Definition: sql_alter.h:553
const char * new_alias
Definition: sql_alter.h:560
char new_alias_buff[FN_REFLEN+1]
Definition: sql_alter.h:582
Create_field * datetime_field
Definition: sql_alter.h:552
const char * get_path() const
Definition: sql_alter.h:537
char new_filename[FN_REFLEN+1]
Definition: sql_alter.h:581
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:570
uint tables_opened
Definition: sql_alter.h:554
const char * alias
Definition: sql_alter.h:557
char new_path[FN_REFLEN+1]
Definition: sql_alter.h:584
Create_field is a description a field/column that may or may not exists in a table.
Definition: create_field.h:50
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:850
Definition: key_spec.h:207
Definition: sql_list.h:433
A pending metadata lock request.
Definition: mdl.h:800
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:425
Represents the generic ALTER TABLE statement.
Definition: sql_alter.h:615
bool execute(THD *thd) override
Execute this SQL statement.
Definition: sql_alter.cc:218
Represents the common properties of the ALTER TABLE statements.
Definition: sql_alter.h:600
~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:606
A base class for CREATE/ALTER TABLE commands and friends.
Definition: sql_cmd_ddl_table.h:49
Sql_cmd_ddl_table(Alter_info *alter_info)
Definition: sql_cmd_ddl_table.cc:67
Represents ALTER TABLE IMPORT/DISCARD TABLESPACE statements.
Definition: sql_alter.h:625
bool execute(THD *thd) override
Execute this SQL statement.
Definition: sql_alter.cc:358
bool mysql_discard_or_import_tablespace(THD *thd, Table_ref *table_list)
Definition: sql_table.cc:11192
Represents ALTER TABLE SECONDARY_LOAD/SECONDARY_UNLOAD statements.
Definition: sql_alter.h:638
bool execute(THD *thd) override
Execute this SQL statement.
Definition: sql_alter.cc:412
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:11429
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:166
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:33
Used for storing information associated with generated column, default values generated from expressi...
Definition: field.h:482
enum_hidden_type
Definition: column.h:94
static MEM_ROOT mem_root
Definition: client_plugin.cc:109
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:221
This file contains the field type.
enum_field_types
Column types for MySQL.
Definition: field_types.h:52
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:5448
#define comment
Definition: lexyy.cc:959
unsigned long long int ulonglong
Definition: my_inttypes.h:55
Common #defines and includes for file and socket I/O.
#define FN_REFLEN
Definition: my_io.h:82
enum_sql_command
Definition: my_sqlcommand.h:45
@ SQLCOM_ALTER_TABLE
Definition: my_sqlcommand.h:49
Definition: commit_order_queue.h:33
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:75
Performance schema instrumentation interface.
required string type
Definition: replication_group_member_actions.proto:33
std::function< bool(Create_field *, Alter_info *)> CreateFieldApplier
Definition: sql_alter.h:196
Representation of an SQL command.
Definition: m_ctype.h:382
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:82
Definition: mysql_lex_string.h:39
Definition: mysql_lex_string.h:34
unsigned int uint
Definition: uca-dump.cc:29