summaryrefslogtreecommitdiff
path: root/sql/sql_table.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_table.cc')
-rw-r--r--sql/sql_table.cc21
1 files changed, 9 insertions, 12 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index cd368da934b..fae15e11322 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -6404,7 +6404,7 @@ remove_key:
if (tab_part_info)
{
/* ALTER TABLE ADD PARTITION IF NOT EXISTS */
- if ((alter_info->flags & ALTER_ADD_PARTITION) &&
+ if ((alter_info->partition_flags & ALTER_PARTITION_ADD) &&
thd->lex->create_info.if_not_exists())
{
partition_info *alt_part_info= thd->lex->part_info;
@@ -6420,7 +6420,7 @@ remove_key:
ER_SAME_NAME_PARTITION,
ER_THD(thd, ER_SAME_NAME_PARTITION),
pe->partition_name);
- alter_info->flags&= ~ALTER_ADD_PARTITION;
+ alter_info->partition_flags&= ~ALTER_PARTITION_ADD;
thd->work_part_info= NULL;
break;
}
@@ -6428,7 +6428,7 @@ remove_key:
}
}
/* ALTER TABLE DROP PARTITION IF EXISTS */
- if ((alter_info->flags & ALTER_DROP_PARTITION) &&
+ if ((alter_info->partition_flags & ALTER_PARTITION_DROP) &&
thd->lex->if_exists())
{
List_iterator<const char> names_it(alter_info->partition_names);
@@ -6454,7 +6454,7 @@ remove_key:
}
}
if (alter_info->partition_names.elements == 0)
- alter_info->flags&= ~ALTER_DROP_PARTITION;
+ alter_info->partition_flags&= ~ALTER_PARTITION_DROP;
}
}
#endif /*WITH_PARTITION_STORAGE_ENGINE*/
@@ -6604,10 +6604,6 @@ static bool fill_alter_inplace_info(THD *thd,
ALTER_COLUMN_ORDER |
ALTER_RENAME_COLUMN |
ALTER_CHANGE_COLUMN |
- ALTER_ADMIN_PARTITION |
- ALTER_REBUILD_PARTITION |
- ALTER_EXCHANGE_PARTITION |
- ALTER_TRUNCATE_PARTITION |
ALTER_COLUMN_UNVERSIONED));
/*
Comparing new and old default values of column is cumbersome.
@@ -9137,7 +9133,7 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db, const LEX_CSTRING *n
}
#ifdef WITH_PARTITION_STORAGE_ENGINE
- if (alter_info->flags & ALTER_PARTITION)
+ if (alter_info->partition_flags & ALTER_PARTITION_INFO)
{
my_error(ER_WRONG_USAGE, MYF(0), "PARTITION", "log table");
DBUG_RETURN(true);
@@ -9348,7 +9344,7 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db, const LEX_CSTRING *n
}
if ((create_info->db_type != table->s->db_type() ||
- alter_info->flags & ALTER_PARTITION) &&
+ (alter_info->partition_flags & ALTER_PARTITION_INFO)) &&
!table->file->can_switch_engines())
{
my_error(ER_ROW_IS_REFERENCED, MYF(0));
@@ -9415,7 +9411,7 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db, const LEX_CSTRING *n
ALTER can become NOOP after handling
the IF (NOT) EXISTS options.
*/
- if (alter_info->flags == 0)
+ if (alter_info->flags == 0 && alter_info->partition_flags == 0)
{
my_snprintf(alter_ctx.tmp_buff, sizeof(alter_ctx.tmp_buff),
ER_THD(thd, ER_INSERT_INFO), 0L, 0L,
@@ -9438,6 +9434,7 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db, const LEX_CSTRING *n
as we are testing if flags == 0 above.
*/
if (!(alter_info->flags & ~(ALTER_RENAME | ALTER_KEYS_ONOFF)) &&
+ alter_info->partition_flags == 0 &&
alter_info->requested_algorithm !=
Alter_info::ALTER_TABLE_ALGORITHM_COPY) // No need to touch frm.
{
@@ -9498,7 +9495,7 @@ bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db, const LEX_CSTRING *n
/*
ALGORITHM and LOCK clauses are generally not allowed by the
parser for operations related to partitioning.
- The exceptions are ALTER_PARTITION and ALTER_REMOVE_PARTITIONING.
+ The exceptions are ALTER_PARTITION_INFO and ALTER_PARTITION_REMOVE.
For consistency, we report ER_ALTER_OPERATION_NOT_SUPPORTED here.
*/
if (alter_info->requested_lock !=