revision-id: abfe6b886e304cccad31f95b5278fb836638b431 (mariadb-10.5.2-480-gabfe6b886e3) parent(s): 40917878aee8cabe12a1588e9e006024f3e54a9e author: Sergei Petrunia committer: Sergei Petrunia timestamp: 2021-03-16 17:06:28 +0300 message: MDEV-25145: JSON_TABLE: Assertion fixed == 1 failed .. on 2nd execution --- mysql-test/suite/json/r/json_table.result | 17 +++++++++++++++++ mysql-test/suite/json/t/json_table.test | 7 +++++++ sql/sql_select.cc | 11 +++++++---- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/mysql-test/suite/json/r/json_table.result b/mysql-test/suite/json/r/json_table.result index ffe88a7721f..43cf5938972 100644 --- a/mysql-test/suite/json/r/json_table.result +++ b/mysql-test/suite/json/r/json_table.result @@ -486,5 +486,22 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE jt1 ALL NULL NULL NULL NULL 40 Table function: json_table drop table t20,t21,t31,t32; # +# MDEV-25142: JSON_TABLE: CREATE VIEW involving EXISTS PATH ends up with invalid frm +# +drop view if exists v1; +CREATE VIEW v1 AS SELECT * FROM JSON_TABLE('[]', '$' COLUMNS (f INT EXISTS PATH '$')) a ; +show create view v1; +View Create View character_set_client collation_connection +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `a`.`f` AS `f` from JSON_TABLE('[]', '$' COLUMNS (`f` int(11) EXISTS PATH '$')) `a` latin1 latin1_swedish_ci +drop view v1; +# +# MDEV-25145: JSON_TABLE: Assertion `fixed == 1' failed in Item_load_file::val_str on 2nd execution of PS +# +PREPARE stmt FROM "SELECT * FROM (SELECT * FROM JSON_TABLE(LOAD_FILE('x'), '$' COLUMNS (a FOR ORDINALITY)) AS t) AS sq"; +EXECUTE stmt; +a +EXECUTE stmt; +a +# # End of 10.6 tests # diff --git a/mysql-test/suite/json/t/json_table.test b/mysql-test/suite/json/t/json_table.test index 435ac02928a..7434a8ca8f0 100644 --- a/mysql-test/suite/json/t/json_table.test +++ b/mysql-test/suite/json/t/json_table.test @@ -383,6 +383,13 @@ CREATE VIEW v1 AS SELECT * FROM JSON_TABLE('[]', '$' COLUMNS (f INT EXISTS PATH show create view v1; drop view v1; +--echo # +--echo # MDEV-25145: JSON_TABLE: Assertion `fixed == 1' failed in Item_load_file::val_str on 2nd execution of PS +--echo # +PREPARE stmt FROM "SELECT * FROM (SELECT * FROM JSON_TABLE(LOAD_FILE('x'), '$' COLUMNS (a FOR ORDINALITY)) AS t) AS sq"; +EXECUTE stmt; +EXECUTE stmt; + --echo # --echo # End of 10.6 tests --echo # diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 46ef64e4eba..bea4e87df3e 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -1241,11 +1241,14 @@ JOIN::prepare(TABLE_LIST *tables_init, COND *conds_init, uint og_num, thd->lex->current_select->context_analysis_place; thd->lex->current_select->context_analysis_place= SELECT_LIST; - for (TABLE_LIST *tbl= tables_list; tbl; tbl= tbl->next_local) { - if (tbl->table_function && - tbl->table_function->setup(thd, tbl, select_lex_arg)) - DBUG_RETURN(-1); + List_iterator_fast<TABLE_LIST> it(select_lex->leaf_tables); + while ((tbl= it++)) + { + if (tbl->table_function && + tbl->table_function->setup(thd, tbl, select_lex_arg)) + DBUG_RETURN(-1); + } } if (setup_fields(thd, ref_ptrs, fields_list, MARK_COLUMNS_READ,