diff options
author | Alexey Kopytov <Alexey.Kopytov@sun.com> | 2009-07-24 16:09:35 +0400 |
---|---|---|
committer | Alexey Kopytov <Alexey.Kopytov@sun.com> | 2009-07-24 16:09:35 +0400 |
commit | 498dc4d32df12aab23c2d1e1bed06dd34309f112 (patch) | |
tree | 7177fb4e7b75342054a38eda8c37feffaea20cfc | |
parent | 5398b3ef2b610f613a4fe555ae5c8f01ebcf61cc (diff) | |
parent | 885292e424fb640703c972ba126a99e042383abe (diff) | |
download | mariadb-git-498dc4d32df12aab23c2d1e1bed06dd34309f112.tar.gz |
Manual merge.
-rw-r--r-- | mysql-test/r/insert_select.result | 13 | ||||
-rw-r--r-- | mysql-test/t/insert_select.test | 21 | ||||
-rw-r--r-- | sql/sql_select.cc | 5 |
3 files changed, 39 insertions, 0 deletions
diff --git a/mysql-test/r/insert_select.result b/mysql-test/r/insert_select.result index 2f2cc6334a9..1af66c41205 100644 --- a/mysql-test/r/insert_select.result +++ b/mysql-test/r/insert_select.result @@ -833,3 +833,16 @@ Table Op Msg_type Msg_text test.t2 check status OK drop table t1,t2; ################################################################## +# +# Bug #46075: Assertion failed: 0, file .\protocol.cc, line 416 +# +CREATE TABLE t1(a INT); +SET max_heap_table_size = 16384; +SET @old_myisam_data_pointer_size = @@myisam_data_pointer_size; +SET GLOBAL myisam_data_pointer_size = 2; +INSERT INTO t1 VALUES (1), (2), (3), (4), (5); +INSERT IGNORE INTO t1 SELECT t1.a FROM t1,t1 t2,t1 t3,t1 t4,t1 t5,t1 t6,t1 t7; +Got one of the listed errors +SET GLOBAL myisam_data_pointer_size = @old_myisam_data_pointer_size; +DROP TABLE t1; +End of 5.0 tests diff --git a/mysql-test/t/insert_select.test b/mysql-test/t/insert_select.test index f8023fcfc60..9889f48237b 100644 --- a/mysql-test/t/insert_select.test +++ b/mysql-test/t/insert_select.test @@ -394,3 +394,24 @@ check table t2 extended; drop table t1,t2; --echo ################################################################## +--echo # +--echo # Bug #46075: Assertion failed: 0, file .\protocol.cc, line 416 +--echo # + +CREATE TABLE t1(a INT); +# To force MyISAM temp. table in the following INSERT ... SELECT. +SET max_heap_table_size = 16384; +# To overflow the temp. table. +SET @old_myisam_data_pointer_size = @@myisam_data_pointer_size; +SET GLOBAL myisam_data_pointer_size = 2; + +INSERT INTO t1 VALUES (1), (2), (3), (4), (5); + +--error ER_RECORD_FILE_FULL,ER_RECORD_FILE_FULL +INSERT IGNORE INTO t1 SELECT t1.a FROM t1,t1 t2,t1 t3,t1 t4,t1 t5,t1 t6,t1 t7; + +# Cleanup +SET GLOBAL myisam_data_pointer_size = @old_myisam_data_pointer_size; +DROP TABLE t1; + +--echo End of 5.0 tests diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 401745bd9b8..7fa0effb30b 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -10652,6 +10652,11 @@ bool create_myisam_from_heap(THD *thd, TABLE *table, TMP_TABLE_PARAM *param, if (table->s->db_type() != heap_hton || error != HA_ERR_RECORD_FILE_FULL) { + /* + We don't want this error to be converted to a warning, e.g. in case of + INSERT IGNORE ... SELECT. + */ + thd->fatal_error(); table->file->print_error(error,MYF(0)); DBUG_RETURN(1); } |