Skip to content

Commit

Permalink
MDEV-11363: Assertion `!derived->first_sel ect()->first_inner_unit() …
Browse files Browse the repository at this point in the history
…|| derived->first_select()->first_inner_unit()->first_select()-> exclude_from_table_unique_test' failed in TABLE_LIST::set_check_materialized()

Do not try to materialize derived table which already merged (irreversebly).
  • Loading branch information
sanja-byelkin committed Mar 9, 2017
1 parent 70a0500 commit 8e05953
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 1 deletion.
16 changes: 16 additions & 0 deletions mysql-test/r/derived.result
Expand Up @@ -1080,5 +1080,21 @@ f
drop view v1;
drop table t1;
#
# MDEV-11363: Assertion `!derived->first_sel ect()->first_inner_unit() ||
# derived->first_select()->first_inner_unit()->first_select()->
# exclude_from_table_unique_test' failed in
# TABLE_LIST::set_check_materialized()
#
CREATE TABLE t1 (f1 INT);
CREATE TABLE t2 (f2 INT);
CREATE TABLE t3 (f3 INT);
CREATE VIEW v1 AS ( SELECT f1 AS f FROM t1 ) UNION ( SELECT f2 AS f FROM t2 );
CREATE VIEW v2 AS SELECT f3 AS f FROM t3;
CREATE VIEW v3 AS SELECT f FROM ( SELECT f3 AS f FROM v1, t3 ) AS sq;
CREATE VIEW v4 AS SELECT COUNT(*) as f FROM v3;
REPLACE INTO v2 ( SELECT * FROM v4 ) UNION ( SELECT f FROM v2 );
drop view v1,v2,v3,v4;
drop table t1,t2,t3;
#
# End of 10.2 tests
#
19 changes: 19 additions & 0 deletions mysql-test/t/derived.test
Expand Up @@ -928,6 +928,25 @@ EXECUTE stmt;
drop view v1;
drop table t1;

--echo #
--echo # MDEV-11363: Assertion `!derived->first_sel ect()->first_inner_unit() ||
--echo # derived->first_select()->first_inner_unit()->first_select()->
--echo # exclude_from_table_unique_test' failed in
--echo # TABLE_LIST::set_check_materialized()
--echo #

CREATE TABLE t1 (f1 INT);
CREATE TABLE t2 (f2 INT);
CREATE TABLE t3 (f3 INT);
CREATE VIEW v1 AS ( SELECT f1 AS f FROM t1 ) UNION ( SELECT f2 AS f FROM t2 );
CREATE VIEW v2 AS SELECT f3 AS f FROM t3;
CREATE VIEW v3 AS SELECT f FROM ( SELECT f3 AS f FROM v1, t3 ) AS sq;
CREATE VIEW v4 AS SELECT COUNT(*) as f FROM v3;
REPLACE INTO v2 ( SELECT * FROM v4 ) UNION ( SELECT f FROM v2 );

drop view v1,v2,v3,v4;
drop table t1,t2,t3;

--echo #
--echo # End of 10.2 tests
--echo #
2 changes: 1 addition & 1 deletion sql/sql_base.cc
Expand Up @@ -1060,7 +1060,7 @@ TABLE_LIST* find_dup_table(THD *thd, TABLE_LIST *table, TABLE_LIST *table_list,
{
/* Try to fix */
TABLE_LIST *derived= res->belong_to_derived;
if (derived->is_merged_derived())
if (derived->is_merged_derived() && !derived->derived->is_excluded())
{
DBUG_PRINT("info",
("convert merged to materialization to resolve the conflict"));
Expand Down

0 comments on commit 8e05953

Please sign in to comment.