diff options
author | unknown <mikael@c-0409e253.1238-1-64736c10.cust.bredbandsbolaget.se> | 2006-06-13 14:36:23 -0400 |
---|---|---|
committer | unknown <mikael@c-0409e253.1238-1-64736c10.cust.bredbandsbolaget.se> | 2006-06-13 14:36:23 -0400 |
commit | 60be734e52dfa96aa4cec371d1b41c2ba1efcbb8 (patch) | |
tree | 3baba20c740f347bd41deb095102fe95ae05dda4 | |
parent | e05d55de5ff6c95143fb1096da8019ab5fb7c6a2 (diff) | |
download | mariadb-git-60be734e52dfa96aa4cec371d1b41c2ba1efcbb8.tar.gz |
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
-rw-r--r-- | mysql-test/r/partition.result | 5 | ||||
-rw-r--r-- | mysql-test/t/partition.test | 12 | ||||
-rw-r--r-- | sql/partition_info.cc | 6 | ||||
-rw-r--r-- | sql/share/errmsg.txt | 4 | ||||
-rw-r--r-- | 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. |