Skip to content

Commit

Permalink
Another attempt to fix bug mdev-10736.
Browse files Browse the repository at this point in the history
  • Loading branch information
igorbabaev committed Sep 9, 2016
1 parent effb65b commit 5c7d829
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 15 deletions.
9 changes: 9 additions & 0 deletions mysql-test/r/cte_recursive.result
Original file line number Diff line number Diff line change
Expand Up @@ -1623,3 +1623,12 @@ n
3
4
5
#
# MDEV-10736: recursive definition with anchor over a table with blob
#
CREATE TABLE t1 (f VARCHAR(1024));
WITH RECURSIVE cte(f) AS
(SELECT t1.f FROM t1 UNION ALL SELECT cte.f FROM cte)
SELECT * FROM cte as t;
f
DROP TABLE t1;
19 changes: 9 additions & 10 deletions mysql-test/t/cte_recursive.test
Original file line number Diff line number Diff line change
Expand Up @@ -1185,13 +1185,12 @@ WITH RECURSIVE cte(n) AS
( SELECT n+1 FROM cte WHERE n < 5 UNION SELECT 1 UNION SELECT 1 )
SELECT * FROM cte;

# --echo #
# --echo # MDEV-10736: recursive definition with anchor over a table with blob
# --echo #
#
# CREATE TABLE t1 (f VARCHAR(1024));
# set statement max_recursive_iterations=1 for
# WITH RECURSIVE cte(f) AS
# (SELECT t1.f FROM t1 UNION ALL SELECT cte.f FROM cte)
# SELECT * FROM cte;
# DROP TABLE t1;
--echo #
--echo # MDEV-10736: recursive definition with anchor over a table with blob
--echo #

CREATE TABLE t1 (f VARCHAR(1024));
WITH RECURSIVE cte(f) AS
(SELECT t1.f FROM t1 UNION ALL SELECT cte.f FROM cte)
SELECT * FROM cte as t;
DROP TABLE t1;
6 changes: 1 addition & 5 deletions sql/sql_derived.cc
Original file line number Diff line number Diff line change
Expand Up @@ -480,10 +480,6 @@ bool mysql_derived_merge(THD *thd, LEX *lex, TABLE_LIST *derived)
derived->set_materialized_derived();
if (!derived->table || !derived->table->is_created())
res= mysql_derived_create(thd, lex, derived);
#if 0
if (!res)
res= mysql_derived_fill(thd, lex, derived);
#endif
goto exit_merge;
}

Expand Down Expand Up @@ -920,7 +916,7 @@ bool mysql_derived_create(THD *thd, LEX *lex, TABLE_LIST *derived)

if (table->is_created())
DBUG_RETURN(FALSE);
select_union *result= (select_union*)unit->result;
select_union *result= derived->derived_result;
if (table->s->db_type() == TMP_ENGINE_HTON)
{
result->tmp_table_param.keyinfo= table->s->key_info;
Expand Down

0 comments on commit 5c7d829

Please sign in to comment.