mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fixed BUG#3339: Stored procedures in nonexistent schemas are uncallable.
Also added some related security tests and corrected related error messages. mysql-test/r/sp-error.result: New test case for BUG#3339, and updated results for other modified error messages. mysql-test/r/sp-security.result: Added tests for creating procedures in another database with and wihout access rights. mysql-test/t/sp-error.test: New test case for BUG#3339. mysql-test/t/sp-security.test: Added tests for creating procedures in another database with and wihout access rights. sql/sp.cc: Check existance (and access rights) for database when creating a stored routine. sql/sp.h: New error return value for sp_create_* functions, for non existing database. sql/sql_parse.cc: Check error return for create stored routine (non existing database), and corrected the error output for some other commands. (Use qualified name, not just name.)
This commit is contained in:
@ -33,15 +33,15 @@ ERROR 42000: FUNCTION func1 already exists
|
||||
drop procedure proc1|
|
||||
drop function func1|
|
||||
alter procedure foo|
|
||||
ERROR 42000: PROCEDURE foo does not exist
|
||||
ERROR 42000: PROCEDURE test.foo does not exist
|
||||
alter function foo|
|
||||
ERROR 42000: FUNCTION foo does not exist
|
||||
ERROR 42000: FUNCTION test.foo does not exist
|
||||
drop procedure foo|
|
||||
ERROR 42000: PROCEDURE foo does not exist
|
||||
ERROR 42000: PROCEDURE test.foo does not exist
|
||||
drop function foo|
|
||||
ERROR 42000: FUNCTION foo does not exist
|
||||
ERROR 42000: FUNCTION test.foo does not exist
|
||||
call foo()|
|
||||
ERROR 42000: PROCEDURE foo does not exist
|
||||
ERROR 42000: PROCEDURE test.foo does not exist
|
||||
drop procedure if exists foo|
|
||||
Warnings:
|
||||
Warning 1298 PROCEDURE foo does not exist
|
||||
@ -193,7 +193,7 @@ call p()|
|
||||
ERROR 24000: Cursor is not open
|
||||
drop procedure p|
|
||||
alter procedure bar3 sql security invoker|
|
||||
ERROR 42000: PROCEDURE bar3 does not exist
|
||||
ERROR 42000: PROCEDURE test.bar3 does not exist
|
||||
alter procedure bar3 name
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|
|
||||
ERROR 42000: Identifier name 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' is too long
|
||||
@ -395,4 +395,6 @@ select @x|
|
||||
0
|
||||
drop procedure bug3279|
|
||||
drop table t3|
|
||||
create procedure nodb.bug3339() begin end|
|
||||
ERROR 42000: Unknown database 'nodb'
|
||||
drop table t1|
|
||||
|
@ -3,6 +3,8 @@ grant usage on *.* to user1@localhost;
|
||||
flush privileges;
|
||||
drop database if exists db1_secret;
|
||||
create database db1_secret;
|
||||
create procedure db1_secret.dummy() begin end;
|
||||
drop procedure db1_secret.dummy;
|
||||
use db1_secret;
|
||||
create table t1 ( u varchar(64), i int );
|
||||
create procedure stamp(i int)
|
||||
@ -27,12 +29,20 @@ db1_secret.db()
|
||||
db1_secret
|
||||
select * from db1_secret.t1;
|
||||
ERROR 42000: Access denied for user: 'user1'@'localhost' to database 'db1_secret'
|
||||
create procedure db1_secret.dummy() begin end;
|
||||
ERROR 42000: Unknown database 'db1_secret'
|
||||
drop procedure db1_secret.dummy;
|
||||
ERROR 42000: PROCEDURE db1_secret.dummy does not exist
|
||||
call db1_secret.stamp(3);
|
||||
select db1_secret.db();
|
||||
db1_secret.db()
|
||||
db1_secret
|
||||
select * from db1_secret.t1;
|
||||
ERROR 42000: Access denied for user: ''@'localhost' to database 'db1_secret'
|
||||
create procedure db1_secret.dummy() begin end;
|
||||
ERROR 42000: Unknown database 'db1_secret'
|
||||
drop procedure db1_secret.dummy;
|
||||
ERROR 42000: PROCEDURE db1_secret.dummy does not exist
|
||||
select * from t1;
|
||||
u i
|
||||
root@localhost 1
|
||||
|
@ -517,7 +517,6 @@ end case|
|
||||
call bug3287(2)|
|
||||
drop procedure bug3287|
|
||||
|
||||
|
||||
#
|
||||
# BUG#3297
|
||||
#
|
||||
@ -548,6 +547,13 @@ select @x|
|
||||
drop procedure bug3279|
|
||||
drop table t3|
|
||||
|
||||
#
|
||||
# BUG#3339
|
||||
#
|
||||
--error 1049
|
||||
create procedure nodb.bug3339() begin end|
|
||||
|
||||
|
||||
drop table t1|
|
||||
|
||||
delimiter ;|
|
||||
|
@ -17,6 +17,10 @@ drop database if exists db1_secret;
|
||||
# Create our secret database
|
||||
create database db1_secret;
|
||||
|
||||
# Can create a procedure in other db
|
||||
create procedure db1_secret.dummy() begin end;
|
||||
drop procedure db1_secret.dummy;
|
||||
|
||||
use db1_secret;
|
||||
|
||||
create table t1 ( u varchar(64), i int );
|
||||
@ -39,6 +43,7 @@ select db();
|
||||
connect (con2user1,localhost,user1,,);
|
||||
connect (con3anon,localhost,anon,,);
|
||||
|
||||
|
||||
#
|
||||
# User1 can
|
||||
#
|
||||
@ -52,6 +57,13 @@ select db1_secret.db();
|
||||
--error 1044
|
||||
select * from db1_secret.t1;
|
||||
|
||||
# ...and not this
|
||||
--error 1049
|
||||
create procedure db1_secret.dummy() begin end;
|
||||
--error 1298
|
||||
drop procedure db1_secret.dummy;
|
||||
|
||||
|
||||
#
|
||||
# Anonymous can
|
||||
#
|
||||
@ -65,6 +77,13 @@ select db1_secret.db();
|
||||
--error 1044
|
||||
select * from db1_secret.t1;
|
||||
|
||||
# ...and not this
|
||||
--error 1049
|
||||
create procedure db1_secret.dummy() begin end;
|
||||
--error 1298
|
||||
drop procedure db1_secret.dummy;
|
||||
|
||||
|
||||
#
|
||||
# Check it out
|
||||
#
|
||||
|
Reference in New Issue
Block a user