1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

EV-16992 Assertion `table_ref->table || table_ref->view' failed in

Field_iterator_table_ref::set_field_iterator

Several functions that processed different prepare statements missed
the DT_INIT flag in last parameter of the open_normal_and_derived_tables()
calls. It made context analysis of derived tables dependent on the order in
which the derived tables were processed by mysql_handle_derived(). This
order was induced by the order of SELECTs in all_select_list.
In 10.4 the order of SELECTs in all_select_list became different and lack
of the DT_INIT flags in some open_normal_and_derived_tables() call became
critical as some derived tables were not identified as such.
This commit is contained in:
Igor Babaev
2018-08-30 11:30:28 -07:00
parent 7aa80ba66b
commit d8b8079e42
3 changed files with 96 additions and 6 deletions

View File

@@ -4784,6 +4784,52 @@ DROP PROCEDURE p2;
DROP PROCEDURE p1;
DROP ROLE testrole;
--echo #
--echo # MDEV-16992: prepare of CREATE TABLE, CREATE VIEW, DO, SET, CALL
--echo # statements with CTE containing materialized derived
--echo # (the bug is reproducible on 10.4)
--echo #
--enable_result_log
prepare stmt from
"CREATE TABLE t1 AS
WITH cte(a) AS (SELECT * FROM (SELECT 1) AS t) SELECT * FROM cte;";
execute stmt;
select * from t1;
prepare stmt from
"CREATE VIEW v1 AS
WITH cte(a) AS (SELECT * FROM (SELECT 1) AS t) SELECT * FROM cte;";
execute stmt;
select * from v1;
prepare stmt from
"DO (SELECT 1
FROM (WITH cte AS (SELECT * FROM (SELECT 1) AS t)
SELECT * FROM cte) AS tt);";
execute stmt;
prepare stmt from
"SET @a = (SELECT 1
FROM (WITH cte AS (SELECT * FROM (SELECT 1) AS t)
SELECT * FROM cte) AS t);";
execute stmt;
create procedure p (i int) insert into t1 values(i);
prepare stmt from
"CALL p
((SELECT 1
FROM (WITH cte AS (SELECT * FROM (SELECT 1) AS t)
SELECT * FROM cte) AS tt));";
execute stmt;
select * from t1;
drop procedure p;
drop view v1;
drop table t1;
--echo #
--echo # End of 10.2 tests
--echo #