1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-07 00:04:31 +03:00

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
This commit is contained in:
unknown
2006-06-13 14:36:23 -04:00
parent e05d55de5f
commit 60be734e52
5 changed files with 26 additions and 7 deletions

View File

@@ -1,5 +1,10 @@
drop table if exists t1; drop table if exists t1;
create table t1 (a int) 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 by key(a)
(partition p0 engine = MEMORY); (partition p0 engine = MEMORY);
drop table t1; drop table t1;

View File

@@ -9,6 +9,17 @@
drop table if exists t1; drop table if exists t1;
--enable_warnings --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) create table t1 (a int)
partition by key(a) partition by key(a)
(partition p0 engine = MEMORY); (partition p0 engine = MEMORY);
@@ -1077,4 +1088,5 @@ OPTIMIZE TABLE t1;
drop table t1; drop table t1;
--echo End of 5.1 tests --echo End of 5.1 tests

View File

@@ -442,9 +442,11 @@ bool partition_info::check_engine_mix(handlerton **engine_array, uint no_parts)
DBUG_RETURN(TRUE); DBUG_RETURN(TRUE);
} }
} while (++i < no_parts); } 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(TRUE);
} }
DBUG_RETURN(FALSE); DBUG_RETURN(FALSE);

View File

@@ -5849,5 +5849,5 @@ ER_EVENT_MODIFY_QUEUE_ERROR
ER_EVENT_SET_VAR_ERROR ER_EVENT_SET_VAR_ERROR
eng "Error during starting/stopping of the scheduler. Error code %u" eng "Error during starting/stopping of the scheduler. Error code %u"
ER_PARTITION_MERGE_ERROR ER_PARTITION_MERGE_ERROR
eng "MyISAM Merge handler cannot be used in partitioned tables" eng "%s handler cannot be used in partitioned tables"
swe "MyISAM Merge kan inte an<61>ndas i en partitionerad tabell" swe "%s kan inte anv<EFBFBD>ndas i en partitionerad tabell"

View File

@@ -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 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 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() check_reorganise_list()
new_part_info New partition info new_part_info New partition info
old_part_info Old 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 list_part_names The list of partition names that will go away and
new table. can be reused in the new table.
RETURN VALUES RETURN VALUES
TRUE Inacceptable name conflict detected. TRUE Inacceptable name conflict detected.