diff options
author | gkodinov@mysql.com <> | 2006-05-26 11:51:11 +0300 |
---|---|---|
committer | gkodinov@mysql.com <> | 2006-05-26 11:51:11 +0300 |
commit | f0f9c740ed629882fdb07c9d86076b2d4e29d645 (patch) | |
tree | 2d7b7b5883cd12850e59765a033e5443724481b2 | |
parent | 0336a34c7fc39500cb171d926e7fa64e4b4508f5 (diff) | |
parent | 59837f7a5bc39ba52289f60f74343a5b6a418f15 (diff) | |
download | mariadb-git-f0f9c740ed629882fdb07c9d86076b2d4e29d645.tar.gz |
Merge mysql.com:/home/kgeorge/mysql/5.0/clean
into mysql.com:/home/kgeorge/mysql/5.0/B14875
-rw-r--r-- | mysql-test/r/view_grant.result | 15 | ||||
-rw-r--r-- | mysql-test/t/view_grant.test | 14 | ||||
-rw-r--r-- | sql/sql_acl.cc | 2 | ||||
-rw-r--r-- | sql/table.cc | 14 |
4 files changed, 43 insertions, 2 deletions
diff --git a/mysql-test/r/view_grant.result b/mysql-test/r/view_grant.result index 3feffb4a510..29b3e710573 100644 --- a/mysql-test/r/view_grant.result +++ b/mysql-test/r/view_grant.result @@ -533,3 +533,18 @@ View Create View v2 CREATE ALGORITHM=UNDEFINED DEFINER=`some_user`@`localhost` SQL SECURITY INVOKER VIEW `v2` AS select 1 AS `1` drop view v1; drop view v2; +CREATE TABLE t1 (a INT PRIMARY KEY); +INSERT INTO t1 VALUES (1), (2), (3); +CREATE DEFINER = 'no-such-user'@localhost VIEW v AS SELECT a from t1; +Warnings: +Note 1449 There is no 'no-such-user'@'localhost' registered +SHOW CREATE VIEW v; +View Create View +v CREATE ALGORITHM=UNDEFINED DEFINER=`no-such-user`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select `t1`.`a` AS `a` from `t1` +Warnings: +Note 1449 There is no 'no-such-user'@'localhost' registered +SELECT * FROM v; +ERROR HY000: There is no 'no-such-user'@'localhost' registered +DROP VIEW v; +DROP TABLE t1; +USE test; diff --git a/mysql-test/t/view_grant.test b/mysql-test/t/view_grant.test index e80e1770ba2..e7148418ac5 100644 --- a/mysql-test/t/view_grant.test +++ b/mysql-test/t/view_grant.test @@ -712,3 +712,17 @@ show create view v1; show create view v2; drop view v1; drop view v2; + +# +# BUG#14875: Bad view DEFINER makes SHOW CREATE VIEW fail +# +CREATE TABLE t1 (a INT PRIMARY KEY); +INSERT INTO t1 VALUES (1), (2), (3); +CREATE DEFINER = 'no-such-user'@localhost VIEW v AS SELECT a from t1; +--warning 1448 +SHOW CREATE VIEW v; +--error 1449 +SELECT * FROM v; +DROP VIEW v; +DROP TABLE t1; +USE test; diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 02b2f88676f..197c703ece3 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -959,6 +959,8 @@ bool acl_getroot_no_password(Security_context *sctx, char *user, char *host, sctx->master_access= 0; sctx->db_access= 0; + sctx->priv_user= (char *) ""; + *sctx->priv_host= 0; /* Find acl entry in user database. diff --git a/sql/table.cc b/sql/table.cc index 8e23bea2540..4390c67c77d 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -2428,8 +2428,18 @@ bool st_table_list::prepare_view_securety_context(THD *thd) definer.host.str, thd->db)) { - my_error(ER_NO_SUCH_USER, MYF(0), definer.user.str, definer.host.str); - DBUG_RETURN(TRUE); + if (thd->lex->sql_command == SQLCOM_SHOW_CREATE) + { + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, + ER_NO_SUCH_USER, + ER(ER_NO_SUCH_USER), + definer.user.str, definer.host.str); + } + else + { + my_error(ER_NO_SUCH_USER, MYF(0), definer.user.str, definer.host.str); + DBUG_RETURN(TRUE); + } } } DBUG_RETURN(FALSE); |