初版
This commit is contained in:
230
build/lib/mysql/mysql-test/t/sp-bugs.test
Normal file
230
build/lib/mysql/mysql-test/t/sp-bugs.test
Normal file
@@ -0,0 +1,230 @@
|
||||
# Test file for stored procedure bugfixes
|
||||
|
||||
--echo #
|
||||
--echo # Bug #47412: Valgrind warnings / user can read uninitalized memory
|
||||
--echo # using SP variables
|
||||
--echo #
|
||||
|
||||
CREATE SCHEMA testdb;
|
||||
USE testdb;
|
||||
DELIMITER |;
|
||||
CREATE FUNCTION f2 () RETURNS INTEGER
|
||||
BEGIN
|
||||
DECLARE CONTINUE HANDLER FOR SQLSTATE '42000' SET @aux = 1;
|
||||
RETURN f_not_exists () ;
|
||||
END|
|
||||
CREATE PROCEDURE p3 ( arg1 VARCHAR(32) )
|
||||
BEGIN
|
||||
CALL p_not_exists ( );
|
||||
END|
|
||||
DELIMITER ;|
|
||||
--echo # should not return valgrind warnings
|
||||
--error ER_SP_DOES_NOT_EXIST
|
||||
CALL p3 ( f2 () );
|
||||
|
||||
DROP SCHEMA testdb;
|
||||
|
||||
CREATE SCHEMA testdb;
|
||||
USE testdb;
|
||||
DELIMITER |;
|
||||
CREATE FUNCTION f2 () RETURNS INTEGER
|
||||
BEGIN
|
||||
DECLARE CONTINUE HANDLER FOR SQLSTATE '42000' SET @aux = 1;
|
||||
RETURN f_not_exists () ;
|
||||
END|
|
||||
CREATE PROCEDURE p3 ( arg2 INTEGER )
|
||||
BEGIN
|
||||
CALL p_not_exists ( );
|
||||
END|
|
||||
DELIMITER ;|
|
||||
--echo # should not return valgrind warnings
|
||||
--error ER_SP_DOES_NOT_EXIST
|
||||
CALL p3 ( f2 () );
|
||||
|
||||
DROP SCHEMA testdb;
|
||||
|
||||
CREATE SCHEMA testdb;
|
||||
USE testdb;
|
||||
DELIMITER |;
|
||||
CREATE FUNCTION f2 () RETURNS INTEGER
|
||||
BEGIN
|
||||
DECLARE CONTINUE HANDLER FOR SQLSTATE '42000' SET @aux = 1;
|
||||
RETURN f_not_exists () ;
|
||||
END|
|
||||
DELIMITER ;|
|
||||
--echo # should not return valgrind warnings
|
||||
SELECT f2 ();
|
||||
|
||||
DROP SCHEMA testdb;
|
||||
|
||||
USE test;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#50423: Crash on second call of a procedure dropping a trigger
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TRIGGER IF EXISTS tr1;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (f1 INTEGER);
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET @aux = 1;
|
||||
CREATE PROCEDURE p1 () DROP TRIGGER tr1;
|
||||
|
||||
CALL p1 ();
|
||||
--error ER_TRG_DOES_NOT_EXIST
|
||||
CALL p1 ();
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP PROCEDURE p1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#50423: Crash on second call of a procedure dropping a trigger
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TRIGGER IF EXISTS tr1;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (f1 INTEGER);
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET @aux = 1;
|
||||
CREATE PROCEDURE p1 () DROP TRIGGER tr1;
|
||||
|
||||
CALL p1 ();
|
||||
--error ER_TRG_DOES_NOT_EXIST
|
||||
CALL p1 ();
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP PROCEDURE p1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#54375: Error in stored procedure leaves connection
|
||||
--echo # in different default schema
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
SET @@SQL_MODE = 'STRICT_ALL_TABLES';
|
||||
DROP DATABASE IF EXISTS db1;
|
||||
CREATE DATABASE db1;
|
||||
USE db1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (c1 int NOT NULL PRIMARY KEY);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
DELIMITER $$;
|
||||
CREATE FUNCTION f1 (
|
||||
some_value int
|
||||
)
|
||||
RETURNS smallint
|
||||
DETERMINISTIC
|
||||
BEGIN
|
||||
INSERT INTO t1 SET c1 = some_value;
|
||||
RETURN(LAST_INSERT_ID());
|
||||
END$$
|
||||
DELIMITER ;$$
|
||||
DROP DATABASE IF EXISTS db2;
|
||||
CREATE DATABASE db2;
|
||||
--enable_warnings
|
||||
USE db2;
|
||||
SELECT DATABASE();
|
||||
--error ER_DUP_ENTRY
|
||||
SELECT db1.f1(1);
|
||||
SELECT DATABASE();
|
||||
USE test;
|
||||
DROP FUNCTION db1.f1;
|
||||
DROP TABLE db1.t1;
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
USE test;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#13105873:valgrind warning:possible crash in foreign
|
||||
--echo # key handling on subsequent create table if not exists
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS testdb;
|
||||
--enable_warnings
|
||||
CREATE DATABASE testdb;
|
||||
USE testdb;
|
||||
CREATE TABLE t1 (id1 INT PRIMARY KEY);
|
||||
DELIMITER $;
|
||||
CREATE PROCEDURE `p1`()
|
||||
BEGIN
|
||||
CREATE TABLE IF NOT EXISTS t2(id INT PRIMARY KEY,
|
||||
CONSTRAINT FK FOREIGN KEY (id) REFERENCES t1( id1 ));
|
||||
END$
|
||||
DELIMITER ;$
|
||||
CALL p1();
|
||||
--echo # below stmt should not return valgrind warnings
|
||||
CALL p1();
|
||||
DROP DATABASE testdb;
|
||||
USE test;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # Bug#11763507 - 56224: FUNCTION NAME IS CASE-SENSITIVE
|
||||
--echo #
|
||||
SET @@SQL_MODE = '';
|
||||
DELIMITER $;
|
||||
CREATE FUNCTION testf_bug11763507() RETURNS INT
|
||||
BEGIN
|
||||
RETURN 0;
|
||||
END
|
||||
$
|
||||
|
||||
CREATE PROCEDURE testp_bug11763507()
|
||||
BEGIN
|
||||
SELECT "PROCEDURE testp_bug11763507";
|
||||
END
|
||||
$
|
||||
|
||||
DELIMITER ;$
|
||||
|
||||
# STORED FUNCTIONS
|
||||
SELECT testf_bug11763507();
|
||||
SELECT TESTF_bug11763507();
|
||||
|
||||
--replace_column 5 # 6 #
|
||||
SHOW FUNCTION STATUS LIKE 'testf_bug11763507';
|
||||
--replace_column 5 # 6 #
|
||||
SHOW FUNCTION STATUS WHERE NAME='testf_bug11763507';
|
||||
--replace_column 5 # 6 #
|
||||
SHOW FUNCTION STATUS LIKE 'TESTF_bug11763507';
|
||||
--replace_column 5 # 6 #
|
||||
SHOW FUNCTION STATUS WHERE NAME='TESTF_bug11763507';
|
||||
|
||||
SHOW CREATE FUNCTION testf_bug11763507;
|
||||
SHOW CREATE FUNCTION TESTF_bug11763507;
|
||||
|
||||
# STORED PROCEDURE
|
||||
CALL testp_bug11763507();
|
||||
CALL TESTP_bug11763507();
|
||||
|
||||
--replace_column 5 # 6 #
|
||||
SHOW PROCEDURE STATUS LIKE 'testp_bug11763507';
|
||||
--replace_column 5 # 6 #
|
||||
SHOW PROCEDURE STATUS WHERE NAME='testp_bug11763507';
|
||||
--replace_column 5 # 6 #
|
||||
SHOW PROCEDURE STATUS LIKE 'TESTP_bug11763507';
|
||||
--replace_column 5 # 6 #
|
||||
SHOW PROCEDURE STATUS WHERE NAME='TESTP_bug11763507';
|
||||
|
||||
SHOW CREATE PROCEDURE testp_bug11763507;
|
||||
SHOW CREATE PROCEDURE TESTP_bug11763507;
|
||||
|
||||
# INFORMATION SCHEMA
|
||||
SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name LIKE 'testf_bug11763507';
|
||||
SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name LIKE 'TESTF_bug11763507';
|
||||
|
||||
SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name='testf_bug11763507';
|
||||
SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name='TESTF_bug11763507';
|
||||
|
||||
DROP PROCEDURE testp_bug11763507;
|
||||
DROP FUNCTION testf_bug11763507;
|
||||
|
||||
--echo #END OF BUG#11763507 test.
|
||||
Reference in New Issue
Block a user