Commit 27402f95 authored by Alexey Botchkov's avatar Alexey Botchkov

merging.

parents f6b84aa0 0dae01c2
...@@ -193,4 +193,17 @@ show status like "Qcache_hits"; ...@@ -193,4 +193,17 @@ show status like "Qcache_hits";
Variable_name Value Variable_name Value
Qcache_hits 2 Qcache_hits 2
drop table t1; drop table t1;
#
# Bug46615 Assertion in Query_cache::invalidate in INSERT in a VIEW of a MERGE table
#
CREATE TABLE t1 (c1 INT, c2 INT);
CREATE TABLE t2 LIKE t1;
SET AUTOCOMMIT=OFF;
CREATE VIEW t1_view AS SELECT c1 FROM t1 NATURAL JOIN t2 ;
INSERT INTO t1_view (c1, c2) SELECT c1, c2 FROM t1;
ERROR 42S22: Unknown column 'c2' in 'field list'
DROP TABLE t1;
DROP TABLE t2;
DROP VIEW t1_view;
SET AUTOCOMMIT=DEFAULT;
set GLOBAL query_cache_size=default; set GLOBAL query_cache_size=default;
...@@ -126,5 +126,22 @@ show status like "Qcache_inserts"; ...@@ -126,5 +126,22 @@ show status like "Qcache_inserts";
show status like "Qcache_hits"; show status like "Qcache_hits";
drop table t1; drop table t1;
--echo #
--echo # Bug46615 Assertion in Query_cache::invalidate in INSERT in a VIEW of a MERGE table
--echo #
CREATE TABLE t1 (c1 INT, c2 INT);
CREATE TABLE t2 LIKE t1;
SET AUTOCOMMIT=OFF;
CREATE VIEW t1_view AS SELECT c1 FROM t1 NATURAL JOIN t2 ;
# Before the bug patch the below INSERT stmt used to
# crash when other fields than the ones listed in the
# view definition were used.
--error ER_BAD_FIELD_ERROR
INSERT INTO t1_view (c1, c2) SELECT c1, c2 FROM t1;
DROP TABLE t1;
DROP TABLE t2;
DROP VIEW t1_view;
SET AUTOCOMMIT=DEFAULT;
# Reset default environment. # Reset default environment.
set GLOBAL query_cache_size=default; set GLOBAL query_cache_size=default;
...@@ -3241,7 +3241,7 @@ mysql_execute_command(THD *thd) ...@@ -3241,7 +3241,7 @@ mysql_execute_command(THD *thd)
TODO: this is workaround. right way will be move invalidating in TODO: this is workaround. right way will be move invalidating in
the unlock procedure. the unlock procedure.
*/ */
if (first_table->lock_type == TL_WRITE_CONCURRENT_INSERT && if (!res && first_table->lock_type == TL_WRITE_CONCURRENT_INSERT &&
thd->lock) thd->lock)
{ {
/* INSERT ... SELECT should invalidate only the very first table */ /* INSERT ... SELECT should invalidate only the very first table */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment