diff options
author | Aleksey Midenkov <midenok@gmail.com> | 2020-03-03 13:50:33 +0300 |
---|---|---|
committer | Aleksey Midenkov <midenok@gmail.com> | 2020-03-03 13:50:33 +0300 |
commit | 193725b81ed813d0318c1fa82de284c337246d9e (patch) | |
tree | 5491a62650565a58d24cfc629b7466f29b617d18 /sql/sql_alter.h | |
parent | fa8ad7543947f5c74dece982d42bab59b6479449 (diff) | |
download | mariadb-git-193725b81ed813d0318c1fa82de284c337246d9e.tar.gz |
MDEV-7318 RENAME INDEX
This patch adds support of RENAME INDEX operation to the ALTER TABLE
statement. Code which determines if ALTER TABLE can be done in-place
for "simple" storage engines like MyISAM, Heap and etc. was updated to
handle ALTER TABLE ... RENAME INDEX as an in-place operation. Support
for in-place ALTER TABLE ... RENAME INDEX for InnoDB was covered by
MDEV-13301.
Syntax changes
==============
A new type of <alter_specification> is added:
<rename index clause> ::= RENAME ( INDEX | KEY ) <oldname> TO <newname>
Where <oldname> and <newname> are identifiers for old name and new
name of the index.
Semantic changes
================
The result of "ALTER TABLE t1 RENAME INDEX a TO b" is a table which
contents and structure are identical to the old version of 't1' with
the only exception index 'a' being called 'b'.
Neither <oldname> nor <newname> can be "primary". The index being
renamed should exist and its new name should not be occupied
by another index on the same table.
Related to: WL#6555, MDEV-13301
Diffstat (limited to 'sql/sql_alter.h')
-rw-r--r-- | sql/sql_alter.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sql/sql_alter.h b/sql/sql_alter.h index 41408a91836..a553c31346a 100644 --- a/sql/sql_alter.h +++ b/sql/sql_alter.h @@ -19,6 +19,7 @@ class Alter_drop; class Alter_column; +class Alter_rename_key; class Key; /** @@ -87,6 +88,8 @@ public: List<Alter_column> alter_list; // List of keys, used by both CREATE and ALTER TABLE. List<Key> key_list; + // List of keys to be renamed. + List<Alter_rename_key> alter_rename_key_list; // List of columns, used by both CREATE and ALTER TABLE. List<Create_field> create_list; @@ -123,6 +126,7 @@ public: drop_list.empty(); alter_list.empty(); key_list.empty(); + alter_rename_key_list.empty(); create_list.empty(); check_constraint_list.empty(); flags= 0; |