summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMattias Jonsson <mattias.jonsson@sun.com>2010-05-25 15:41:00 +0200
committerMattias Jonsson <mattias.jonsson@sun.com>2010-05-25 15:41:00 +0200
commit0fdd97af48190fab72ea752a7d8120d891bb49af (patch)
tree5645afdf3de2c1af3196a6449398bc4b0a03f6fa
parent8f8e1d6fb85d4be1e8e44beb22b26a72f76ac84e (diff)
downloadmariadb-git-0fdd97af48190fab72ea752a7d8120d891bb49af.tar.gz
Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
Problem was reporting wrong error Fixed by adding a new error which better explain the problem. mysql-test/r/partition_error.result: Bug#49161: Out of memory; restart server and try again (needed 2 bytes) Updated test result mysql-test/t/partition_error.test: Bug#49161: Out of memory; restart server and try again (needed 2 bytes) Added test case sql/ha_partition.cc: Bug#49161: Out of memory; restart server and try again (needed 2 bytes) Better error message. (used ER_UNKNOWN_ERROR to avoid merge problems in mysql-trunk+)
-rw-r--r--mysql-test/r/partition_error.result16
-rw-r--r--mysql-test/t/partition_error.test22
-rw-r--r--sql/ha_partition.cc2
3 files changed, 37 insertions, 3 deletions
diff --git a/mysql-test/r/partition_error.result b/mysql-test/r/partition_error.result
index e1e284556dd..16428fba4d9 100644
--- a/mysql-test/r/partition_error.result
+++ b/mysql-test/r/partition_error.result
@@ -1,5 +1,21 @@
drop table if exists t1;
#
+# Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
+#
+CREATE TABLE t1 (a INT) PARTITION BY HASH (a);
+FLUSH TABLES;
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check Error Failed to read from the .par file
+test.t1 check Error Incorrect information in file: './test/t1.frm'
+test.t1 check error Corrupt
+SELECT * FROM t1;
+ERROR HY000: Failed to read from the .par file
+# Note that it is currently impossible to drop a partitioned table
+# without the .par file
+DROP TABLE t1;
+ERROR 42S02: Unknown table 't1'
+#
# Bug#49477: Assertion `0' failed in ha_partition.cc:5530
# with temporary table and partitions
#
diff --git a/mysql-test/t/partition_error.test b/mysql-test/t/partition_error.test
index dbc67032a42..7f733df701b 100644
--- a/mysql-test/t/partition_error.test
+++ b/mysql-test/t/partition_error.test
@@ -7,7 +7,26 @@
--disable_warnings
drop table if exists t1;
--enable_warnings
-
+
+let $MYSQLD_DATADIR= `SELECT @@datadir`;
+
+--echo #
+--echo # Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
+--echo #
+CREATE TABLE t1 (a INT) PARTITION BY HASH (a);
+FLUSH TABLES;
+--remove_file $MYSQLD_DATADIR/test/t1.par
+CHECK TABLE t1;
+--error ER_UNKNOWN_ERROR
+SELECT * FROM t1;
+--echo # Note that it is currently impossible to drop a partitioned table
+--echo # without the .par file
+--error ER_BAD_TABLE_ERROR
+DROP TABLE t1;
+--remove_file $MYSQLD_DATADIR/test/t1.frm
+--remove_file $MYSQLD_DATADIR/test/t1#P#p0.MYI
+--remove_file $MYSQLD_DATADIR/test/t1#P#p0.MYD
+
--echo #
--echo # Bug#49477: Assertion `0' failed in ha_partition.cc:5530
--echo # with temporary table and partitions
@@ -167,7 +186,6 @@ partitions 3
partition x2 tablespace ts2,
partition x3 tablespace ts3);
-let $MYSQLD_DATADIR= `select @@datadir`;
select load_file('$MYSQLD_DATADIR/test/t1.par');
#
# Partition by hash, invalid field in function
diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc
index 4fc3b2c9908..60722f0100e 100644
--- a/sql/ha_partition.cc
+++ b/sql/ha_partition.cc
@@ -359,7 +359,7 @@ bool ha_partition::initialize_partition(MEM_ROOT *mem_root)
}
else if (get_from_handler_file(table_share->normalized_path.str, mem_root))
{
- mem_alloc_error(2);
+ my_message(ER_UNKNOWN_ERROR, "Failed to read from the .par file", MYF(0));
DBUG_RETURN(1);
}
/*