Skip to content

Commit

Permalink
MDEV-25145: JSON_TABLE: Assertion fixed == 1 failed .. on 2nd execution
Browse files Browse the repository at this point in the history
  • Loading branch information
spetrunia authored and Alexey Botchkov committed Apr 21, 2021
1 parent 98556ef commit 99fc076
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 4 deletions.
17 changes: 17 additions & 0 deletions mysql-test/suite/json/r/json_table.result
Original file line number Diff line number Diff line change
Expand Up @@ -491,5 +491,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
#
7 changes: 7 additions & 0 deletions mysql-test/suite/json/t/json_table.test
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,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 #
11 changes: 7 additions & 4 deletions sql/sql_select.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1243,11 +1243,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,
Expand Down

0 comments on commit 99fc076

Please sign in to comment.