diff options
author | Mattias Jonsson <mattias.jonsson@sun.com> | 2010-05-25 15:41:00 +0200 |
---|---|---|
committer | Mattias Jonsson <mattias.jonsson@sun.com> | 2010-05-25 15:41:00 +0200 |
commit | 0fdd97af48190fab72ea752a7d8120d891bb49af (patch) | |
tree | 5645afdf3de2c1af3196a6449398bc4b0a03f6fa | |
parent | 8f8e1d6fb85d4be1e8e44beb22b26a72f76ac84e (diff) | |
download | mariadb-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.result | 16 | ||||
-rw-r--r-- | mysql-test/t/partition_error.test | 22 | ||||
-rw-r--r-- | sql/ha_partition.cc | 2 |
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); } /* |