diff options
author | unknown <msvensson@neptunus.(none)> | 2005-05-26 16:44:46 +0200 |
---|---|---|
committer | unknown <msvensson@neptunus.(none)> | 2005-05-26 16:44:46 +0200 |
commit | b36a6032fbf81603f0011b273aa28b523d93573f (patch) | |
tree | 9bc84d1028f7cd38fe6616cd24db36e21697ac30 | |
parent | 9b07cafe1e7a1230218c06f85b88f68b5741c9ef (diff) | |
download | mariadb-git-b36a6032fbf81603f0011b273aa28b523d93573f.tar.gz |
BUG#9993 2 unexpected warnings when dropping a routine and --skip-grant-tables
- Dont perform automatic privilege handling for stored procedures when server is started --skip-grant-tables
- Renamed view_skip_grants to skip_grants and added test cases for this
mysql-test/t/skip_grants-master.opt:
Rename: mysql-test/t/view_skip_grants-master.opt -> mysql-test/t/skip_grants-master.opt
mysql-test/r/skip_grants.result:
Added test for create and drop procedure with --skip-grant-tables
mysql-test/t/skip_grants.test:
Added test for create and drop procedure with --skip-grant-tables
sql/mysql_priv.h:
Make opt_noacl global
sql/mysqld.cc:
Make opt_noacl global
sql/sql_parse.cc:
On ly perform automatic privilege add/revoke if server is not started with --skip-grant-tables
-rw-r--r-- | mysql-test/r/skip_grants.result (renamed from mysql-test/r/view_skip_grants.result) | 4 | ||||
-rw-r--r-- | mysql-test/t/skip_grants-master.opt (renamed from mysql-test/t/view_skip_grants-master.opt) | 0 | ||||
-rw-r--r-- | mysql-test/t/skip_grants.test (renamed from mysql-test/t/view_skip_grants.test) | 10 | ||||
-rw-r--r-- | sql/mysql_priv.h | 2 | ||||
-rw-r--r-- | sql/mysqld.cc | 3 | ||||
-rw-r--r-- | sql/sql_parse.cc | 4 |
6 files changed, 18 insertions, 5 deletions
diff --git a/mysql-test/r/view_skip_grants.result b/mysql-test/r/skip_grants.result index 48cb9f2aa25..c0c20eb25be 100644 --- a/mysql-test/r/view_skip_grants.result +++ b/mysql-test/r/skip_grants.result @@ -1,6 +1,10 @@ drop table if exists t1,v1; drop view if exists t1,v1; +drop procedure if exists f1; use test; create table t1 (field1 INT); CREATE VIEW v1 AS SELECT field1 FROM t1; drop view v1; +drop table t1; +create procedure f1() select 1; +drop procedure f1; diff --git a/mysql-test/t/view_skip_grants-master.opt b/mysql-test/t/skip_grants-master.opt index 5699a3387b8..5699a3387b8 100644 --- a/mysql-test/t/view_skip_grants-master.opt +++ b/mysql-test/t/skip_grants-master.opt diff --git a/mysql-test/t/view_skip_grants.test b/mysql-test/t/skip_grants.test index bfbaec44eb1..99223fa4756 100644 --- a/mysql-test/t/view_skip_grants.test +++ b/mysql-test/t/skip_grants.test @@ -1,6 +1,7 @@ --disable_warnings drop table if exists t1,v1; drop view if exists t1,v1; +drop procedure if exists f1; --enable_warnings use test; @@ -11,4 +12,11 @@ create table t1 (field1 INT); CREATE VIEW v1 AS SELECT field1 FROM t1; drop view v1; -drop table t1 +drop table t1; + +# +# Test that we can create and drop procedure without warnings +# see bug#9993 +# +create procedure f1() select 1; +drop procedure f1; diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 25490b04ab3..7e6a611de2f 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1095,7 +1095,7 @@ extern my_bool opt_slave_compressed_protocol, use_temp_pool; extern my_bool opt_readonly, lower_case_file_system; extern my_bool opt_enable_named_pipe, opt_sync_frm, opt_allow_suspicious_udfs; extern my_bool opt_secure_auth; -extern my_bool sp_automatic_privileges; +extern my_bool sp_automatic_privileges, opt_noacl; extern my_bool opt_old_style_user_limits, trust_routine_creators; extern uint opt_crash_binlog_innodb; extern char *shared_memory_base_name, *mysqld_unix_port; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 84a041167f1..39b6931ffba 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -310,6 +310,7 @@ my_bool opt_old_style_user_limits= 0, trust_routine_creators= 0; changed). False otherwise. */ volatile bool mqh_used = 0; +my_bool opt_noacl; my_bool sp_automatic_privileges= 1; #ifdef HAVE_INITGROUPS @@ -445,7 +446,7 @@ char *master_ssl_ca, *master_ssl_capath, *master_ssl_cipher; /* Static variables */ static bool kill_in_progress, segfaulted; -static my_bool opt_do_pstack, opt_noacl, opt_bootstrap, opt_myisam_log; +static my_bool opt_do_pstack, opt_bootstrap, opt_myisam_log; static int cleanup_done; static ulong opt_specialflag, opt_myisam_block_size; static char *opt_logname, *opt_update_logname, *opt_binlog_index_name; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 47ac8d3afc1..4751e8b6aa7 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -3982,7 +3982,7 @@ unsent_create_error: lex->sphead= 0; #ifndef NO_EMBEDDED_ACCESS_CHECKS /* only add privileges if really neccessary */ - if (sp_automatic_privileges && + if (sp_automatic_privileges && !opt_noacl && check_procedure_access(thd, DEFAULT_CREATE_PROC_ACLS, db, name, 1)) { @@ -4247,7 +4247,7 @@ unsent_create_error: if (check_procedure_access(thd, ALTER_PROC_ACL, db, name, 0)) goto error; #ifndef NO_EMBEDDED_ACCESS_CHECKS - if (sp_automatic_privileges && + if (sp_automatic_privileges && !opt_noacl && sp_revoke_privileges(thd, db, name)) { push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, |