diff options
author | Sergei Golubchik <serg@mariadb.org> | 2022-05-16 17:07:50 +0200 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2022-05-16 20:18:18 +0200 |
commit | 4a8a6f605d3f9c8cbca14a04cb75c6d2a29fb6f6 (patch) | |
tree | d94bdcaba4a2afae612e48f116ef2017cfee77af | |
parent | a2bcfa64fee99bd6892a198ebb20043a39523d40 (diff) | |
download | mariadb-git-4a8a6f605d3f9c8cbca14a04cb75c6d2a29fb6f6.tar.gz |
MDEV-28578 Server crashes in Item_field::fix_outer_field after CREATE SELECT
same as MDEV-26412, but in CREATE...SELECT.
fix: apply 39feab3cd31b to create rule too.
-rw-r--r-- | mysql-test/main/insert.result | 8 | ||||
-rw-r--r-- | mysql-test/main/insert.test | 9 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 1 |
3 files changed, 18 insertions, 0 deletions
diff --git a/mysql-test/main/insert.result b/mysql-test/main/insert.result index af7dcbedd1f..8423319f557 100644 --- a/mysql-test/main/insert.result +++ b/mysql-test/main/insert.result @@ -770,4 +770,12 @@ create table t (a int); select 1 in (select count(*) from t t1 join (t t2 join t t3 on (t1.a != 0))); ERROR 42S22: Unknown column 't1.a' in 'on clause' drop table t; +# +# MDEV-28578 Server crashes in Item_field::fix_outer_field after CREATE SELECT +# +create table t1 (i int) ; +create table t2 (j int) ; +create table t4 select * from t1 join t2 on (select t3.i); +ERROR 42S22: Unknown column 't3.i' in 'field list' +drop table t1, t2; # End of 10.4 tests diff --git a/mysql-test/main/insert.test b/mysql-test/main/insert.test index 27d44918bbb..b27290bc91c 100644 --- a/mysql-test/main/insert.test +++ b/mysql-test/main/insert.test @@ -638,4 +638,13 @@ create table t (a int); select 1 in (select count(*) from t t1 join (t t2 join t t3 on (t1.a != 0))); drop table t; +--echo # +--echo # MDEV-28578 Server crashes in Item_field::fix_outer_field after CREATE SELECT +--echo # +create table t1 (i int) ; +create table t2 (j int) ; +--error ER_BAD_FIELD_ERROR +create table t4 select * from t1 join t2 on (select t3.i); +drop table t1, t2; + --echo # End of 10.4 tests diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index e2e554f6d82..ff91a649310 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -2693,6 +2693,7 @@ create: lex->create_info.default_table_charset= NULL; lex->name= null_clex_str; lex->create_last_non_select_table= lex->last_table(); + lex->inc_select_stack_outer_barrier(); } create_body { |