summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Petrunia <psergey@askmonty.org>2021-03-16 17:06:28 +0300
committerSergei Petrunia <psergey@askmonty.org>2021-03-16 17:06:28 +0300
commitabfe6b886e304cccad31f95b5278fb836638b431 (patch)
tree0536a79b1a87157df2857d118d00d445c59406ec
parent40917878aee8cabe12a1588e9e006024f3e54a9e (diff)
downloadmariadb-git-bb-10.6-mdev17399-psergey2.tar.gz
MDEV-25145: JSON_TABLE: Assertion fixed == 1 failed .. on 2nd executionbb-10.6-mdev17399-psergey2
-rw-r--r--mysql-test/suite/json/r/json_table.result17
-rw-r--r--mysql-test/suite/json/t/json_table.test7
-rw-r--r--sql/sql_select.cc11
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
@@ -384,5 +384,12 @@ 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,