mirror of
https://github.com/MariaDB/server.git
synced 2025-08-31 22:22:30 +03:00
Bug#39434: ALTER TABLE CHECK/OPTIMIZE/ANALYZE PARTITION work
on non-partitioned table Problem was that partitioning specific commands was accepted for non partitioned tables and treated like ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE, after bug-20129 was fixed, which changed the code path from mysql_alter_table to mysql_admin_table. Solution was to check if the table was partitioned before trying to execute the admin command mysql-test/r/partition_mgm_err.result: Bug#39434: ALTER TABLE CHECK/OPTIMIZE/ANALYZE PARTITION work on non-partitioned table Updated test result mysql-test/t/partition_mgm_err.test: Bug#39434: ALTER TABLE CHECK/OPTIMIZE/ANALYZE PARTITION work on non-partitioned table Updated test case sql/ha_partition.cc: Bug#39434: ALTER TABLE CHECK/OPTIMIZE/ANALYZE PARTITION work on non-partitioned table Simplified the code by using ALTER_ADMIN_PARTITION for all commands that go through mysql_admin_tables and is set for partitioning specific commands that. sql/ha_partition.h: Bug#39434: ALTER TABLE CHECK/OPTIMIZE/ANALYZE PARTITION work on non-partitioned table Simplified the code by using ALTER_ADMIN_PARTITION for all commands that go through mysql_admin_tables and is set for partitioning specific commands that. sql/sql_lex.h: Bug#39434: ALTER TABLE CHECK/OPTIMIZE/ANALYZE PARTITION work on non-partitioned table Simplified the code by using ALTER_ADMIN_PARTITION for all commands that go through mysql_admin_tables and is set for partitioning specific commands that. Removed ALTER_ANALYZE/CHECK/OPTIMIZE/REPAIR_PARTITION and added ALTER_ADMIN_PARTITION instead. sql/sql_partition.cc: Bug#39434: ALTER TABLE CHECK/OPTIMIZE/ANALYZE PARTITION work on non-partitioned table Simplified the code by using ALTER_ADMIN_PARTITION for all commands that go through mysql_admin_tables and is set for partitioning specific commands that. Removed ALTER_ANALYZE/CHECK/OPTIMIZE/REPAIR_PARTITION and added ALTER_ADMIN_PARTITION instead. sql/sql_table.cc: Bug#39434: ALTER TABLE CHECK/OPTIMIZE/ANALYZE PARTITION work on non-partitioned table Give error and return if trying partitioning admin command on non partitioned table. Simplified the code by using ALTER_ADMIN_PARTITION for all commands that go through mysql_admin_tables and is set for partitioning specific commands that. Removed ALTER_ANALYZE/CHECK/OPTIMIZE/REPAIR_PARTITION and added ALTER_ADMIN_PARTITION instead. sql/sql_yacc.yy: Bug#39434: ALTER TABLE CHECK/OPTIMIZE/ANALYZE PARTITION work on non-partitioned table Simplified the code by using ALTER_ADMIN_PARTITION for all commands that go through mysql_admin_tables and is set for partitioning specific commands that. Removed ALTER_ANALYZE/CHECK/OPTIMIZE/REPAIR_PARTITION and added ALTER_ADMIN_PARTITION instead.
This commit is contained in:
@@ -4198,7 +4198,7 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
||||
table->next_local= save_next_local;
|
||||
thd->open_options&= ~extra_open_options;
|
||||
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
||||
if (table->table && table->table->part_info)
|
||||
if (table->table)
|
||||
{
|
||||
/*
|
||||
Set up which partitions that should be processed
|
||||
@@ -4206,11 +4206,13 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
||||
*/
|
||||
Alter_info *alter_info= &lex->alter_info;
|
||||
|
||||
if (alter_info->flags & ALTER_ANALYZE_PARTITION ||
|
||||
alter_info->flags & ALTER_CHECK_PARTITION ||
|
||||
alter_info->flags & ALTER_OPTIMIZE_PARTITION ||
|
||||
alter_info->flags & ALTER_REPAIR_PARTITION)
|
||||
if (alter_info->flags & ALTER_ADMIN_PARTITION)
|
||||
{
|
||||
if (!table->table->part_info)
|
||||
{
|
||||
my_error(ER_PARTITION_MGMT_ON_NONPARTITIONED, MYF(0));
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
uint no_parts_found;
|
||||
uint no_parts_opt= alter_info->partition_names.elements;
|
||||
no_parts_found= set_part_state(alter_info, table->table->part_info,
|
||||
|
Reference in New Issue
Block a user