diff --git a/mysql-test/suite/versioning/r/select.result b/mysql-test/suite/versioning/r/select.result index 3b0d4b74286..ef2755460c3 100644 --- a/mysql-test/suite/versioning/r/select.result +++ b/mysql-test/suite/versioning/r/select.result @@ -298,6 +298,10 @@ create or replace table t2 (b int) with system versioning; select * from t1 where exists (select 1 from t2 where t2.b = t1.a and t2.b = t1.a); a +### Issue #365, bug 9 (not a derived subquery) +create or replace table t1 (x int) with system versioning; +select t1.x in (select x from t1) a from t1, (select x from t1) b; +a drop view v1; drop table t1, t2; call innodb_verify_vtq(28); diff --git a/mysql-test/suite/versioning/t/select.test b/mysql-test/suite/versioning/t/select.test index 51b10d420e8..8f8698bbfcc 100644 --- a/mysql-test/suite/versioning/t/select.test +++ b/mysql-test/suite/versioning/t/select.test @@ -195,6 +195,10 @@ create or replace table t2 (b int) with system versioning; select * from t1 where exists (select 1 from t2 where t2.b = t1.a and t2.b = t1.a); +--echo ### Issue #365, bug 9 (not a derived subquery) +create or replace table t1 (x int) with system versioning; +select t1.x in (select x from t1) a from t1, (select x from t1) b; + drop view v1; drop table t1, t2; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 76e8eb4f175..67f41797a12 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -791,14 +791,14 @@ int vers_setup_select(THD *thd, TABLE_LIST *tables, COND **where_expr, if (!vers_conditions && outer_slex && slex->vers_import_outer) { TABLE_LIST* derived= slex->master_unit()->derived; - while (outer_slex && (!derived->vers_conditions || derived->vers_conditions.from_inner)) + // inner SELECT may not be a derived table (derived == NULL) + while (derived && outer_slex && (!derived->vers_conditions || derived->vers_conditions.from_inner)) { derived= outer_slex->master_unit()->derived; outer_slex= outer_slex->next_select_in_list(); } - if (outer_slex) + if (derived && outer_slex && !derived->vers_conditions.from_inner) { - DBUG_ASSERT(derived); DBUG_ASSERT(derived->vers_conditions); vers_conditions= derived->vers_conditions; }