Loading mysql-test/r/view.result +10 −0 Original line number Diff line number Diff line Loading @@ -3025,6 +3025,16 @@ SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select _latin1'The\ZEnd' AS `TheEnd` DROP VIEW v1; DROP VIEW IF EXISTS v1; SELECT * FROM (SELECT 1) AS t; 1 1 CREATE VIEW v1 AS SELECT * FROM (SELECT 1) AS t; ERROR HY000: View's SELECT contains a subquery in the FROM clause # Previously the following would fail. SELECT * FROM (SELECT 1) AS t; 1 1 End of 5.0 tests. DROP DATABASE IF EXISTS `d-1`; CREATE DATABASE `d-1`; Loading mysql-test/t/view.test +20 −0 Original line number Diff line number Diff line Loading @@ -2908,6 +2908,7 @@ DROP FUNCTION f1; DROP VIEW v1; DROP TABLE t1; # # Bug #16813 (WITH CHECK OPTION doesn't work with UPDATE) # Loading Loading @@ -2974,8 +2975,27 @@ SHOW CREATE VIEW v1; DROP VIEW v1; # # BUG#25897: Some queries are no longer possible after a CREATE VIEW # fails # --disable_warnings DROP VIEW IF EXISTS v1; --enable_warnings let $query = SELECT * FROM (SELECT 1) AS t; eval $query; --error ER_VIEW_SELECT_DERIVED eval CREATE VIEW v1 AS $query; --echo # Previously the following would fail. eval $query; --echo End of 5.0 tests. # # Bug#21370 View renaming lacks tablename_to_filename encoding # Loading sql/sql_lex.cc +11 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,16 @@ void lex_free(void) } void st_parsing_options::reset() { allows_variable= TRUE; allows_select_into= TRUE; allows_select_procedure= TRUE; allows_derived= TRUE; } /* This is called before every query that is to be parsed. Because of this, it's critical to not do too much things here. Loading Loading @@ -150,6 +160,7 @@ void lex_start(THD *thd, const uchar *buf, uint length) lex->safe_to_cache_query= 1; lex->time_zone_tables_used= 0; lex->leaf_tables_insert= 0; lex->parsing_options.reset(); lex->empty_field_list_on_rset= 0; lex->select_lex.select_number= 1; lex->next_state=MY_LEX_START; Loading sql/sql_lex.h +2 −4 Original line number Diff line number Diff line Loading @@ -890,10 +890,8 @@ struct st_parsing_options bool allows_select_procedure; bool allows_derived; st_parsing_options() : allows_variable(TRUE), allows_select_into(TRUE), allows_select_procedure(TRUE), allows_derived(TRUE) {} st_parsing_options() { reset(); } void reset(); }; Loading Loading
mysql-test/r/view.result +10 −0 Original line number Diff line number Diff line Loading @@ -3025,6 +3025,16 @@ SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select _latin1'The\ZEnd' AS `TheEnd` DROP VIEW v1; DROP VIEW IF EXISTS v1; SELECT * FROM (SELECT 1) AS t; 1 1 CREATE VIEW v1 AS SELECT * FROM (SELECT 1) AS t; ERROR HY000: View's SELECT contains a subquery in the FROM clause # Previously the following would fail. SELECT * FROM (SELECT 1) AS t; 1 1 End of 5.0 tests. DROP DATABASE IF EXISTS `d-1`; CREATE DATABASE `d-1`; Loading
mysql-test/t/view.test +20 −0 Original line number Diff line number Diff line Loading @@ -2908,6 +2908,7 @@ DROP FUNCTION f1; DROP VIEW v1; DROP TABLE t1; # # Bug #16813 (WITH CHECK OPTION doesn't work with UPDATE) # Loading Loading @@ -2974,8 +2975,27 @@ SHOW CREATE VIEW v1; DROP VIEW v1; # # BUG#25897: Some queries are no longer possible after a CREATE VIEW # fails # --disable_warnings DROP VIEW IF EXISTS v1; --enable_warnings let $query = SELECT * FROM (SELECT 1) AS t; eval $query; --error ER_VIEW_SELECT_DERIVED eval CREATE VIEW v1 AS $query; --echo # Previously the following would fail. eval $query; --echo End of 5.0 tests. # # Bug#21370 View renaming lacks tablename_to_filename encoding # Loading
sql/sql_lex.cc +11 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,16 @@ void lex_free(void) } void st_parsing_options::reset() { allows_variable= TRUE; allows_select_into= TRUE; allows_select_procedure= TRUE; allows_derived= TRUE; } /* This is called before every query that is to be parsed. Because of this, it's critical to not do too much things here. Loading Loading @@ -150,6 +160,7 @@ void lex_start(THD *thd, const uchar *buf, uint length) lex->safe_to_cache_query= 1; lex->time_zone_tables_used= 0; lex->leaf_tables_insert= 0; lex->parsing_options.reset(); lex->empty_field_list_on_rset= 0; lex->select_lex.select_number= 1; lex->next_state=MY_LEX_START; Loading
sql/sql_lex.h +2 −4 Original line number Diff line number Diff line Loading @@ -890,10 +890,8 @@ struct st_parsing_options bool allows_select_procedure; bool allows_derived; st_parsing_options() : allows_variable(TRUE), allows_select_into(TRUE), allows_select_procedure(TRUE), allows_derived(TRUE) {} st_parsing_options() { reset(); } void reset(); }; Loading