summaryrefslogtreecommitdiff
path: root/sql/sql_partition.cc
diff options
context:
space:
mode:
authorMattias Jonsson <mattias.jonsson@sun.com>2008-12-02 11:18:01 +0100
committerMattias Jonsson <mattias.jonsson@sun.com>2008-12-02 11:18:01 +0100
commit6538f19f9a73c1102f4ca240bda6aa58799aba6b (patch)
treecb5e6f2879630e8707a6a568eac7954d2fb398f6 /sql/sql_partition.cc
parentc82ff582226749c6049bdbbbdaa2031dc72d343b (diff)
downloadmariadb-git-6538f19f9a73c1102f4ca240bda6aa58799aba6b.tar.gz
Bug#40389: REORGANIZE PARTITION crashes when only using one partition
The non documented command 'ALTER PARTITION t REORGANIZE PARTITION' (without any partitions!) which only make sense for nativly partitioned engines, such as NDB, crashes the server if there was no change of number of partitions. The problem was wrong usage of fast_end_partition function, which led to usage of a non initialized variable. mysql-test/r/partition_mgm.result: Bug#40389: REORGANIZE PARTITION crashes when only using one partition Updated test result. mysql-test/t/partition_mgm.test: Bug#40389: REORGANIZE PARTITION crashes when only using one partition Added new test case. sql/partition_info.cc: Bug#40389: REORGANIZE PARTITION crashes when only using one partition Added DBUG_ASSERT to easier catch similar problems. sql/sql_partition.cc: Bug#40389: REORGANIZE PARTITION crashes when only using one partition fast_end_partitions is called later in mysql_alter_table if variable fast_alter_partition is set.
Diffstat (limited to 'sql/sql_partition.cc')
-rw-r--r--sql/sql_partition.cc5
1 files changed, 2 insertions, 3 deletions
diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc
index da80a2125e9..6fb803ce4ff 100644
--- a/sql/sql_partition.cc
+++ b/sql/sql_partition.cc
@@ -4228,9 +4228,8 @@ uint prep_alter_part_table(THD *thd, TABLE *table, Alter_info *alter_info,
after the change as before. Thus we can reply ok immediately
without any changes at all.
*/
- DBUG_RETURN(fast_end_partition(thd, ULL(0), ULL(0),
- table, NULL,
- TRUE, NULL, FALSE));
+ *fast_alter_partition= TRUE;
+ DBUG_RETURN(FALSE);
}
else if (new_part_no > curr_part_no)
{