From 79fe4bed3034befc7bcfc4f64bd8df514179e71a Mon Sep 17 00:00:00 2001 From: unknown <mikael@c-0409e253.1238-1-64736c10.cust.bredbandsbolaget.se> Date: Tue, 13 Jun 2006 14:36:23 -0400 Subject: [PATCH] BUG#19307: CSV engine can cause crashes in partitioned tables (due to its conversion of NULLs to 0) mysql-test/r/partition.result: New test case mysql-test/t/partition.test: New test case sql/partition_info.cc: Disable CSV engine for partitioned tables sql/share/errmsg.txt: Update error message for more flexibility sql/sql_partition.cc: Editing fixes --- mysql-test/r/partition.result | 5 +++++ mysql-test/t/partition.test | 12 ++++++++++++ sql/partition_info.cc | 6 ++++-- sql/share/errmsg.txt | 4 ++-- sql/sql_partition.cc | 6 +++--- 5 files changed, 26 insertions(+), 7 deletions(-) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 3be9f3edee2..2aacbd23b1e 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -1,5 +1,10 @@ drop table if exists t1; create table t1 (a int) +engine = csv +partition by list (a) +(partition p0 values in (null)); +ERROR HY000: CSV handler cannot be used in partitioned tables +create table t1 (a int) partition by key(a) (partition p0 engine = MEMORY); drop table t1; diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index a24124d3fb5..8773eb2f2e3 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -9,6 +9,17 @@ drop table if exists t1; --enable_warnings +# +# Bug 19307: CSV engine crashes +# +--error ER_PARTITION_MERGE_ERROR +create table t1 (a int) +engine = csv +partition by list (a) +(partition p0 values in (null)); + +# +# create table t1 (a int) partition by key(a) (partition p0 engine = MEMORY); @@ -1077,4 +1088,5 @@ OPTIMIZE TABLE t1; drop table t1; + --echo End of 5.1 tests diff --git a/sql/partition_info.cc b/sql/partition_info.cc index 0924a8adf6e..0af200dc4d2 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -442,9 +442,11 @@ bool partition_info::check_engine_mix(handlerton **engine_array, uint no_parts) DBUG_RETURN(TRUE); } } while (++i < no_parts); - if (engine_array[0] == &myisammrg_hton) + if (engine_array[0] == &myisammrg_hton || + engine_array[0] == &tina_hton) { - my_error(ER_PARTITION_MERGE_ERROR, MYF(0)); + my_error(ER_PARTITION_MERGE_ERROR, MYF(0), + engine_array[0] == &myisammrg_hton ? "MyISAM Merge" : "CSV"); DBUG_RETURN(TRUE); } DBUG_RETURN(FALSE); diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 5aab951b2ca..9a0319a88b5 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -5849,5 +5849,5 @@ ER_EVENT_MODIFY_QUEUE_ERROR ER_EVENT_SET_VAR_ERROR eng "Error during starting/stopping of the scheduler. Error code %u" ER_PARTITION_MERGE_ERROR - eng "MyISAM Merge handler cannot be used in partitioned tables" - swe "MyISAM Merge kan inte anändas i en partitionerad tabell" + eng "%s handler cannot be used in partitioned tables" + swe "%s kan inte användas i en partitionerad tabell" diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index e946e972968..73fc699989e 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2005 MySQL AB +/* Copyright (C) 2005, 2006 MySQL AB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -238,8 +238,8 @@ bool partition_default_handling(TABLE *table, partition_info *part_info, check_reorganise_list() new_part_info New partition info old_part_info Old partition info - list_part_names The list of partition names that will go away and can be reused in the - new table. + list_part_names The list of partition names that will go away and + can be reused in the new table. RETURN VALUES TRUE Inacceptable name conflict detected. -- 2.30.9