summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraivanov@mysql.com <>2006-04-11 22:46:26 +0400
committeraivanov@mysql.com <>2006-04-11 22:46:26 +0400
commitcb011af0b0d3369703d63710fe5fadd66dce148f (patch)
treed0301860e2986862d0c67ebdf2f40f78795341c1
parentfff2bc4d469b82761b101b4698ae3c738d92675b (diff)
parent5ae25ea5f750937b89d2fc52756eb0776d0d666e (diff)
downloadmariadb-git-cb011af0b0d3369703d63710fe5fadd66dce148f.tar.gz
Merge aivanov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/alexi/bugs/mysql-5.0-merge
-rw-r--r--mysql-test/r/insert.result6
-rw-r--r--mysql-test/t/insert.test12
-rw-r--r--sql/sql_insert.cc2
3 files changed, 19 insertions, 1 deletions
diff --git a/mysql-test/r/insert.result b/mysql-test/r/insert.result
index f788576f824..00a987c9254 100644
--- a/mysql-test/r/insert.result
+++ b/mysql-test/r/insert.result
@@ -299,3 +299,9 @@ select count(*) from t2;
count(*)
25500
drop table t1,t2,t3;
+create table t1 (n int);
+create view v1 as select * from t1;
+insert delayed into v1 values (1);
+ERROR HY000: 'test.v1' is not BASE TABLE
+drop table t1;
+drop view v1;
diff --git a/mysql-test/t/insert.test b/mysql-test/t/insert.test
index ddde6cfa5d3..0c64dd80bec 100644
--- a/mysql-test/t/insert.test
+++ b/mysql-test/t/insert.test
@@ -175,3 +175,15 @@ select count(*) from t2;
insert into t2 select t1.* from t1, t2 t, t3 where t1.id1 = t.id2 and t.id2 = t3.id3;
select count(*) from t2;
drop table t1,t2,t3;
+
+#
+# Test for INSERT DELAYED INTO a <view>
+# BUG#13683: INSERT DELAYED into a view creates an infinite loop
+#
+
+create table t1 (n int);
+create view v1 as select * from t1;
+--error 1347
+insert delayed into v1 values (1);
+drop table t1;
+drop view v1;
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index 67aab57b880..320b8e1df9d 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -321,7 +321,7 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
if (!table_list->derived && !table_list->view)
table_list->updatable= 1; // usual table
}
- else
+ else if (thd->net.last_errno != ER_WRONG_OBJECT)
{
/* Too many delayed insert threads; Use a normal insert */
table_list->lock_type= lock_type= TL_WRITE;