1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Changed static const in Alter_info and Alter_online_info to defines

Main reason was to make it easier to print the above structures in
a debugger. Additional benefits is that I was able to use same
defines for both structures, which simplifes some code.

Most of the code is just removing Alter_info:: and Alter_inplace_info::
from alter table flags.

Following renames was done:
HA_ALTER_FLAGS        -> alter_table_operations
CHANGE_CREATE_OPTION  -> ALTER_CHANGE_CREATE_OPTION
Alter_info::ADD_INDEX -> ALTER_ADD_INDEX
DROP_INDEX            -> ALTER_DROP_INDEX
ADD_UNIQUE_INDEX      -> ALTER_ADD_UNIQUE_INDEX
DROP_UNIQUE_INDEx     -> ALTER_DROP_UNIQUE_INDEX
ADD_PK_INDEX          -> ALTER_ADD_PK_INDEX
DROP_PK_INDEX         -> ALTER_DROP_PK_INDEX
Alter_info:ALTER_ADD_COLUMN    -> ALTER_PARSE_ADD_COLUMN
Alter_info:ALTER_DROP_COLUMN   -> ALTER_PARSE_DROP_COLUMN
Alter_inplace_info::ADD_INDEX  -> ALTER_ADD_NON_UNIQUE_NON_PRIM_INDEX
Alter_inplace_info::DROP_INDEX -> ALTER_DROP_NON_UNIQUE_NON_PRIM_INDEX

Other things:
- Added typedef alter_table_operatons for alter table flags
- DROP CHECK CONSTRAINT can now be done online
- Added checks for Aria tables in alter_table_online.test
- alter_table_flags now takes an ulonglong as argument.
- Don't support online operations if checksum option is used.
- sql_lex.cc doesn't add ALTER_ADD_INDEX if index is not created
This commit is contained in:
Monty
2018-02-16 10:56:03 +02:00
parent 0631f20ff7
commit 2dbeebdb16
28 changed files with 840 additions and 845 deletions

View File

@ -29,85 +29,14 @@ class Key;
class Alter_info
{
public:
/*
These flags are set by the parser and describes the type of
operation(s) specified by the ALTER TABLE statement.
They do *not* describe the type operation(s) to be executed
by the storage engine. For example, we don't yet know the
type of index to be added/dropped.
*/
/** Set for ADD [COLUMN] */
static const ulonglong ALTER_ADD_COLUMN = 1ULL << 0;
/** Set for DROP [COLUMN] */
static const ulonglong ALTER_DROP_COLUMN = 1ULL << 1;
/** Set for CHANGE [COLUMN] | MODIFY [CHANGE] & mysql_recreate_table */
static const ulonglong ALTER_CHANGE_COLUMN = 1ULL << 2;
/** Set for ADD INDEX | ADD KEY | ADD PRIMARY KEY | ADD UNIQUE KEY |
ADD UNIQUE INDEX | ALTER ADD [COLUMN] */
static const ulonglong ALTER_ADD_INDEX = 1ULL << 3;
/** Set for DROP PRIMARY KEY | DROP FOREIGN KEY | DROP KEY | DROP INDEX */
static const ulonglong ALTER_DROP_INDEX = 1ULL << 4;
/** Set for RENAME [TO] */
static const ulonglong ALTER_RENAME = 1ULL << 5;
/** Set for ORDER BY */
static const ulonglong ALTER_ORDER = 1ULL << 6;
/** Set for table_options */
static const ulonglong ALTER_OPTIONS = 1ULL << 7;
/** Set for ALTER [COLUMN] ... SET DEFAULT ... | DROP DEFAULT */
static const ulonglong ALTER_CHANGE_COLUMN_DEFAULT = 1ULL << 8;
/** Set for DISABLE KEYS | ENABLE KEYS */
static const ulonglong ALTER_KEYS_ONOFF = 1ULL << 9;
/** Set for FORCE, ENGINE(same engine), by mysql_recreate_table() */
static const ulonglong ALTER_RECREATE = 1ULL << 10;
/** Set for ADD PARTITION */
static const ulonglong ALTER_ADD_PARTITION = 1ULL << 11;
/** Set for DROP PARTITION */
static const ulonglong ALTER_DROP_PARTITION = 1ULL << 12;
/** Set for COALESCE PARTITION */
static const ulonglong ALTER_COALESCE_PARTITION = 1ULL << 13;
/** Set for REORGANIZE PARTITION ... INTO */
static const ulonglong ALTER_REORGANIZE_PARTITION = 1ULL << 14;
/** Set for partition_options */
static const ulonglong ALTER_PARTITION = 1ULL << 15;
/** Set for LOAD INDEX INTO CACHE ... PARTITION
and CACHE INDEX ... PARTITION */
static const ulonglong ALTER_ADMIN_PARTITION = 1ULL << 16;
/** Set for REORGANIZE PARTITION */
static const ulonglong ALTER_TABLE_REORG = 1ULL << 17;
/** Set for REBUILD PARTITION */
static const ulonglong ALTER_REBUILD_PARTITION = 1ULL << 18;
/** Set for partitioning operations specifying ALL keyword */
static const ulonglong ALTER_ALL_PARTITION = 1ULL << 19;
/** Set for REMOVE PARTITIONING */
static const ulonglong ALTER_REMOVE_PARTITIONING = 1ULL << 20;
/** Set for ADD FOREIGN KEY */
static const ulonglong ADD_FOREIGN_KEY = 1ULL << 21;
/** Set for DROP FOREIGN KEY */
static const ulonglong DROP_FOREIGN_KEY = 1ULL << 22;
/** Set for EXCHANGE PARITION */
static const ulonglong ALTER_EXCHANGE_PARTITION = 1ULL << 23;
/** Set by Sql_cmd_alter_table_truncate_partition::execute() */
static const ulonglong ALTER_TRUNCATE_PARTITION = 1ULL << 24;
/** Set for ADD [COLUMN] FIRST | AFTER */
static const ulonglong ALTER_COLUMN_ORDER = 1ULL << 25;
static const ulonglong ALTER_ADD_CHECK_CONSTRAINT = 1ULL << 27;
static const ulonglong ALTER_DROP_CHECK_CONSTRAINT = 1ULL << 28;
static const ulonglong ALTER_RENAME_COLUMN = 1ULL << 29;
static const ulonglong ALTER_COLUMN_UNVERSIONED = 1ULL << 30;
static const ulonglong ALTER_ADD_SYSTEM_VERSIONING = 1ULL << 31;
static const ulonglong ALTER_DROP_SYSTEM_VERSIONING= 1ULL << 32;
static const ulonglong ALTER_ADD_PERIOD = 1ULL << 33;
static const ulonglong ALTER_DROP_PERIOD = 1ULL << 34;
enum enum_enable_or_disable { LEAVE_AS_IS, ENABLE, DISABLE };
bool data_modifying() const
{
return flags & (
ALTER_ADD_COLUMN |
ALTER_DROP_COLUMN |
ALTER_PARSER_ADD_COLUMN |
ALTER_PARSER_DROP_COLUMN |
ALTER_CHANGE_COLUMN |
ALTER_COLUMN_ORDER);
}
@ -176,7 +105,7 @@ public:
};
List<Virtual_column_info> check_constraint_list;
// Type of ALTER TABLE operation.
ulonglong flags;
alter_table_operations flags;
// Enable or disable keys.
enum_enable_or_disable keys_onoff;
// List of partitions.