config root man

Current Path : /home/usr.opt/mysql57/mysql-test/t/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //home/usr.opt/mysql57/mysql-test/t/sp-bugs.test

# 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;

--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#13489996 valgrind:conditional jump or move depends on
--echo # uninitialised values-field_blob
--echo #

CREATE FUNCTION sf() RETURNS BLOB RETURN "";
SELECT sf();
DROP FUNCTION sf;

--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.

--echo #
--echo # Bug#19418619 : SELECT QUERY WITH INVALID TIME WORKS FINE BUT SP FAILS UNDER STRICT MODE
--echo #

SET sql_mode='NO_ENGINE_SUBSTITUTION';
# Create SF without STRICT mode
delimiter |;
CREATE FUNCTION f1(arg TINYINT UNSIGNED) RETURNS TINYINT
BEGIN
  RETURN abs('1abcd');
END|
delimiter ;|
SELECT f1(-25);
SELECT f1(25);
SET sql_mode=default;
# Passing invalid argument from STRICT mode gives error.
--error ER_WARN_DATA_OUT_OF_RANGE
SELECT f1(-25);
SELECT f1(10);
DROP FUNCTION f1;

SET sql_mode='NO_ENGINE_SUBSTITUTION';
# Create SP without STRICT mode
delimiter |;
CREATE PROCEDURE f1(IN arg TINYINT UNSIGNED)
BEGIN
  DECLARE arg1 TINYINT;
  select abs('1abcd') into arg;
END|
delimiter ;|
CALL f1(-25);
CALL f1(25);
SET sql_mode=default;
# Passing invalid argument from STRICT mode gives error.
--error ER_WARN_DATA_OUT_OF_RANGE
CALL f1(-25);
CALL f1(10);
DROP PROCEDURE f1;

# Select does not give error in STRICT mode
SELECT SUBTIME('2006-07-16' , '05:05:02.040778');
SELECT abs('1bcd');

# Create Stored Procedure in STRICT mode.
delimiter |;
CREATE PROCEDURE sp1()
BEGIN
SELECT SUBTIME('2006-07-16' , '05:05:02.040778');
END|
CREATE PROCEDURE sp2()
BEGIN
DECLARE v1 TINYINT DEFAULT 450000;
END|
delimiter ;|
CALL sp1();
--error ER_WARN_DATA_OUT_OF_RANGE
CALL sp2();
DROP PROCEDURE sp1;
DROP PROCEDURE sp2;

# Create Stored Function in STRICT mode
CREATE FUNCTION fn1(arg TINYINT UNSIGNED) RETURNS float deterministic RETURN abs('1abcd');
delimiter |;
CREATE FUNCTION fn2() RETURNS tinyint
BEGIN
DECLARE v1 TINYINT DEFAULT 450000;
RETURN v1;
END|
delimiter ;|
# On passing valid argument function execution fails as it was created in STRICT mode.
--error ER_TRUNCATED_WRONG_VALUE
SELECT fn1(25);
# Passing invalid argument from STRICT mode gives error for parameter evaluation.
--error ER_WARN_DATA_OUT_OF_RANGE
SELECT fn1(-25);

--error ER_WARN_DATA_OUT_OF_RANGE
SELECT fn2();
SET sql_mode='NO_ENGINE_SUBSTITUTION';
--error ER_TRUNCATED_WRONG_VALUE
SELECT fn1(-25);
DROP FUNCTION fn1;
DROP FUNCTION fn2;

#Create a function without STRICT mode
CREATE FUNCTION fn1() RETURNS float deterministic RETURN floor('1.1a');
# Create a function and Trigger in STRICT mode
SET sql_mode=default;
CREATE TABLE t1(a INT);
CREATE FUNCTION fn2() RETURNS float deterministic RETURN floor('1.1a');
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET @a=fn2();
#Error expected as function call returns error
--error ER_TRUNCATED_WRONG_VALUE
INSERT INTO t1 VALUES(1);
DROP TRIGGER tr1;
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW SET @a=fn1();
#No error as function call will not give error
INSERT INTO t1 VALUES(1);
DROP FUNCTION fn1;
DROP FUNCTION fn2;
DROP TRIGGER tr1;
DROP TABLE t1;

# Test for 'division by zero'
SET sql_mode=traditional;
# select passes
SELECT 1/0;
SET sql_mode='';
delimiter |;
CREATE PROCEDURE proc_c()
BEGIN
  DECLARE div_zero INTEGER;
  SET SQL_MODE='TRADITIONAL';
  SELECT 1/0;
END|
delimiter ;|
# Procedure call passes.
CALL proc_c();
DROP PROCEDURE proc_c;
#check for SET command inside SF in TRADITIONAL mode
SET sql_mode=traditional;
delimiter |;
CREATE FUNCTION fn1() RETURNS TINYINT
BEGIN
SET  @x=floor('1a');
RETURN 1;
END|
delimiter ;|
SELECT fn1();
DROP FUNCTION fn1;
SET sql_mode= default;

Man Man