Commit 60be734e authored by unknown's avatar unknown
Browse files

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
parent e05d55de
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
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;
+12 −0
Original line number Diff line number Diff line
@@ -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
+4 −2
Original line number Diff line number Diff line
@@ -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);
+2 −2
Original line number Diff line number Diff line
@@ -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 anndas i en partitionerad tabell"
        eng "%s handler cannot be used in partitioned tables"
        swe "%s kan inte anvndas i en partitionerad tabell"
+3 −3
Original line number Diff line number Diff line
/* 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.