public some pl cases and fix a rpm building bug
This commit is contained in:
parent
34271aace8
commit
3635038539
@ -224,7 +224,6 @@ install(FILES
|
||||
deps/oblib/src/lib/lock/ob_spin_rwlock.h
|
||||
deps/oblib/src/lib/lock/ob_thread_cond.h
|
||||
deps/oblib/src/lib/lock/ob_rwlock.h
|
||||
deps/oblib/src/lib/lock/threadmutex.h
|
||||
deps/oblib/src/lib/metrics/ob_counter.h
|
||||
deps/oblib/src/lib/net/ob_addr.h
|
||||
deps/oblib/src/lib/net/ob_net_util.h
|
||||
|
131
tools/deploy/mysql_test/include/sp-vars.inc
Normal file
131
tools/deploy/mysql_test/include/sp-vars.inc
Normal file
@ -0,0 +1,131 @@
|
||||
delimiter |;
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE PROCEDURE sp_vars_check_dflt()
|
||||
BEGIN
|
||||
DECLARE v1 TINYINT DEFAULT 1e200;
|
||||
DECLARE v1u TINYINT UNSIGNED DEFAULT 1e200;
|
||||
DECLARE v2 TINYINT DEFAULT -1e200;
|
||||
DECLARE v2u TINYINT UNSIGNED DEFAULT -1e200;
|
||||
DECLARE v3 TINYINT DEFAULT 300;
|
||||
DECLARE v3u TINYINT UNSIGNED DEFAULT 300;
|
||||
DECLARE v4 TINYINT DEFAULT -300;
|
||||
DECLARE v4u TINYINT UNSIGNED DEFAULT -300;
|
||||
|
||||
DECLARE v5 TINYINT DEFAULT 10 * 10 * 10;
|
||||
DECLARE v5u TINYINT UNSIGNED DEFAULT 10 * 10 * 10;
|
||||
DECLARE v6 TINYINT DEFAULT -10 * 10 * 10;
|
||||
DECLARE v6u TINYINT UNSIGNED DEFAULT -10 * 10 * 10;
|
||||
|
||||
DECLARE v7 TINYINT DEFAULT '10';
|
||||
DECLARE v8 TINYINT DEFAULT '10 ';
|
||||
DECLARE v9 TINYINT DEFAULT ' 10 ';
|
||||
DECLARE v10 TINYINT DEFAULT 'String 10 ';
|
||||
DECLARE v11 TINYINT DEFAULT 'String10';
|
||||
DECLARE v12 TINYINT DEFAULT '10 String';
|
||||
DECLARE v13 TINYINT DEFAULT '10String';
|
||||
DECLARE v14 TINYINT DEFAULT concat('10', ' ');
|
||||
DECLARE v15 TINYINT DEFAULT concat(' ', '10');
|
||||
DECLARE v16 TINYINT DEFAULT concat('Hello, ', 'world');
|
||||
|
||||
DECLARE v17 DECIMAL(64, 2) DEFAULT 12;
|
||||
DECLARE v18 DECIMAL(64, 2) DEFAULT 12.123;
|
||||
DECLARE v19 DECIMAL(64, 2) DEFAULT 11 + 1;
|
||||
DECLARE v20 DECIMAL(64, 2) DEFAULT 12 + 0.123;
|
||||
|
||||
SELECT v1, v1u, v2, v2u, v3, v3u, v4, v4u;
|
||||
SELECT v5, v5u, v6, v6u;
|
||||
SELECT v7, v8, v9, v10, v11, v12, v13, v14, v15, v16;
|
||||
SELECT v17, v18, v19, v20;
|
||||
END|
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE PROCEDURE sp_vars_check_assignment()
|
||||
BEGIN
|
||||
DECLARE i1, i2, i3, i4 TINYINT;
|
||||
DECLARE u1, u2, u3, u4 TINYINT UNSIGNED;
|
||||
DECLARE d1, d2, d3 DECIMAL(64, 2);
|
||||
|
||||
SET i1 = 1e200;
|
||||
SET i2 = -1e200;
|
||||
SET i3 = 300;
|
||||
SET i4 = -300;
|
||||
|
||||
SELECT i1, i2, i3, i4;
|
||||
|
||||
SET i1 = 10 * 10 * 10;
|
||||
SET i2 = -10 * 10 * 10;
|
||||
SET i3 = sign(10 * 10) * 10 * 20;
|
||||
SET i4 = sign(-10 * 10) * -10 * 20;
|
||||
|
||||
SELECT i1, i2, i3, i4;
|
||||
|
||||
SET u1 = 1e200;
|
||||
SET u2 = -1e200;
|
||||
SET u3 = 300;
|
||||
SET u4 = -300;
|
||||
|
||||
SELECT u1, u2, u3, u4;
|
||||
|
||||
SET u1 = 10 * 10 * 10;
|
||||
SET u2 = -10 * 10 * 10;
|
||||
SET u3 = sign(10 * 10) * 10 * 20;
|
||||
SET u4 = sign(-10 * 10) * -10 * 20;
|
||||
|
||||
SELECT u1, u2, u3, u4;
|
||||
|
||||
SET d1 = 1234;
|
||||
SET d2 = 1234.12;
|
||||
SET d3 = 1234.1234;
|
||||
|
||||
SELECT d1, d2, d3;
|
||||
|
||||
SET d1 = 12 * 100 + 34;
|
||||
SET d2 = 12 * 100 + 34 + 0.12;
|
||||
SET d3 = 12 * 100 + 34 + 0.1234;
|
||||
|
||||
SELECT d1, d2, d3;
|
||||
END|
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE FUNCTION sp_vars_check_ret1() RETURNS TINYINT
|
||||
BEGIN
|
||||
RETURN 1e200;
|
||||
END|
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE FUNCTION sp_vars_check_ret2() RETURNS TINYINT
|
||||
BEGIN
|
||||
RETURN 10 * 10 * 10;
|
||||
END|
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE FUNCTION sp_vars_check_ret3() RETURNS TINYINT
|
||||
BEGIN
|
||||
RETURN 'Hello, world';
|
||||
END|
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE FUNCTION sp_vars_check_ret4() RETURNS DECIMAL(64, 2)
|
||||
BEGIN
|
||||
RETURN 12 * 10 + 34 + 0.1234;
|
||||
END|
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE FUNCTION sp_vars_div_zero() RETURNS INTEGER
|
||||
BEGIN
|
||||
DECLARE div_zero INTEGER;
|
||||
SELECT 1/0 INTO div_zero;
|
||||
RETURN div_zero;
|
||||
END|
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
delimiter ;|
|
21
tools/deploy/mysql_test/include/wait_until_disconnected.inc
Normal file
21
tools/deploy/mysql_test/include/wait_until_disconnected.inc
Normal file
@ -0,0 +1,21 @@
|
||||
#
|
||||
# Include this script to wait until the connection to the
|
||||
# server has been dropped
|
||||
--disable_result_log
|
||||
--disable_query_log
|
||||
let $counter= 500;
|
||||
let $mysql_errno= 0;
|
||||
while (!$mysql_errno)
|
||||
{
|
||||
--error 0,1040,1053,2002,2003,2006,2013
|
||||
show status;
|
||||
|
||||
dec $counter;
|
||||
if (!$counter)
|
||||
{
|
||||
--die Server failed to dissapear
|
||||
}
|
||||
--sleep 0.1
|
||||
}
|
||||
--enable_query_log
|
||||
--enable_result_log
|
2385
tools/deploy/mysql_test/test_suite/pl/r/mysql/pl_basic_mysql.result
Normal file
2385
tools/deploy/mysql_test/test_suite/pl/r/mysql/pl_basic_mysql.result
Normal file
File diff suppressed because it is too large
Load Diff
1459
tools/deploy/mysql_test/test_suite/pl/r/mysql/pl_dbt2_mysql.result
Normal file
1459
tools/deploy/mysql_test/test_suite/pl/r/mysql/pl_dbt2_mysql.result
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,358 @@
|
||||
drop table if exists a,t;
|
||||
drop procedure if exists p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR sqlexception insert into a values(0);
|
||||
DECLARE EXIT HANDLER FOR SQLSTATE '23000' insert into a values(1);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
1
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE CONTINUE HANDLER FOR sqlexception insert into a values(0);
|
||||
begin
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(4);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
0
|
||||
2
|
||||
3
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE CONTINUE HANDLER FOR sqlwarning insert into a values(0);
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
0
|
||||
2
|
||||
3
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
2
|
||||
3
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
2
|
||||
3
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
2
|
||||
3
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR sqlwarning insert into a values(0);
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
0
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR sqlwarning insert into a values(5);
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end;
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
5
|
||||
2
|
||||
3
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR sqlexception insert into a values(5);
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end;
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
2
|
||||
3
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE exit HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
2
|
||||
3
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE exit HANDLER FOR aaa insert into a values(4);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
call p(0);
|
||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||
select * from a;
|
||||
a1
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR sqlexception insert into a values(0);
|
||||
begin
|
||||
DECLARE exit HANDLER FOR aaa insert into a values(4);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end;
|
||||
insert into a values(5);
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
0
|
||||
5
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE continue HANDLER FOR sqlexception insert into a values(-1);
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE continue HANDLER FOR sqlexception
|
||||
begin
|
||||
insert into a values(0);
|
||||
insert into t values(1);
|
||||
insert into a values(6);
|
||||
end;
|
||||
begin
|
||||
DECLARE exit HANDLER FOR aaa insert into a values(4);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end;
|
||||
insert into a values(5);
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
0
|
||||
-1
|
||||
6
|
||||
2
|
||||
3
|
||||
5
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE EXIT HANDLER FOR sqlexception insert into a values(0);
|
||||
DECLARE EXIT HANDLER FOR SQLSTATE '23000' insert into a values(1);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
1
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE EXIT HANDLER FOR SQLSTATE '23000' insert into a values(1);
|
||||
DECLARE EXIT HANDLER FOR sqlexception insert into a values(0);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end//
|
||||
call p(0);
|
||||
select * from a;
|
||||
a1
|
||||
1
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
create table t(col int primary key);
|
||||
insert into t values(1);
|
||||
create procedure p()
|
||||
begin
|
||||
declare x condition for sqlstate '23000';
|
||||
declare exit handler for x
|
||||
begin
|
||||
rollback;
|
||||
resignal;
|
||||
end;
|
||||
insert into t values(1);
|
||||
end;
|
||||
//
|
||||
call p();
|
||||
//
|
||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||
drop procedure p;
|
||||
drop table t;
|
@ -0,0 +1,253 @@
|
||||
result_format: 4
|
||||
#
|
||||
# Bug #47412: Valgrind warnings / user can read uninitalized memory
|
||||
# using SP variables
|
||||
#
|
||||
DROP SCHEMA IF EXISTS testdb;
|
||||
CREATE SCHEMA testdb;
|
||||
USE testdb;
|
||||
|
||||
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|
|
||||
# should not return valgrind warnings
|
||||
### TODO : --error 1305
|
||||
CALL p3(f2());
|
||||
ERROR 2F005: FUNCTION ended without RETURN
|
||||
|
||||
DROP SCHEMA testdb;
|
||||
|
||||
CREATE SCHEMA testdb;
|
||||
USE testdb;
|
||||
|
||||
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|
|
||||
# should not return valgrind warnings
|
||||
### TODO : --error 1305
|
||||
CALL p3(f2());
|
||||
ERROR 2F005: FUNCTION ended without RETURN
|
||||
|
||||
DROP SCHEMA testdb;
|
||||
|
||||
CREATE SCHEMA testdb;
|
||||
USE testdb;
|
||||
|
||||
CREATE FUNCTION f2 () RETURNS INTEGER
|
||||
BEGIN
|
||||
DECLARE CONTINUE HANDLER FOR SQLSTATE '42000' SET @aux = 1;
|
||||
RETURN f_not_exists () ;
|
||||
END|
|
||||
# should not return valgrind warnings
|
||||
### TODO : --error 1305
|
||||
SELECT f2();
|
||||
ERROR 2F005: FUNCTION ended without RETURN
|
||||
|
||||
DROP SCHEMA testdb;
|
||||
|
||||
USE test;
|
||||
|
||||
#
|
||||
# Bug#50423: Crash on second call of a procedure dropping a trigger
|
||||
#
|
||||
## coeanbase not support trigger yet !
|
||||
##
|
||||
## 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;
|
||||
#
|
||||
# Bug#54375: Error in stored procedure leaves connection
|
||||
# in different default schema
|
||||
#
|
||||
SET @SQL_MODE_SAVE = @@SQL_MODE;
|
||||
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);
|
||||
CREATE FUNCTION f1 (
|
||||
some_value int
|
||||
)
|
||||
RETURNS smallint
|
||||
DETERMINISTIC
|
||||
BEGIN
|
||||
INSERT INTO t1 SET c1 = some_value;
|
||||
RETURN(LAST_INSERT_ID());
|
||||
END$$
|
||||
DROP DATABASE IF EXISTS db2;
|
||||
CREATE DATABASE db2;
|
||||
USE db2;
|
||||
SELECT DATABASE();
|
||||
+------------+
|
||||
| DATABASE() |
|
||||
+------------+
|
||||
| db2 |
|
||||
+------------+
|
||||
SELECT db1.f1(1);
|
||||
Got one of the listed errors
|
||||
SELECT DATABASE();
|
||||
+------------+
|
||||
| DATABASE() |
|
||||
+------------+
|
||||
| db2 |
|
||||
+------------+
|
||||
USE test;
|
||||
DROP FUNCTION db1.f1;
|
||||
DROP TABLE db1.t1;
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
|
||||
#
|
||||
# Bug#13105873:valgrind warning:possible crash in foreign
|
||||
# key handling on subsequent create table if not exists
|
||||
#
|
||||
## oceanbase not support foreign key yet!
|
||||
## --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;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# BUG#13489996 valgrind:conditional jump or move depends on
|
||||
# uninitialised values-field_blob
|
||||
#
|
||||
## oceanbase not support BLOB yet!
|
||||
## CREATE FUNCTION sf() RETURNS BLOB RETURN "";
|
||||
## SELECT sf();
|
||||
## DROP FUNCTION sf;
|
||||
#
|
||||
# Bug#11763507 - 56224: FUNCTION NAME IS CASE-SENSITIVE
|
||||
#
|
||||
SET @@SQL_MODE = '';
|
||||
CREATE FUNCTION testf_bug11763507() RETURNS INT
|
||||
BEGIN
|
||||
RETURN 0;
|
||||
END
|
||||
$
|
||||
|
||||
CREATE PROCEDURE testp_bug11763507()
|
||||
BEGIN
|
||||
SELECT "PROCEDURE testp_bug11763507";
|
||||
END
|
||||
$
|
||||
|
||||
|
||||
SELECT testf_bug11763507();
|
||||
+---------------------+
|
||||
| testf_bug11763507() |
|
||||
+---------------------+
|
||||
| 0 |
|
||||
+---------------------+
|
||||
SELECT TESTF_bug11763507();
|
||||
+---------------------+
|
||||
| TESTF_bug11763507() |
|
||||
+---------------------+
|
||||
| 0 |
|
||||
+---------------------+
|
||||
|
||||
CALL testp_bug11763507();
|
||||
+-----------------------------+
|
||||
| PROCEDURE testp_bug11763507 |
|
||||
+-----------------------------+
|
||||
| PROCEDURE testp_bug11763507 |
|
||||
+-----------------------------+
|
||||
CALL TESTP_bug11763507();
|
||||
+-----------------------------+
|
||||
| PROCEDURE testp_bug11763507 |
|
||||
+-----------------------------+
|
||||
| PROCEDURE testp_bug11763507 |
|
||||
+-----------------------------+
|
||||
|
||||
SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name LIKE 'testf_bug11763507';
|
||||
+-------------------+
|
||||
| specific_name |
|
||||
+-------------------+
|
||||
| testf_bug11763507 |
|
||||
+-------------------+
|
||||
SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name LIKE 'TESTF_bug11763507';
|
||||
+-------------------+
|
||||
| specific_name |
|
||||
+-------------------+
|
||||
| testf_bug11763507 |
|
||||
+-------------------+
|
||||
|
||||
SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name='testf_bug11763507';
|
||||
+-------------------+
|
||||
| specific_name |
|
||||
+-------------------+
|
||||
| testf_bug11763507 |
|
||||
+-------------------+
|
||||
SELECT specific_name FROM INFORMATION_SCHEMA.ROUTINES WHERE specific_name='TESTF_bug11763507';
|
||||
+-------------------+
|
||||
| specific_name |
|
||||
+-------------------+
|
||||
| testf_bug11763507 |
|
||||
+-------------------+
|
||||
|
||||
DROP PROCEDURE testp_bug11763507;
|
||||
DROP FUNCTION testf_bug11763507;
|
||||
|
||||
SET @@SQL_MODE = @SQL_MODE_SAVE;
|
||||
|
||||
#END OF BUG#11763507 test.
|
@ -0,0 +1,44 @@
|
||||
result_format: 4
|
||||
drop table if exists t3;
|
||||
create table t3 ( f bigint unsigned not null );
|
||||
|
||||
drop procedure if exists fib;
|
||||
|
||||
create procedure fib(n int unsigned)
|
||||
begin
|
||||
if n > 1 then
|
||||
begin
|
||||
declare x, y bigint unsigned;
|
||||
declare c cursor for select f from t3 order by f desc limit 2;
|
||||
open c;
|
||||
fetch c into y;
|
||||
fetch c into x;
|
||||
insert into t3 values (x+y);
|
||||
call fib(n-1);
|
||||
## Close the cursor AFTER the recursion to ensure that the stack
|
||||
## frame is somewhat intact.
|
||||
close c;
|
||||
end;
|
||||
end if;
|
||||
end|
|
||||
|
||||
set @@max_sp_recursion_depth= 20|
|
||||
|
||||
insert into t3 values (0), (1)|
|
||||
|
||||
call fib(4)|
|
||||
|
||||
select * from t3 order by f asc|
|
||||
+---+
|
||||
| f |
|
||||
+---+
|
||||
| 0 |
|
||||
| 1 |
|
||||
| 1 |
|
||||
| 2 |
|
||||
| 3 |
|
||||
+---+
|
||||
|
||||
drop table t3|
|
||||
drop procedure fib|
|
||||
set @@max_sp_recursion_depth= 0|
|
1711
tools/deploy/mysql_test/test_suite/pl/r/mysql/sp-vars_mysql.result
Normal file
1711
tools/deploy/mysql_test/test_suite/pl/r/mysql/sp-vars_mysql.result
Normal file
File diff suppressed because it is too large
Load Diff
7600
tools/deploy/mysql_test/test_suite/pl/r/mysql/sp_mysql.result
Normal file
7600
tools/deploy/mysql_test/test_suite/pl/r/mysql/sp_mysql.result
Normal file
File diff suppressed because it is too large
Load Diff
2113
tools/deploy/mysql_test/test_suite/pl/t/pl_basic_mysql.test
Normal file
2113
tools/deploy/mysql_test/test_suite/pl/t/pl_basic_mysql.test
Normal file
File diff suppressed because it is too large
Load Diff
1436
tools/deploy/mysql_test/test_suite/pl/t/pl_dbt2_mysql.test
Normal file
1436
tools/deploy/mysql_test/test_suite/pl/t/pl_dbt2_mysql.test
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
378
tools/deploy/mysql_test/test_suite/pl/t/pl_exception_mysql.test
Normal file
378
tools/deploy/mysql_test/test_suite/pl/t/pl_exception_mysql.test
Normal file
@ -0,0 +1,378 @@
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
#owner: linlin.xll
|
||||
#owner group: sql1
|
||||
#tags: pl
|
||||
#description:
|
||||
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
--source mysql_test/include/index_quick_major.inc
|
||||
--enable_query_log
|
||||
--enable_result_log
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists a,t;
|
||||
drop procedure if exists p;
|
||||
--enable_warnings
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR sqlexception insert into a values(0);
|
||||
DECLARE EXIT HANDLER FOR SQLSTATE '23000' insert into a values(1);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE CONTINUE HANDLER FOR sqlexception insert into a values(0);
|
||||
begin
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(4);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE CONTINUE HANDLER FOR sqlwarning insert into a values(0);
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR sqlwarning insert into a values(0);
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR sqlwarning insert into a values(5);
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end;
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR sqlexception insert into a values(5);
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE CONTINUE HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end;
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE exit HANDLER FOR aaa insert into a values(4);
|
||||
signal SQLSTATE '01000';
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR aaa insert into a values(0);
|
||||
begin
|
||||
DECLARE exit HANDLER FOR aaa insert into a values(4);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end//
|
||||
delimiter ;//
|
||||
--error 1062
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE EXIT HANDLER FOR sqlexception insert into a values(0);
|
||||
begin
|
||||
DECLARE exit HANDLER FOR aaa insert into a values(4);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end;
|
||||
insert into a values(5);
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE continue HANDLER FOR sqlexception insert into a values(-1);
|
||||
begin
|
||||
DECLARE aaa CONDITION FOR SQLSTATE '42S02';
|
||||
DECLARE continue HANDLER FOR sqlexception
|
||||
begin
|
||||
insert into a values(0);
|
||||
insert into t values(1);
|
||||
insert into a values(6);
|
||||
end;
|
||||
begin
|
||||
DECLARE exit HANDLER FOR aaa insert into a values(4);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end;
|
||||
insert into a values(3);
|
||||
end;
|
||||
insert into a values(5);
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE EXIT HANDLER FOR sqlexception insert into a values(0);
|
||||
DECLARE EXIT HANDLER FOR SQLSTATE '23000' insert into a values(1);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(a int primary key);
|
||||
insert into t values(1);
|
||||
create table a(a1 int);
|
||||
delimiter //;
|
||||
create procedure p(x int)
|
||||
begin
|
||||
DECLARE EXIT HANDLER FOR SQLSTATE '23000' insert into a values(1);
|
||||
DECLARE EXIT HANDLER FOR sqlexception insert into a values(0);
|
||||
insert into t values(1);
|
||||
insert into a values(2);
|
||||
end//
|
||||
delimiter ;//
|
||||
call p(0);
|
||||
select * from a;
|
||||
drop table a;
|
||||
drop table t;
|
||||
drop procedure p;
|
||||
|
||||
create table t(col int primary key);
|
||||
insert into t values(1);
|
||||
|
||||
delimiter //;
|
||||
create procedure p()
|
||||
begin
|
||||
declare x condition for sqlstate '23000';
|
||||
declare exit handler for x
|
||||
begin
|
||||
rollback;
|
||||
resignal;
|
||||
end;
|
||||
insert into t values(1);
|
||||
end;
|
||||
//
|
||||
--error 1062
|
||||
call p();
|
||||
//
|
||||
delimiter ;//
|
||||
drop procedure p;
|
||||
drop table t;
|
252
tools/deploy/mysql_test/test_suite/pl/t/sp-bugs_mysql.test
Normal file
252
tools/deploy/mysql_test/test_suite/pl/t/sp-bugs_mysql.test
Normal file
@ -0,0 +1,252 @@
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
# Test file for stored procedure bugfixes
|
||||
|
||||
#owner: linlin.xll
|
||||
#owner group: sql1
|
||||
#description: test pl transformed
|
||||
#tags: pl, funcs
|
||||
|
||||
--result_format 4
|
||||
|
||||
--echo #
|
||||
--echo # Bug #47412: Valgrind warnings / user can read uninitalized memory
|
||||
--echo # using SP variables
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP SCHEMA IF EXISTS testdb;
|
||||
--enable_warnings
|
||||
|
||||
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
|
||||
### TODO : --error 1305
|
||||
--error 1321
|
||||
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
|
||||
### TODO : --error 1305
|
||||
--error 1321
|
||||
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
|
||||
### TODO : --error 1305
|
||||
--error 1321
|
||||
SELECT f2();
|
||||
|
||||
DROP SCHEMA testdb;
|
||||
|
||||
USE test;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#50423: Crash on second call of a procedure dropping a trigger
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
## coeanbase not support trigger yet !
|
||||
##
|
||||
## 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_SAVE = @@SQL_MODE;
|
||||
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,1235
|
||||
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 #
|
||||
|
||||
## oceanbase not support foreign key yet!
|
||||
## --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 #
|
||||
|
||||
## oceanbase not support BLOB yet!
|
||||
## 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();
|
||||
|
||||
#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();
|
||||
|
||||
#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;
|
||||
|
||||
SET @@SQL_MODE = @SQL_MODE_SAVE;
|
||||
|
||||
--echo #END OF BUG#11763507 test.
|
63
tools/deploy/mysql_test/test_suite/pl/t/sp-fib_mysql.test
Normal file
63
tools/deploy/mysql_test/test_suite/pl/t/sp-fib_mysql.test
Normal file
@ -0,0 +1,63 @@
|
||||
# owner: linlin.xll
|
||||
# owner group: SQL1
|
||||
# description:
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
# Fibonacci, for recursion test. (Yet Another Numerical series :)
|
||||
# Split from main.sp due to problems reported in Bug#15866
|
||||
|
||||
--result_format 4
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t3;
|
||||
--enable_warnings
|
||||
create table t3 ( f bigint unsigned not null );
|
||||
|
||||
# We deliberately do it the awkward way, fetching the last two
|
||||
# values from the table, in order to exercise various statements
|
||||
# and table accesses at each turn.
|
||||
--disable_warnings
|
||||
drop procedure if exists fib;
|
||||
--enable_warnings
|
||||
|
||||
# Now for multiple statements...
|
||||
delimiter |;
|
||||
|
||||
create procedure fib(n int unsigned)
|
||||
begin
|
||||
if n > 1 then
|
||||
begin
|
||||
declare x, y bigint unsigned;
|
||||
declare c cursor for select f from t3 order by f desc limit 2;
|
||||
open c;
|
||||
fetch c into y;
|
||||
fetch c into x;
|
||||
insert into t3 values (x+y);
|
||||
call fib(n-1);
|
||||
## Close the cursor AFTER the recursion to ensure that the stack
|
||||
## frame is somewhat intact.
|
||||
close c;
|
||||
end;
|
||||
end if;
|
||||
end|
|
||||
|
||||
# Enable recursion
|
||||
set @@max_sp_recursion_depth= 20|
|
||||
|
||||
insert into t3 values (0), (1)|
|
||||
|
||||
# The small number of recursion levels is intentional.
|
||||
# We need to avoid
|
||||
# Bug#15866 main.sp fails (thread stack limit
|
||||
# insufficient for recursive call "fib(20)")
|
||||
# which affects some platforms.
|
||||
call fib(4)|
|
||||
|
||||
select * from t3 order by f asc|
|
||||
|
||||
drop table t3|
|
||||
drop procedure fib|
|
||||
set @@max_sp_recursion_depth= 0|
|
1518
tools/deploy/mysql_test/test_suite/pl/t/sp-vars_mysql.test
Normal file
1518
tools/deploy/mysql_test/test_suite/pl/t/sp-vars_mysql.test
Normal file
File diff suppressed because it is too large
Load Diff
9231
tools/deploy/mysql_test/test_suite/pl/t/sp_mysql.test
Normal file
9231
tools/deploy/mysql_test/test_suite/pl/t/sp_mysql.test
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user