Commit de4fbc21 authored by unknown's avatar unknown

Fix bug #11416 Server crash if using a view that uses function convert_tz

When parser parses function convert_tz it loads available timezone tables in
thd->lex->time_zone_tables_used. But view have another lex that main query.
Thus time_zone_tables_used of main query left uninitialized.
When Item_func_conver_tz is fixed it takes timezone tables from main query
and later when it executed it assumes that timezone tables are loaded and
failed that assertion.



sql/sql_view.cc:
  Fix bug #11416 Server crash if using a view that uses function convert_tz
mysql-test/r/view.result:
  Test case for bug#11416 Server crash if using a view that uses function convert_tz
mysql-test/t/view.test:
  Test case for bug#11416 Server crash if using a view that uses function convert_tz
parent 528c3a71
...@@ -2205,3 +2205,8 @@ select * from (select f1 as f2 from v1) v where v.f2='a'; ...@@ -2205,3 +2205,8 @@ select * from (select f1 as f2 from v1) v where v.f2='a';
f2 f2
drop view v1; drop view v1;
drop table t1; drop table t1;
create view v1 as SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
select * from v1;
CONVERT_TZ('2004-01-01 12:00:00','GMT','MET')
NULL
drop view v1;
...@@ -2086,3 +2086,10 @@ create view v1 as select * from t1; ...@@ -2086,3 +2086,10 @@ create view v1 as select * from t1;
select * from (select f1 as f2 from v1) v where v.f2='a'; select * from (select f1 as f2 from v1) v where v.f2='a';
drop view v1; drop view v1;
drop table t1; drop table t1;
#
# Bug #11416 Server crash if using a view that uses function convert_tz
#
create view v1 as SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
select * from v1;
drop view v1;
...@@ -1069,6 +1069,8 @@ mysql_make_view(File_parser *parser, TABLE_LIST *table) ...@@ -1069,6 +1069,8 @@ mysql_make_view(File_parser *parser, TABLE_LIST *table)
ok2: ok2:
if (arena) if (arena)
thd->restore_active_arena(arena, &backup); thd->restore_active_arena(arena, &backup);
if (!old_lex->time_zone_tables_used && thd->lex->time_zone_tables_used)
old_lex->time_zone_tables_used= thd->lex->time_zone_tables_used;
thd->lex= old_lex; thd->lex= old_lex;
DBUG_RETURN(0); DBUG_RETURN(0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment