summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMattias Jonsson <mattiasj@mysql.com>2008-06-03 13:25:41 +0200
committerMattias Jonsson <mattiasj@mysql.com>2008-06-03 13:25:41 +0200
commita8af693b5031019646c5bdffa50df760123182e5 (patch)
treeb16830a525163b32894bb97f2bb0546f6dfa0daf
parentc392457f7c234f55dfb74104771b216b15458383 (diff)
downloadmariadb-git-a8af693b5031019646c5bdffa50df760123182e5.tar.gz
Bug#31210: INSERT DELAYED crashes server when used on partitioned tables
Problem was an unclear error message since it could suggest that MyISAM did not support INSERT DELAYED. Changed the error message to say that DELAYED is not supported by the table, instead of the table's storage engine. The confusion is that a partitioned table is in somewhat sense using the partitioning storage engine, which in turn uses the ordinary storage engine. By saying that the table does not support DELAYED we do not give any extra informantion about the storage engine or if it is partitioned. mysql-test/r/innodb-replace.result: Bug#31210: INSERT DELAYED crashes server when used on partitioned tables changed error message mysql-test/t/innodb-replace.test: Bug#31210: INSERT DELAYED crashes server when used on partitioned tables changed error message mysql-test/t/merge.test: Bug#31210: INSERT DELAYED crashes server when used on partitioned tables changed error message mysql-test/t/partition_hash.test: Bug#31210: INSERT DELAYED crashes server when used on partitioned tables changed error message sql/share/errmsg.txt: Bug#31210: INSERT DELAYED crashes server when used on partitioned tables added error message for tables not supporting DELAYED sql/sql_insert.cc: Bug#31210: INSERT DELAYED crashes server when used on partitioned tables changed error message
-rw-r--r--mysql-test/r/innodb-replace.result4
-rw-r--r--mysql-test/t/innodb-replace.test4
-rw-r--r--mysql-test/t/merge.test6
-rw-r--r--mysql-test/t/partition_hash.test5
-rw-r--r--sql/share/errmsg.txt3
-rw-r--r--sql/sql_insert.cc2
6 files changed, 14 insertions, 10 deletions
diff --git a/mysql-test/r/innodb-replace.result b/mysql-test/r/innodb-replace.result
index 77e0aeb38fd..c926bb89a2e 100644
--- a/mysql-test/r/innodb-replace.result
+++ b/mysql-test/r/innodb-replace.result
@@ -3,11 +3,11 @@ create table t1 (c1 char(5) unique not null, c2 int, stamp timestamp) engine=inn
select * from t1;
c1 c2 stamp
replace delayed into t1 (c1, c2) values ( "text1","11");
-ERROR HY000: Table storage engine for 't1' doesn't have this option
+ERROR HY000: DELAYED option not supported for table 't1'
select * from t1;
c1 c2 stamp
replace delayed into t1 (c1, c2) values ( "text1","12");
-ERROR HY000: Table storage engine for 't1' doesn't have this option
+ERROR HY000: DELAYED option not supported for table 't1'
select * from t1;
c1 c2 stamp
drop table t1;
diff --git a/mysql-test/t/innodb-replace.test b/mysql-test/t/innodb-replace.test
index d44ede65ce8..8c3aacde5e8 100644
--- a/mysql-test/t/innodb-replace.test
+++ b/mysql-test/t/innodb-replace.test
@@ -11,10 +11,10 @@ drop table if exists t1;
#
create table t1 (c1 char(5) unique not null, c2 int, stamp timestamp) engine=innodb;
select * from t1;
---error 1031
+--error ER_DELAYED_NOT_SUPPORTED
replace delayed into t1 (c1, c2) values ( "text1","11");
select * from t1;
---error 1031
+--error ER_DELAYED_NOT_SUPPORTED
replace delayed into t1 (c1, c2) values ( "text1","12");
select * from t1;
drop table t1;
diff --git a/mysql-test/t/merge.test b/mysql-test/t/merge.test
index 76e746db037..fd1336491aa 100644
--- a/mysql-test/t/merge.test
+++ b/mysql-test/t/merge.test
@@ -1201,7 +1201,7 @@ UNLOCK TABLES;
# Succeeds in embedded server - is converted to normal insert
# Fails in normal server, ps-protocol - not supported by engine
# Fails in normal server, normal protocol - not a base table
---error 0, ER_ILLEGAL_HA, ER_WRONG_OBJECT
+--error 0, ER_DELAYED_NOT_SUPPORTED, ER_WRONG_OBJECT
INSERT DELAYED INTO t4 VALUES(44);
# Get rid of row in embedded server
DELETE FROM t4 WHERE c1 = 44;
@@ -1214,9 +1214,9 @@ INSERT DELAYED INTO t3 VALUES(33);
}
SELECT * FROM t4 ORDER BY c1;
LOCK TABLES t3 WRITE, t2 WRITE, t4 WRITE, t1 WRITE;
---error ER_DELAYED_INSERT_TABLE_LOCKED, ER_ILLEGAL_HA
+--error ER_DELAYED_INSERT_TABLE_LOCKED, ER_DELAYED_NOT_SUPPORTED
INSERT DELAYED INTO t4 VALUES(444);
---error ER_DELAYED_INSERT_TABLE_LOCKED, ER_ILLEGAL_HA
+--error ER_DELAYED_INSERT_TABLE_LOCKED, ER_DELAYED_NOT_SUPPORTED
INSERT DELAYED INTO t3 VALUES(333);
SELECT * FROM t4 ORDER BY c1;
UNLOCK TABLES;
diff --git a/mysql-test/t/partition_hash.test b/mysql-test/t/partition_hash.test
index 362d5f747e9..5b9aa5707b9 100644
--- a/mysql-test/t/partition_hash.test
+++ b/mysql-test/t/partition_hash.test
@@ -165,8 +165,9 @@ drop table t1;
#
CREATE TABLE t1 (c1 INT) ENGINE=MyISAM PARTITION BY HASH(c1) PARTITIONS 1;
# The test succeeds in an embedded server because normal insert is done.
-# The test fails in a normal server with "engine doesn't have this option".
---error 0, ER_ILLEGAL_HA
+# The test fails in a normal server with
+# "DELAYED option not supported by table".
+--error 0, ER_DELAYED_NOT_SUPPORTED
INSERT DELAYED INTO t1 VALUES (1);
DROP TABLE t1;
diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt
index e03371a308b..426290714eb 100644
--- a/sql/share/errmsg.txt
+++ b/sql/share/errmsg.txt
@@ -6130,3 +6130,6 @@ ER_LOG_PURGE_NO_FILE
ER_NEED_REPREPARE
eng "Prepared statement needs to be re-prepared"
+
+ER_DELAYED_NOT_SUPPORTED
+ eng "DELAYED option not supported for table '%-.192s'"
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index d1e5c26912d..8847468b7c2 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -2305,7 +2305,7 @@ pthread_handler_t handle_delayed_insert(void *arg)
if (!(di->table->file->ha_table_flags() & HA_CAN_INSERT_DELAYED))
{
thd->fatal_error();
- my_error(ER_ILLEGAL_HA, MYF(0), di->table_list.table_name);
+ my_error(ER_DELAYED_NOT_SUPPORTED, MYF(0), di->table_list.table_name);
goto err;
}
if (di->table->triggers)