mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#12626844 : WE ARE NOT CHECKING VIEW TABLE NAMES
ENOUGH - CONCAT() HACKS. ALSO WRONG ERROR MESSAGE WHILE TRYING TO CREATE A VIEW ON A NON EXISTING DATABASE PROBLEM: The first part of the problem is concluded as not a bug, as 'concat' is not a reserved word and it is completely valid to create a view with the name 'concat'. The second issue is, while trying to create a view on a non existing database, we are not giving a proper error message. FIX: We have added a check for the database existence while trying to create a view. This check would give an error as 'unknown database' when the database does not exist. This patch is a backport of the patch for Bug#13601606 mysql-test/r/view.result: Added test case result of Bug#12626844 mysql-test/t/view.test: Added test case for Bug#12626844 sql/sql_view.cc: Added a check for database existence in mysql_create_view
This commit is contained in:
@ -4102,3 +4102,10 @@ UNLOCK TABLES;
|
|||||||
# Connection default
|
# Connection default
|
||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#12626844: WRONG ERROR MESSAGE WHILE CREATING A VIEW ON A
|
||||||
|
# NON EXISTING DATABASE
|
||||||
|
#
|
||||||
|
DROP DATABASE IF EXISTS nodb;
|
||||||
|
CREATE VIEW nodb.a AS SELECT 1;
|
||||||
|
ERROR 42000: Unknown database 'nodb'
|
||||||
|
@ -4136,6 +4136,17 @@ disconnect con2;
|
|||||||
disconnect con3;
|
disconnect con3;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#12626844: WRONG ERROR MESSAGE WHILE CREATING A VIEW ON A
|
||||||
|
--echo # NON EXISTING DATABASE
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP DATABASE IF EXISTS nodb;
|
||||||
|
--enable_warnings
|
||||||
|
--error ER_BAD_DB_ERROR
|
||||||
|
CREATE VIEW nodb.a AS SELECT 1;
|
||||||
|
|
||||||
# Check that all connections opened by test cases in this file are really
|
# Check that all connections opened by test cases in this file are really
|
||||||
# gone so execution of other tests won't be affected by their presence.
|
# gone so execution of other tests won't be affected by their presence.
|
||||||
--source include/wait_until_count_sessions.inc
|
--source include/wait_until_count_sessions.inc
|
||||||
|
@ -444,6 +444,13 @@ bool mysql_create_view(THD *thd, TABLE_LIST *views,
|
|||||||
|
|
||||||
view= lex->unlink_first_table(&link_to_local);
|
view= lex->unlink_first_table(&link_to_local);
|
||||||
|
|
||||||
|
if (check_db_dir_existence(view->db))
|
||||||
|
{
|
||||||
|
my_error(ER_BAD_DB_ERROR, MYF(0), view->db);
|
||||||
|
res= TRUE;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
if (mode == VIEW_ALTER && fill_defined_view_parts(thd, view))
|
if (mode == VIEW_ALTER && fill_defined_view_parts(thd, view))
|
||||||
{
|
{
|
||||||
res= TRUE;
|
res= TRUE;
|
||||||
|
Reference in New Issue
Block a user