summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2005-05-26 16:44:46 +0200
committerunknown <msvensson@neptunus.(none)>2005-05-26 16:44:46 +0200
commitb36a6032fbf81603f0011b273aa28b523d93573f (patch)
tree9bc84d1028f7cd38fe6616cd24db36e21697ac30
parent9b07cafe1e7a1230218c06f85b88f68b5741c9ef (diff)
downloadmariadb-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.h2
-rw-r--r--sql/mysqld.cc3
-rw-r--r--sql/sql_parse.cc4
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,