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