diff --git a/mysql-test/r/derived_cond_pushdown.result b/mysql-test/r/derived_cond_pushdown.result index 3b7eb58c14d..9401a035d55 100644 --- a/mysql-test/r/derived_cond_pushdown.result +++ b/mysql-test/r/derived_cond_pushdown.result @@ -7007,3 +7007,12 @@ WHERE f = 1; f 1 DROP TABLE t1; +# +# MDEV-10783: pushdown into constant view +# +CREATE TABLE t1 (i int) ENGINE=MyISAM; +CREATE VIEW v AS SELECT 5; +SELECT * FROM t1 WHERE 1 IN ( SELECT * FROM v ); +i +DROP VIEW v; +DROP TABLE t1; diff --git a/mysql-test/t/derived_cond_pushdown.test b/mysql-test/t/derived_cond_pushdown.test index 7a85c53b5c8..cfd73bd145b 100644 --- a/mysql-test/t/derived_cond_pushdown.test +++ b/mysql-test/t/derived_cond_pushdown.test @@ -898,5 +898,13 @@ SELECT * WHERE f = 1; DROP TABLE t1; +--echo # +--echo # MDEV-10783: pushdown into constant view +--echo # - \ No newline at end of file +CREATE TABLE t1 (i int) ENGINE=MyISAM; +CREATE VIEW v AS SELECT 5; +SELECT * FROM t1 WHERE 1 IN ( SELECT * FROM v ); +DROP VIEW v; +DROP TABLE t1; + \ No newline at end of file diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc index b0d505b8b38..a7435117e69 100644 --- a/sql/sql_derived.cc +++ b/sql/sql_derived.cc @@ -1144,6 +1144,10 @@ bool pushdown_cond_for_derived(THD *thd, Item *cond, TABLE_LIST *derived) if (!any_select_allows_cond_pushdown) return false; + /* Do not push conditions into constant derived */ + if (derived->fill_me) + return false; + /* Do not push conditions into recursive with tables */ if (derived->is_recursive_with_table()) return false;