mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge rurik.mysql.com:/home/igor/mysql-5.0
into rurik.mysql.com:/home/igor/dev/mysql-5.0-2
This commit is contained in:
122
mysql-test/include/sp-vars.inc
Normal file
122
mysql-test/include/sp-vars.inc
Normal file
@ -0,0 +1,122 @@
|
||||
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|
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
delimiter ;|
|
@ -2317,7 +2317,7 @@ CREATE TABLE t2(c2 char(2)) default charset = ujis;
|
||||
INSERT INTO t1 VALUES(_ujis 0xA4A2);
|
||||
CREATE PROCEDURE sp1()
|
||||
BEGIN
|
||||
DECLARE a CHAR(1);
|
||||
DECLARE a CHAR(2) CHARSET ujis;
|
||||
DECLARE cur1 CURSOR FOR SELECT c1 FROM t1;
|
||||
OPEN cur1;
|
||||
FETCH cur1 INTO a;
|
||||
|
@ -2437,7 +2437,9 @@ a b
|
||||
20 NULL
|
||||
drop table t1;
|
||||
create table t1 (v varchar(65530), key(v));
|
||||
ERROR HY000: Can't create table './test/t1' (errno: 139)
|
||||
Warnings:
|
||||
Warning 1071 Specified key was too long; max key length is 767 bytes
|
||||
drop table t1;
|
||||
create table t1 (v varchar(65536));
|
||||
Warnings:
|
||||
Note 1246 Converting column 'v' from VARCHAR to TEXT
|
||||
@ -2577,22 +2579,49 @@ create table t8 (col1 blob, index(col1(767)))
|
||||
character set = latin1 engine = innodb;
|
||||
create table t9 (col1 varchar(512), col2 varchar(512), index(col1, col2))
|
||||
character set = latin1 engine = innodb;
|
||||
show create table t9;
|
||||
Table Create Table
|
||||
t9 CREATE TABLE `t9` (
|
||||
`col1` varchar(512) default NULL,
|
||||
`col2` varchar(512) default NULL,
|
||||
KEY `col1` (`col1`,`col2`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
drop table t1, t2, t3, t4, t5, t6, t7, t8, t9;
|
||||
create table t1 (col1 varchar(768), index (col1))
|
||||
create table t1 (col1 varchar(768), index(col1))
|
||||
character set = latin1 engine = innodb;
|
||||
ERROR HY000: Can't create table './test/t1.frm' (errno: 139)
|
||||
create table t2 (col1 varchar(768) primary key)
|
||||
Warnings:
|
||||
Warning 1071 Specified key was too long; max key length is 767 bytes
|
||||
create table t2 (col1 varbinary(768), index(col1))
|
||||
character set = latin1 engine = innodb;
|
||||
ERROR HY000: Can't create table './test/t2.frm' (errno: 139)
|
||||
create table t3 (col1 varbinary(768) primary key)
|
||||
Warnings:
|
||||
Warning 1071 Specified key was too long; max key length is 767 bytes
|
||||
create table t3 (col1 text, index(col1(768)))
|
||||
character set = latin1 engine = innodb;
|
||||
ERROR HY000: Can't create table './test/t3.frm' (errno: 139)
|
||||
create table t4 (col1 text, index(col1(768)))
|
||||
Warnings:
|
||||
Warning 1071 Specified key was too long; max key length is 767 bytes
|
||||
create table t4 (col1 blob, index(col1(768)))
|
||||
character set = latin1 engine = innodb;
|
||||
ERROR HY000: Can't create table './test/t4.frm' (errno: 139)
|
||||
create table t5 (col1 blob, index(col1(768)))
|
||||
Warnings:
|
||||
Warning 1071 Specified key was too long; max key length is 767 bytes
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`col1` varchar(768) default NULL,
|
||||
KEY `col1` (`col1`(767))
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
drop table t1, t2, t3, t4;
|
||||
create table t1 (col1 varchar(768) primary key)
|
||||
character set = latin1 engine = innodb;
|
||||
ERROR HY000: Can't create table './test/t5.frm' (errno: 139)
|
||||
ERROR 42000: Specified key was too long; max key length is 767 bytes
|
||||
create table t2 (col1 varbinary(768) primary key)
|
||||
character set = latin1 engine = innodb;
|
||||
ERROR 42000: Specified key was too long; max key length is 767 bytes
|
||||
create table t3 (col1 text, primary key(col1(768)))
|
||||
character set = latin1 engine = innodb;
|
||||
ERROR 42000: Specified key was too long; max key length is 767 bytes
|
||||
create table t4 (col1 blob, primary key(col1(768)))
|
||||
character set = latin1 engine = innodb;
|
||||
ERROR 42000: Specified key was too long; max key length is 767 bytes
|
||||
CREATE TABLE t1
|
||||
(
|
||||
id INT PRIMARY KEY
|
||||
@ -2772,6 +2801,38 @@ insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken');
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
commit;
|
||||
set foreign_key_checks=0;
|
||||
create table t2 (a int primary key, b int, foreign key (b) references t1(a)) engine = innodb;
|
||||
create table t1(a char(10) primary key, b varchar(20)) engine = innodb;
|
||||
ERROR HY000: Can't create table './test/t1.frm' (errno: 150)
|
||||
set foreign_key_checks=1;
|
||||
drop table t2;
|
||||
set foreign_key_checks=0;
|
||||
create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1;
|
||||
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=utf8;
|
||||
ERROR HY000: Can't create table './test/t2.frm' (errno: 150)
|
||||
set foreign_key_checks=1;
|
||||
drop table t1;
|
||||
set foreign_key_checks=0;
|
||||
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb;
|
||||
create table t1(a varchar(10) primary key) engine = innodb;
|
||||
alter table t1 modify column a int;
|
||||
Got one of the listed errors
|
||||
set foreign_key_checks=1;
|
||||
drop table t2,t1;
|
||||
set foreign_key_checks=0;
|
||||
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1;
|
||||
create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1;
|
||||
alter table t1 convert to character set utf8;
|
||||
set foreign_key_checks=1;
|
||||
drop table t2,t1;
|
||||
set foreign_key_checks=0;
|
||||
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1;
|
||||
create table t3(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=utf8;
|
||||
rename table t3 to t1;
|
||||
ERROR HY000: Error on rename of './test/t3' to './test/t1' (errno: 150)
|
||||
set foreign_key_checks=1;
|
||||
drop table t2,t3;
|
||||
create table t1 (a varchar(255) character set utf8,
|
||||
b varchar(255) character set utf8,
|
||||
c varchar(255) character set utf8,
|
||||
|
@ -391,7 +391,7 @@ root@localhost
|
||||
--------------------------------------------------------------------------------
|
||||
this will be executed
|
||||
this will be executed
|
||||
mysqltest: At line 2: query 'create table t1 (a int primary key);
|
||||
mysqltest: At line 3: query 'create table t1 (a int primary key);
|
||||
insert into t1 values (1);
|
||||
select 'select-me';
|
||||
insertz 'error query'' failed: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insertz 'error query'' at line 1
|
||||
|
@ -83,5 +83,5 @@ a
|
||||
22
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 18911 # # master-bin.000001 Yes Yes 0 0 18911 # None 0 No #
|
||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 18911 # # master-bin.000001 # Yes 0 0 18911 # None 0 No #
|
||||
drop table t1,t2,t3,t4;
|
||||
|
@ -16,7 +16,4 @@ master_pos_wait('master-bin.001',3000)>=0
|
||||
select max(a) from t1;
|
||||
max(a)
|
||||
8000
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 735186 # # master-bin.000001 Yes Yes 0 0 735186 # None 0 No #
|
||||
drop table t1;
|
||||
|
@ -49,7 +49,7 @@ n
|
||||
2
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 776 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 608 # Relay slave-relay-bin.000004 746 No #
|
||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 776 slave-relay-bin.000004 # master-bin.000001 # No 0 0 608 # Relay slave-relay-bin.000004 746 No #
|
||||
start slave;
|
||||
stop slave;
|
||||
start slave until master_log_file='master-bin.000001', master_log_pos=776;
|
||||
|
@ -1,3 +1,4 @@
|
||||
drop database if exists mysqltest1;
|
||||
create schema foo;
|
||||
show create schema foo;
|
||||
Database Create Database
|
||||
|
@ -1,6 +1,7 @@
|
||||
drop table if exists t1,t2;
|
||||
drop table if exists t1aa,t2aa;
|
||||
drop database if exists mysqltest;
|
||||
drop database if exists mysqltest1;
|
||||
delete from mysql.user where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
|
||||
delete from mysql.db where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
|
||||
flush privileges;
|
||||
|
@ -10,5 +10,5 @@ user()
|
||||
#
|
||||
show processlist;
|
||||
Id User Host db Command Time State Info
|
||||
# root # test Sleep # NULL
|
||||
# root # test Query # NULL show processlist
|
||||
<id> root <host> test <command> <time> <state> <info>
|
||||
<id> root <host> test <command> <time> <state> <info>
|
||||
|
@ -25,6 +25,7 @@ count(*)
|
||||
select count(*) from t2;
|
||||
count(*)
|
||||
0
|
||||
drop procedure if exists p1;
|
||||
create procedure p1()
|
||||
begin
|
||||
declare done integer default 0;
|
||||
|
77
mysql-test/r/sp-destruct.result
Normal file
77
mysql-test/r/sp-destruct.result
Normal file
@ -0,0 +1,77 @@
|
||||
use test;
|
||||
drop procedure if exists bug14233;
|
||||
drop function if exists bug14233;
|
||||
drop table if exists t1;
|
||||
drop view if exists v1;
|
||||
create procedure bug14233()
|
||||
set @x = 42;
|
||||
create function bug14233_f() returns int
|
||||
return 42;
|
||||
create table t1 (id int);
|
||||
create trigger t1_ai after insert on t1 for each row call bug14233();
|
||||
alter table mysql.proc drop type;
|
||||
call bug14233();
|
||||
ERROR HY000: Failed to load routine test.bug14233. The table mysql.proc is missing, corrupt, or contains bad data (internal code -5)
|
||||
create view v1 as select bug14233_f();
|
||||
ERROR HY000: Failed to load routine test.bug14233_f. The table mysql.proc is missing, corrupt, or contains bad data (internal code -5)
|
||||
insert into t1 values (0);
|
||||
ERROR HY000: Failed to load routine test.bug14233. The table mysql.proc is missing, corrupt, or contains bad data (internal code -5)
|
||||
flush table mysql.proc;
|
||||
call bug14233();
|
||||
ERROR HY000: Incorrect information in file: './mysql/proc.frm'
|
||||
create view v1 as select bug14233_f();
|
||||
ERROR HY000: Incorrect information in file: './mysql/proc.frm'
|
||||
insert into t1 values (0);
|
||||
ERROR HY000: Incorrect information in file: './mysql/proc.frm'
|
||||
flush table mysql.proc;
|
||||
call bug14233();
|
||||
ERROR 42S02: Table 'mysql.proc' doesn't exist
|
||||
create view v1 as select bug14233_f();
|
||||
ERROR 42S02: Table 'mysql.proc' doesn't exist
|
||||
insert into t1 values (0);
|
||||
ERROR 42S02: Table 'mysql.proc' doesn't exist
|
||||
flush table mysql.proc;
|
||||
flush privileges;
|
||||
delete from mysql.proc where name like 'bug14233%';
|
||||
insert into mysql.proc
|
||||
(
|
||||
db, name, type, specific_name, language, sql_data_access, is_deterministic,
|
||||
security_type, param_list, returns, body, definer, created, modified,
|
||||
sql_mode, comment
|
||||
)
|
||||
values
|
||||
(
|
||||
'test', 'bug14233_1', 'FUNCTION', 'bug14233_1', 'SQL', 'READS_SQL_DATA', 'NO',
|
||||
'DEFINER', '', 'int(10)',
|
||||
'select count(*) from mysql.user',
|
||||
'root@localhost', NOW() , '0000-00-00 00:00:00', '', ''
|
||||
),
|
||||
(
|
||||
'test', 'bug14233_2', 'FUNCTION', 'bug14233_2', 'SQL', 'READS_SQL_DATA', 'NO',
|
||||
'DEFINER', '', 'int(10)',
|
||||
'begin declare x int; select count(*) into x from mysql.user; end',
|
||||
'root@localhost', NOW() , '0000-00-00 00:00:00', '', ''
|
||||
),
|
||||
(
|
||||
'test', 'bug14233_3', 'PROCEDURE', 'bug14233_3', 'SQL', 'READS_SQL_DATA','NO',
|
||||
'DEFINER', '', '',
|
||||
'alksj wpsj sa ^#!@ ',
|
||||
'root@localhost', NOW() , '0000-00-00 00:00:00', '', ''
|
||||
);
|
||||
select bug14233_1();
|
||||
ERROR HY000: Failed to load routine test.bug14233_1. The table mysql.proc is missing, corrupt, or contains bad data (internal code -6)
|
||||
create view v1 as select bug14233_1();
|
||||
ERROR HY000: Failed to load routine test.bug14233_1. The table mysql.proc is missing, corrupt, or contains bad data (internal code -6)
|
||||
select bug14233_2();
|
||||
ERROR HY000: Failed to load routine test.bug14233_2. The table mysql.proc is missing, corrupt, or contains bad data (internal code -6)
|
||||
create view v1 as select bug14233_2();
|
||||
ERROR HY000: Failed to load routine test.bug14233_2. The table mysql.proc is missing, corrupt, or contains bad data (internal code -6)
|
||||
call bug14233_3();
|
||||
ERROR HY000: Failed to load routine test.bug14233_3. The table mysql.proc is missing, corrupt, or contains bad data (internal code -6)
|
||||
drop trigger t1_ai;
|
||||
create trigger t1_ai after insert on t1 for each row call bug14233_3();
|
||||
insert into t1 values (0);
|
||||
ERROR HY000: Failed to load routine test.bug14233_3. The table mysql.proc is missing, corrupt, or contains bad data (internal code -6)
|
||||
delete from mysql.proc where name like 'bug14233%';
|
||||
drop trigger t1_ai;
|
||||
drop table t1;
|
@ -1,3 +1,5 @@
|
||||
drop procedure if exists p1|
|
||||
drop procedure if exists p2|
|
||||
create procedure p1()
|
||||
begin
|
||||
prepare stmt from "select 1";
|
||||
|
@ -124,7 +124,7 @@ begin
|
||||
declare x int;
|
||||
set x = val+3;
|
||||
end|
|
||||
ERROR 42000: No RETURN found in FUNCTION f
|
||||
ERROR 42000: No RETURN found in FUNCTION test.f
|
||||
create function f(val int) returns int
|
||||
begin
|
||||
declare x int;
|
||||
@ -768,7 +768,7 @@ BEGIN
|
||||
OPTIMIZE TABLE t1;
|
||||
RETURN 1;
|
||||
END|
|
||||
ERROR 0A000: OPTIMIZE TABLE is not allowed in stored procedures
|
||||
ERROR 0A000: Not allowed to return a result set from a function
|
||||
DROP FUNCTION IF EXISTS bug12995|
|
||||
CREATE FUNCTION bug12995() RETURNS INT
|
||||
BEGIN
|
||||
@ -981,6 +981,8 @@ END |
|
||||
drop table t1|
|
||||
drop function bug_13627_f|
|
||||
drop function if exists bug12329;
|
||||
Warnings:
|
||||
Note 1305 FUNCTION bug12329 does not exist
|
||||
create table t1 as select 1 a;
|
||||
create table t2 as select 1 a;
|
||||
create function bug12329() returns int return (select a from t1);
|
||||
@ -1055,3 +1057,74 @@ Db Name Type Definer Modified Created Security_type Comment
|
||||
mysqltest2 p1 PROCEDURE root@localhost 0000-00-00 00:00:00 0000-00-00 00:00:00 DEFINER
|
||||
drop database mysqltest2;
|
||||
use test;
|
||||
DROP FUNCTION IF EXISTS bug13012|
|
||||
CREATE FUNCTION bug13012() RETURNS INT
|
||||
BEGIN
|
||||
REPAIR TABLE t1;
|
||||
RETURN 1;
|
||||
END|
|
||||
ERROR 0A000: Not allowed to return a result set from a function
|
||||
CREATE FUNCTION bug13012() RETURNS INT
|
||||
BEGIN
|
||||
BACKUP TABLE t1 TO '/tmp';
|
||||
RETURN 1;
|
||||
END|
|
||||
ERROR 0A000: Not allowed to return a result set from a function
|
||||
CREATE FUNCTION bug13012() RETURNS INT
|
||||
BEGIN
|
||||
RESTORE TABLE t1 FROM '/tmp';
|
||||
RETURN 1;
|
||||
END|
|
||||
ERROR 0A000: Not allowed to return a result set from a function
|
||||
create table t1 (a int)|
|
||||
CREATE PROCEDURE bug13012_1() REPAIR TABLE t1|
|
||||
CREATE FUNCTION bug13012_2() RETURNS INT
|
||||
BEGIN
|
||||
CALL bug13012_1();
|
||||
RETURN 1;
|
||||
END|
|
||||
SELECT bug13012_2()|
|
||||
ERROR 0A000: Not allowed to return a result set from a function
|
||||
drop table t1|
|
||||
drop procedure bug13012_1|
|
||||
drop function bug13012_2|
|
||||
drop function if exists bug11555_1;
|
||||
drop function if exists bug11555_2;
|
||||
drop view if exists v1, v2, v3, v4;
|
||||
create function bug11555_1() returns int return (select max(i) from t1);
|
||||
create function bug11555_2() returns int return bug11555_1();
|
||||
create view v1 as select bug11555_1();
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
create view v2 as select bug11555_2();
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
create table t1 (i int);
|
||||
create view v1 as select bug11555_1();
|
||||
create view v2 as select bug11555_2();
|
||||
create view v3 as select * from v1;
|
||||
drop table t1;
|
||||
select * from v1;
|
||||
ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
select * from v2;
|
||||
ERROR HY000: View 'test.v2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
select * from v3;
|
||||
ERROR HY000: View 'test.v3' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
create view v4 as select * from v1;
|
||||
ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
drop view v1, v2, v3;
|
||||
drop function bug11555_1;
|
||||
drop function bug11555_2;
|
||||
create table t1 (i int);
|
||||
create table t2 (i int);
|
||||
create trigger t1_ai after insert on t1 for each row insert into t2 values (new.i);
|
||||
create view v1 as select * from t1;
|
||||
drop table t2;
|
||||
insert into v1 values (1);
|
||||
ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
drop trigger t1_ai;
|
||||
create function bug11555_1() returns int return (select max(i) from t2);
|
||||
create trigger t1_ai after insert on t1 for each row set @a:=bug11555_1();
|
||||
insert into v1 values (2);
|
||||
ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
drop function bug11555_1;
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
|
1077
mysql-test/r/sp-vars.result
Normal file
1077
mysql-test/r/sp-vars.result
Normal file
File diff suppressed because it is too large
Load Diff
@ -248,13 +248,13 @@ return i+1|
|
||||
call sub1("sub1a", (select 7))|
|
||||
call sub1("sub1b", (select max(i) from t2))|
|
||||
call sub1("sub1c", (select i,d from t2 limit 1))|
|
||||
ERROR 21000: Operand should contain 1 column(s)
|
||||
call sub1("sub1d", (select 1 from (select 1) a))|
|
||||
call sub2("sub2")|
|
||||
select * from t1|
|
||||
id data
|
||||
sub1a 7
|
||||
sub1b 3
|
||||
sub1c 1
|
||||
sub1d 1
|
||||
sub2 6
|
||||
select sub3((select max(i) from t2))|
|
||||
@ -2686,7 +2686,7 @@ call bug8937()|
|
||||
s x y z
|
||||
16 3 1 6
|
||||
a
|
||||
3.2000
|
||||
3.2
|
||||
drop procedure bug8937|
|
||||
delete from t1|
|
||||
drop procedure if exists bug6900|
|
||||
@ -2890,21 +2890,30 @@ create function bug9775(v1 char(1)) returns enum('a','b') return v1|
|
||||
select bug9775('a'),bug9775('b'),bug9775('c')|
|
||||
bug9775('a') bug9775('b') bug9775('c')
|
||||
a b
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'bug9775('c')' at row 1
|
||||
drop function bug9775|
|
||||
create function bug9775(v1 int) returns enum('a','b') return v1|
|
||||
select bug9775(1),bug9775(2),bug9775(3)|
|
||||
bug9775(1) bug9775(2) bug9775(3)
|
||||
a b
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'bug9775(3)' at row 1
|
||||
drop function bug9775|
|
||||
create function bug9775(v1 char(1)) returns set('a','b') return v1|
|
||||
select bug9775('a'),bug9775('b'),bug9775('a,b'),bug9775('c')|
|
||||
bug9775('a') bug9775('b') bug9775('a,b') bug9775('c')
|
||||
a b a,b
|
||||
a b a
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'v1' at row 1
|
||||
Warning 1265 Data truncated for column 'bug9775('c')' at row 1
|
||||
drop function bug9775|
|
||||
create function bug9775(v1 int) returns set('a','b') return v1|
|
||||
select bug9775(1),bug9775(2),bug9775(3),bug9775(4)|
|
||||
bug9775(1) bug9775(2) bug9775(3) bug9775(4)
|
||||
a b a,b
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'bug9775(4)' at row 1
|
||||
drop function bug9775|
|
||||
drop function if exists bug8861|
|
||||
create function bug8861(v1 int) returns year return v1|
|
||||
@ -2927,12 +2936,10 @@ create procedure bug9004_2(x char(16))
|
||||
call bug9004_1(x)|
|
||||
call bug9004_1('12345678901234567')|
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'id' at row 1
|
||||
Warning 1265 Data truncated for column 'id' at row 2
|
||||
Warning 1265 Data truncated for column 'x' at row 1
|
||||
call bug9004_2('12345678901234567890')|
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'id' at row 1
|
||||
Warning 1265 Data truncated for column 'id' at row 2
|
||||
Warning 1265 Data truncated for column 'x' at row 1
|
||||
delete from t1|
|
||||
drop procedure bug9004_1|
|
||||
drop procedure bug9004_2|
|
||||
@ -3527,14 +3534,15 @@ end|
|
||||
call bug12589_1()|
|
||||
Table Create Table
|
||||
tm1 CREATE TEMPORARY TABLE `tm1` (
|
||||
`spv1` decimal(1,0) unsigned default NULL
|
||||
`spv1` decimal(3,3) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DECIMAL value: 'test'
|
||||
Warning 1264 Out of range value adjusted for column 'spv1' at row 1
|
||||
Warning 1366 Incorrect decimal value: 'test' for column 'spv1' at row 1
|
||||
call bug12589_2()|
|
||||
Table Create Table
|
||||
tm1 CREATE TEMPORARY TABLE `tm1` (
|
||||
`spv1` decimal(6,3) unsigned default NULL
|
||||
`spv1` decimal(6,3) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
call bug12589_3()|
|
||||
Table Create Table
|
||||
@ -4016,34 +4024,37 @@ create procedure bug14643_1()
|
||||
begin
|
||||
declare continue handler for sqlexception select 'boo' as 'Handler';
|
||||
begin
|
||||
declare v int default x;
|
||||
declare v int default undefined_var;
|
||||
if v = 1 then
|
||||
select 1;
|
||||
else
|
||||
select 2;
|
||||
select v, isnull(v);
|
||||
end if;
|
||||
end;
|
||||
end|
|
||||
create procedure bug14643_2()
|
||||
begin
|
||||
declare continue handler for sqlexception select 'boo' as 'Handler';
|
||||
case x
|
||||
case undefined_var
|
||||
when 1 then
|
||||
select 1;
|
||||
else
|
||||
select 2;
|
||||
end case;
|
||||
select undefined_var;
|
||||
end|
|
||||
call bug14643_1()|
|
||||
Handler
|
||||
boo
|
||||
2
|
||||
2
|
||||
v isnull(v)
|
||||
NULL 1
|
||||
call bug14643_2()|
|
||||
Handler
|
||||
boo
|
||||
2
|
||||
2
|
||||
Handler
|
||||
boo
|
||||
drop procedure bug14643_1|
|
||||
drop procedure bug14643_2|
|
||||
drop procedure if exists bug14304|
|
||||
@ -4099,25 +4110,23 @@ call bug14376(4711)|
|
||||
x
|
||||
4711
|
||||
drop procedure bug14376|
|
||||
drop procedure if exists p1|
|
||||
Warnings:
|
||||
Note 1305 PROCEDURE p1 does not exist
|
||||
drop table if exists t1|
|
||||
create table t1 (a varchar(255))|
|
||||
insert into t1 (a) values ("a - table column")|
|
||||
create procedure p1(a varchar(255))
|
||||
drop procedure if exists bug5967|
|
||||
drop table if exists t3|
|
||||
create table t3 (a varchar(255))|
|
||||
insert into t3 (a) values ("a - table column")|
|
||||
create procedure bug5967(a varchar(255))
|
||||
begin
|
||||
declare i varchar(255);
|
||||
declare c cursor for select a from t1;
|
||||
declare c cursor for select a from t3;
|
||||
select a;
|
||||
select a from t1 into i;
|
||||
select a from t3 into i;
|
||||
select i as 'Parameter takes precedence over table column'; open c;
|
||||
fetch c into i;
|
||||
close c;
|
||||
select i as 'Parameter takes precedence over table column in cursors';
|
||||
begin
|
||||
declare a varchar(255) default 'a - local variable';
|
||||
declare c1 cursor for select a from t1;
|
||||
declare c1 cursor for select a from t3;
|
||||
select a as 'A local variable takes precedence over parameter';
|
||||
open c1;
|
||||
fetch c1 into i;
|
||||
@ -4125,9 +4134,9 @@ close c1;
|
||||
select i as 'A local variable takes precedence over parameter in cursors';
|
||||
begin
|
||||
declare a varchar(255) default 'a - local variable in a nested compound statement';
|
||||
declare c2 cursor for select a from t1;
|
||||
declare c2 cursor for select a from t3;
|
||||
select a as 'A local variable in a nested compound statement takes precedence over a local variable in the outer statement';
|
||||
select a from t1 into i;
|
||||
select a from t3 into i;
|
||||
select i as 'A local variable in a nested compound statement takes precedence over table column';
|
||||
open c2;
|
||||
fetch c2 into i;
|
||||
@ -4136,7 +4145,7 @@ select i as 'A local variable in a nested compound statement takes precedence o
|
||||
end;
|
||||
end;
|
||||
end|
|
||||
call p1("a - stored procedure parameter")|
|
||||
call bug5967("a - stored procedure parameter")|
|
||||
a
|
||||
a - stored procedure parameter
|
||||
Parameter takes precedence over table column
|
||||
@ -4153,4 +4162,162 @@ A local variable in a nested compound statement takes precedence over table colu
|
||||
a - local variable in a nested compound statement
|
||||
A local variable in a nested compound statement takes precedence over table column in cursors
|
||||
a - local variable in a nested compound statement
|
||||
drop procedure bug5967|
|
||||
drop procedure if exists bug13012|
|
||||
create procedure bug13012()
|
||||
BEGIN
|
||||
REPAIR TABLE t1;
|
||||
BACKUP TABLE t1 to '../tmp';
|
||||
DROP TABLE t1;
|
||||
RESTORE TABLE t1 FROM '../tmp';
|
||||
END|
|
||||
call bug13012()|
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 backup status OK
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 restore status OK
|
||||
drop procedure bug13012|
|
||||
create view v1 as select * from t1|
|
||||
create procedure bug13012()
|
||||
BEGIN
|
||||
REPAIR TABLE t1,t2,t3,v1;
|
||||
OPTIMIZE TABLE t1,t2,t3,v1;
|
||||
ANALYZE TABLE t1,t2,t3,v1;
|
||||
END|
|
||||
call bug13012()|
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
test.t2 repair status OK
|
||||
test.t3 repair status OK
|
||||
test.v1 repair error 'test.v1' is not BASE TABLE
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
test.t2 optimize status OK
|
||||
test.t3 optimize status OK
|
||||
test.v1 optimize error 'test.v1' is not BASE TABLE
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Table is already up to date
|
||||
test.t2 analyze status Table is already up to date
|
||||
test.t3 analyze status Table is already up to date
|
||||
test.v1 analyze error 'test.v1' is not BASE TABLE
|
||||
Warnings:
|
||||
Error 1347 'test.v1' is not BASE TABLE
|
||||
call bug13012()|
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
test.t2 repair status OK
|
||||
test.t3 repair status OK
|
||||
test.v1 repair error 'test.v1' is not BASE TABLE
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
test.t2 optimize status OK
|
||||
test.t3 optimize status OK
|
||||
test.v1 optimize error 'test.v1' is not BASE TABLE
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Table is already up to date
|
||||
test.t2 analyze status Table is already up to date
|
||||
test.t3 analyze status Table is already up to date
|
||||
test.v1 analyze error 'test.v1' is not BASE TABLE
|
||||
Warnings:
|
||||
Error 1347 'test.v1' is not BASE TABLE
|
||||
call bug13012()|
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
test.t2 repair status OK
|
||||
test.t3 repair status OK
|
||||
test.v1 repair error 'test.v1' is not BASE TABLE
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
test.t2 optimize status OK
|
||||
test.t3 optimize status OK
|
||||
test.v1 optimize error 'test.v1' is not BASE TABLE
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Table is already up to date
|
||||
test.t2 analyze status Table is already up to date
|
||||
test.t3 analyze status Table is already up to date
|
||||
test.v1 analyze error 'test.v1' is not BASE TABLE
|
||||
Warnings:
|
||||
Error 1347 'test.v1' is not BASE TABLE
|
||||
drop procedure bug13012|
|
||||
drop view v1;
|
||||
select * from t1|
|
||||
id data
|
||||
aa 0
|
||||
aa 1
|
||||
aa 2
|
||||
aa 3
|
||||
aa 4
|
||||
aa 5
|
||||
aa 6
|
||||
aa 7
|
||||
aa 8
|
||||
aa 9
|
||||
drop schema if exists mysqltest1|
|
||||
Warnings:
|
||||
Note 1008 Can't drop database 'mysqltest1'; database doesn't exist
|
||||
drop schema if exists mysqltest2|
|
||||
Warnings:
|
||||
Note 1008 Can't drop database 'mysqltest2'; database doesn't exist
|
||||
drop schema if exists mysqltest3|
|
||||
Warnings:
|
||||
Note 1008 Can't drop database 'mysqltest3'; database doesn't exist
|
||||
create schema mysqltest1|
|
||||
create schema mysqltest2|
|
||||
create schema mysqltest3|
|
||||
use mysqltest3|
|
||||
create procedure mysqltest1.p1 (out prequestid varchar(100))
|
||||
begin
|
||||
call mysqltest2.p2('call mysqltest3.p3(1, 2)');
|
||||
end|
|
||||
create procedure mysqltest2.p2(in psql text)
|
||||
begin
|
||||
declare lsql text;
|
||||
set @lsql= psql;
|
||||
prepare lstatement from @lsql;
|
||||
execute lstatement;
|
||||
deallocate prepare lstatement;
|
||||
end|
|
||||
create procedure mysqltest3.p3(in p1 int)
|
||||
begin
|
||||
select p1;
|
||||
end|
|
||||
call mysqltest1.p1(@rs)|
|
||||
ERROR 42000: Incorrect number of arguments for PROCEDURE mysqltest3.p3; expected 1, got 2
|
||||
call mysqltest1.p1(@rs)|
|
||||
ERROR 42000: Incorrect number of arguments for PROCEDURE mysqltest3.p3; expected 1, got 2
|
||||
call mysqltest1.p1(@rs)|
|
||||
ERROR 42000: Incorrect number of arguments for PROCEDURE mysqltest3.p3; expected 1, got 2
|
||||
drop schema if exists mysqltest1|
|
||||
drop schema if exists mysqltest2|
|
||||
drop schema if exists mysqltest3|
|
||||
use test|
|
||||
drop table if exists t3|
|
||||
drop procedure if exists bug15441|
|
||||
create table t3 (id int not null primary key, county varchar(25))|
|
||||
insert into t3 (id, county) values (1, 'York')|
|
||||
create procedure bug15441(c varchar(25))
|
||||
begin
|
||||
update t3 set id=2, county=values(c);
|
||||
end|
|
||||
call bug15441('county')|
|
||||
ERROR 42S22: Unknown column 'c' in 'field list'
|
||||
drop procedure bug15441|
|
||||
create procedure bug15441(county varchar(25))
|
||||
begin
|
||||
declare c varchar(25) default "hello";
|
||||
insert into t3 (id, county) values (1, county)
|
||||
on duplicate key update county= values(county);
|
||||
select * from t3;
|
||||
update t3 set id=2, county=values(id);
|
||||
select * from t3;
|
||||
end|
|
||||
call bug15441('Yale')|
|
||||
id county
|
||||
1 Yale
|
||||
id county
|
||||
2 NULL
|
||||
drop table t3|
|
||||
drop procedure bug15441|
|
||||
drop table t1,t2;
|
||||
|
@ -1,5 +1,4 @@
|
||||
using_big_test
|
||||
0
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
CREATE TABLE t1 (id INTEGER);
|
||||
CREATE TABLE t2 (id INTEGER);
|
||||
INSERT INTO t1 (id) VALUES (1), (1), (1),(1);
|
||||
@ -40,19 +39,19 @@ AVG(DISTINCT id)
|
||||
512.5000
|
||||
SELECT SUM(DISTINCT id)/COUNT(DISTINCT id) FROM t1 GROUP BY id % 13;
|
||||
SUM(DISTINCT id)/COUNT(DISTINCT id)
|
||||
513.50000
|
||||
508.00000
|
||||
509.00000
|
||||
510.00000
|
||||
511.00000
|
||||
512.00000
|
||||
513.00000
|
||||
514.00000
|
||||
515.00000
|
||||
516.00000
|
||||
517.00000
|
||||
511.50000
|
||||
512.50000
|
||||
513.5000
|
||||
508.0000
|
||||
509.0000
|
||||
510.0000
|
||||
511.0000
|
||||
512.0000
|
||||
513.0000
|
||||
514.0000
|
||||
515.0000
|
||||
516.0000
|
||||
517.0000
|
||||
511.5000
|
||||
512.5000
|
||||
INSERT INTO t1 SELECT id+1024 FROM t1;
|
||||
INSERT INTO t1 SELECT id+2048 FROM t1;
|
||||
INSERT INTO t1 SELECT id+4096 FROM t1;
|
||||
|
@ -114,3 +114,26 @@ drop table t1;
|
||||
select hex(cast(0x10 as binary(2)));
|
||||
hex(cast(0x10 as binary(2)))
|
||||
1000
|
||||
create table t1 (b binary(2), vb varbinary(2));
|
||||
insert into t1 values(0x4120, 0x4120);
|
||||
insert into t1 values(0x412020, 0x412020);
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'b' at row 1
|
||||
Warning 1265 Data truncated for column 'vb' at row 1
|
||||
drop table t1;
|
||||
create table t1 (c char(2), vc varchar(2));
|
||||
insert into t1 values(0x4120, 0x4120);
|
||||
insert into t1 values(0x412020, 0x412020);
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'vc' at row 1
|
||||
drop table t1;
|
||||
set @old_sql_mode= @@sql_mode, sql_mode= 'traditional';
|
||||
create table t1 (b binary(2), vb varbinary(2));
|
||||
insert into t1 values(0x4120, 0x4120);
|
||||
insert into t1 values(0x412020, NULL);
|
||||
ERROR 22001: Data too long for column 'b' at row 1
|
||||
insert into t1 values(NULL, 0x412020);
|
||||
ERROR 22001: Data too long for column 'vb' at row 1
|
||||
drop table t1;
|
||||
set @@sql_mode= @old_sql_mode;
|
||||
End of 5.0 tests
|
||||
|
@ -1,11 +1,26 @@
|
||||
drop procedure if exists sp1;
|
||||
create procedure sp1 () begin
|
||||
declare v1, v2, v3, v4 decimal(16,12); declare v5 int;
|
||||
set v1 = 1; set v2 = 2; set v3 = 1000000000000; set v4 = 2000000000000; set v5 = 0;
|
||||
while v5 < 100000 do
|
||||
set v1 = v1 + 0.000000000001; set v2 = v2 - 0.000000000001; set v3 = v3 + 1; set v4 = v4 - 1; set v5 = v5 + 1;
|
||||
end while; select v1, v2, v3 * 0.000000000001, v4 * 0.000000000001; end;//
|
||||
CREATE PROCEDURE sp1()
|
||||
BEGIN
|
||||
DECLARE v1, v2, v3, v4 DECIMAL(28,12);
|
||||
DECLARE v3_2, v4_2 DECIMAL(28, 12);
|
||||
DECLARE counter INT;
|
||||
SET v1 = 1;
|
||||
SET v2 = 2;
|
||||
SET v3 = 1000000000000;
|
||||
SET v4 = 2000000000000;
|
||||
SET counter = 0;
|
||||
WHILE counter < 100000 DO
|
||||
SET v1 = v1 + 0.000000000001;
|
||||
SET v2 = v2 - 0.000000000001;
|
||||
SET v3 = v3 + 1;
|
||||
SET v4 = v4 - 1;
|
||||
SET counter = counter + 1;
|
||||
END WHILE;
|
||||
SET v3_2 = v3 * 0.000000000001;
|
||||
SET v4_2 = v4 * 0.000000000001;
|
||||
SELECT v1, v2, v3, v3_2, v4, v4_2;
|
||||
END//
|
||||
call sp1()//
|
||||
v1 v2 v3 * 0.000000000001 v4 * 0.000000000001
|
||||
1.000000100000 1.999999900000 1.000000100000 1.999999900000
|
||||
v1 v2 v3 v3_2 v4 v4_2
|
||||
1.000000100000 1.999999900000 1000000100000.000000000000 1.000000100000 1999999900000.000000000000 1.999999900000
|
||||
drop procedure sp1;
|
||||
|
@ -1933,11 +1933,11 @@ create function f1 () returns int return (select max(col1) from t1);
|
||||
DROP TABLE t1;
|
||||
CHECK TABLE v1, v2, v3, v4, v5, v6;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 check error Table 'test.t1' doesn't exist
|
||||
test.v1 check error View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
test.v2 check status OK
|
||||
test.v3 check error Table 'test.t1' doesn't exist
|
||||
test.v3 check error View 'test.v3' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
test.v4 check status OK
|
||||
test.v5 check error Table 'test.t1' doesn't exist
|
||||
test.v5 check error View 'test.v5' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
test.v6 check status OK
|
||||
drop function f1;
|
||||
drop function f2;
|
||||
@ -2383,20 +2383,25 @@ CREATE TABLE t1(id INT);
|
||||
CREATE VIEW v1 AS SELECT id FROM t1;
|
||||
OPTIMIZE TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 optimize note Unknown table 'test.v1'
|
||||
test.v1 optimize error 'test.v1' is not BASE TABLE
|
||||
Warnings:
|
||||
Error 1347 'test.v1' is not BASE TABLE
|
||||
ANALYZE TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 analyze note Unknown table 'test.v1'
|
||||
test.v1 analyze error 'test.v1' is not BASE TABLE
|
||||
Warnings:
|
||||
Error 1347 'test.v1' is not BASE TABLE
|
||||
REPAIR TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 repair note Unknown table 'test.v1'
|
||||
test.v1 repair error 'test.v1' is not BASE TABLE
|
||||
Warnings:
|
||||
Error 1347 'test.v1' is not BASE TABLE
|
||||
DROP TABLE t1;
|
||||
OPTIMIZE TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 optimize note Unknown table 'test.v1'
|
||||
test.v1 optimize error 'test.v1' is not BASE TABLE
|
||||
Warnings:
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
Error 1356 View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
Error 1347 'test.v1' is not BASE TABLE
|
||||
DROP VIEW v1;
|
||||
create definer = current_user() sql security invoker view v1 as select 1;
|
||||
show create view v1;
|
||||
|
@ -340,7 +340,9 @@ drop table t1;
|
||||
#
|
||||
# BUG 12207 alter table ... discard table space on MyISAM table causes ERROR 2013 (HY000)
|
||||
#
|
||||
# Some platforms (Mac OS X, Windows) will send the error message using small letters.
|
||||
CREATE TABLE T12207(a int) ENGINE=MYISAM;
|
||||
--replace_result t12207 T12207
|
||||
--error 1031
|
||||
ALTER TABLE T12207 DISCARD TABLESPACE;
|
||||
DROP TABLE T12207;
|
||||
|
@ -52,5 +52,6 @@ unlock tables;
|
||||
connection con1;
|
||||
reap;
|
||||
drop table t5;
|
||||
--system rm $MYSQL_TEST_DIR/var/tmp/t?.*
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -1170,7 +1170,7 @@ INSERT INTO t1 VALUES(_ujis 0xA4A2);
|
||||
DELIMITER |;
|
||||
CREATE PROCEDURE sp1()
|
||||
BEGIN
|
||||
DECLARE a CHAR(1);
|
||||
DECLARE a CHAR(2) CHARSET ujis;
|
||||
DECLARE cur1 CURSOR FOR SELECT c1 FROM t1;
|
||||
OPEN cur1;
|
||||
FETCH cur1 INTO a;
|
||||
|
@ -11,7 +11,4 @@
|
||||
##############################################################################
|
||||
|
||||
sp-goto : GOTO is currently is disabled - will be fixed in the future
|
||||
rpl_relayrotate : Unstable test case, bug#12429
|
||||
rpl_until : Unstable test case, bug#12429
|
||||
rpl_deadlock : Unstable test case, bug#12429
|
||||
kill : Unstable test case, bug#9712
|
||||
|
@ -1356,8 +1356,8 @@ source include/varchar.inc;
|
||||
# Clean up filename -- embedded server reports whole path without .frm,
|
||||
# regular server reports relative path with .frm (argh!)
|
||||
--replace_result \\ / $MYSQL_TEST_DIR . /var/master-data/ / t1.frm t1
|
||||
--error 1005
|
||||
create table t1 (v varchar(65530), key(v));
|
||||
drop table t1;
|
||||
create table t1 (v varchar(65536));
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
@ -1485,7 +1485,7 @@ CREATE TEMPORARY TABLE t2
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Test that index column max sizes are checked (bug #13315)
|
||||
# Test that index column max sizes are honored (bug #13315)
|
||||
#
|
||||
|
||||
# prefix index
|
||||
@ -1512,22 +1512,36 @@ create table t8 (col1 blob, index(col1(767)))
|
||||
create table t9 (col1 varchar(512), col2 varchar(512), index(col1, col2))
|
||||
character set = latin1 engine = innodb;
|
||||
|
||||
show create table t9;
|
||||
|
||||
drop table t1, t2, t3, t4, t5, t6, t7, t8, t9;
|
||||
|
||||
--error 1005
|
||||
create table t1 (col1 varchar(768), index (col1))
|
||||
# these should have their index length trimmed
|
||||
create table t1 (col1 varchar(768), index(col1))
|
||||
character set = latin1 engine = innodb;
|
||||
--error 1005
|
||||
create table t2 (col1 varchar(768) primary key)
|
||||
create table t2 (col1 varbinary(768), index(col1))
|
||||
character set = latin1 engine = innodb;
|
||||
--error 1005
|
||||
create table t3 (col1 varbinary(768) primary key)
|
||||
create table t3 (col1 text, index(col1(768)))
|
||||
character set = latin1 engine = innodb;
|
||||
--error 1005
|
||||
create table t4 (col1 text, index(col1(768)))
|
||||
create table t4 (col1 blob, index(col1(768)))
|
||||
character set = latin1 engine = innodb;
|
||||
--error 1005
|
||||
create table t5 (col1 blob, index(col1(768)))
|
||||
|
||||
show create table t1;
|
||||
|
||||
drop table t1, t2, t3, t4;
|
||||
|
||||
# these should be refused
|
||||
--error 1071
|
||||
create table t1 (col1 varchar(768) primary key)
|
||||
character set = latin1 engine = innodb;
|
||||
--error 1071
|
||||
create table t2 (col1 varbinary(768) primary key)
|
||||
character set = latin1 engine = innodb;
|
||||
--error 1071
|
||||
create table t3 (col1 text, primary key(col1(768)))
|
||||
character set = latin1 engine = innodb;
|
||||
--error 1071
|
||||
create table t4 (col1 blob, primary key(col1(768)))
|
||||
character set = latin1 engine = innodb;
|
||||
|
||||
#
|
||||
@ -1752,6 +1766,56 @@ drop table t1;
|
||||
drop table t2;
|
||||
commit;
|
||||
|
||||
# tests for bugs #9802 and #13778
|
||||
|
||||
# test that FKs between invalid types are not accepted
|
||||
|
||||
set foreign_key_checks=0;
|
||||
create table t2 (a int primary key, b int, foreign key (b) references t1(a)) engine = innodb;
|
||||
-- error 1005
|
||||
create table t1(a char(10) primary key, b varchar(20)) engine = innodb;
|
||||
set foreign_key_checks=1;
|
||||
drop table t2;
|
||||
|
||||
# test that FKs between different charsets are not accepted in CREATE even
|
||||
# when f_k_c is 0
|
||||
|
||||
set foreign_key_checks=0;
|
||||
create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1;
|
||||
-- error 1005
|
||||
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=utf8;
|
||||
set foreign_key_checks=1;
|
||||
drop table t1;
|
||||
|
||||
# test that invalid datatype conversions with ALTER are not allowed
|
||||
|
||||
set foreign_key_checks=0;
|
||||
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb;
|
||||
create table t1(a varchar(10) primary key) engine = innodb;
|
||||
-- error 1025,1025
|
||||
alter table t1 modify column a int;
|
||||
set foreign_key_checks=1;
|
||||
drop table t2,t1;
|
||||
|
||||
# test that charset conversions with ALTER are allowed when f_k_c is 0
|
||||
|
||||
set foreign_key_checks=0;
|
||||
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1;
|
||||
create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1;
|
||||
alter table t1 convert to character set utf8;
|
||||
set foreign_key_checks=1;
|
||||
drop table t2,t1;
|
||||
|
||||
# test that RENAME does not allow invalid charsets when f_k_c is 0
|
||||
|
||||
set foreign_key_checks=0;
|
||||
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1;
|
||||
create table t3(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=utf8;
|
||||
-- error 1025
|
||||
rename table t3 to t1;
|
||||
set foreign_key_checks=1;
|
||||
drop table t2,t3;
|
||||
|
||||
#
|
||||
# Test that we can create a large (>1K) key
|
||||
#
|
||||
|
@ -953,7 +953,9 @@ select "this will be executed";
|
||||
#
|
||||
|
||||
# Failing multi statement query
|
||||
--exec echo "delimiter ||||;" > var/tmp/bug11731.sql
|
||||
# PS does not support multi statement
|
||||
--exec echo "--disable_ps_protocol" > var/tmp/bug11731.sql
|
||||
--exec echo "delimiter ||||;" >> var/tmp/bug11731.sql
|
||||
--exec echo "create table t1 (a int primary key);" >> var/tmp/bug11731.sql
|
||||
--exec echo "insert into t1 values (1);" >> var/tmp/bug11731.sql
|
||||
--exec echo "select 'select-me';" >> var/tmp/bug11731.sql
|
||||
@ -973,7 +975,9 @@ drop table t1;
|
||||
|
||||
|
||||
# Using expected error
|
||||
--exec echo "delimiter ||||;" > var/tmp/bug11731.sql
|
||||
# PS does not support multi statement
|
||||
--exec echo "--disable_ps_protocol" > var/tmp/bug11731.sql
|
||||
--exec echo "delimiter ||||;" >> var/tmp/bug11731.sql
|
||||
--exec echo "--error 1064" >> var/tmp/bug11731.sql
|
||||
--exec echo "create table t1 (a int primary key);" >> var/tmp/bug11731.sql
|
||||
--exec echo "insert into t1 values (1);" >> var/tmp/bug11731.sql
|
||||
|
@ -102,7 +102,7 @@ commit;
|
||||
sync_with_master;
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||
--replace_column 1 # 8 # 9 # 11 # 23 # 33 #
|
||||
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||
show slave status;
|
||||
|
||||
|
@ -56,9 +56,6 @@ start slave;
|
||||
# (the only statement with position>=3000 is COMMIT).
|
||||
select master_pos_wait('master-bin.001',3000)>=0;
|
||||
select max(a) from t1;
|
||||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
||||
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||
show slave status;
|
||||
connection master;
|
||||
|
||||
# The following DROP is a very important cleaning task:
|
||||
|
@ -49,7 +49,7 @@ sleep 2;
|
||||
wait_for_slave_to_stop;
|
||||
select * from t2;
|
||||
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||
--replace_column 1 # 9 # 23 # 33 #
|
||||
--replace_column 1 # 9 # 11 # 23 # 33 #
|
||||
show slave status;
|
||||
|
||||
# clean up
|
||||
|
@ -1,6 +1,12 @@
|
||||
#
|
||||
# Just a couple of tests to make sure that schema works.
|
||||
#
|
||||
# Drop mysqltest1 database, as it can left from the previous tests.
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop database if exists mysqltest1;
|
||||
--enable_warnings
|
||||
|
||||
create schema foo;
|
||||
show create schema foo;
|
||||
|
@ -10,6 +10,7 @@
|
||||
drop table if exists t1,t2;
|
||||
drop table if exists t1aa,t2aa;
|
||||
drop database if exists mysqltest;
|
||||
drop database if exists mysqltest1;
|
||||
|
||||
delete from mysql.user where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
|
||||
delete from mysql.db where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
|
||||
|
@ -15,6 +15,6 @@ DROP USER mysqltest_1@'127.0.0.1/255.255.255.255';
|
||||
connect (con1, 127.0.0.1, root, , test, $MASTER_MYPORT, );
|
||||
--replace_column 1 #
|
||||
select user();
|
||||
--replace_column 1 # 6 # 3 #
|
||||
--replace_column 1 <id> 3 <host> 5 <command> 6 <time> 7 <state> 8 <info>
|
||||
show processlist;
|
||||
connection default;
|
||||
|
@ -52,6 +52,9 @@ while ($1)
|
||||
--enable_query_log
|
||||
select count(*) from t1;
|
||||
select count(*) from t2;
|
||||
--disable_warnings
|
||||
drop procedure if exists p1;
|
||||
--enable_warnings
|
||||
delimiter |;
|
||||
create procedure p1()
|
||||
begin
|
||||
|
124
mysql-test/t/sp-destruct.test
Normal file
124
mysql-test/t/sp-destruct.test
Normal file
@ -0,0 +1,124 @@
|
||||
#
|
||||
# Destructive stored procedure tests
|
||||
#
|
||||
# We do horrible things to the mysql.proc table here, so any unexpected
|
||||
# failures here might leave it in an undetermined state.
|
||||
#
|
||||
# In the case of trouble you might want to skip this.
|
||||
#
|
||||
|
||||
# We're using --system things that probably doesn't work on Windows.
|
||||
--source include/not_windows.inc
|
||||
|
||||
# Backup proc table
|
||||
--system rm -rf var/master-data/mysql/backup
|
||||
--system mkdir var/master-data/mysql/backup
|
||||
--system cp var/master-data/mysql/proc.* var/master-data/mysql/backup/
|
||||
|
||||
use test;
|
||||
|
||||
--disable_warnings
|
||||
drop procedure if exists bug14233;
|
||||
drop function if exists bug14233;
|
||||
drop table if exists t1;
|
||||
drop view if exists v1;
|
||||
--enable_warnings
|
||||
|
||||
create procedure bug14233()
|
||||
set @x = 42;
|
||||
|
||||
create function bug14233_f() returns int
|
||||
return 42;
|
||||
|
||||
create table t1 (id int);
|
||||
create trigger t1_ai after insert on t1 for each row call bug14233();
|
||||
|
||||
# Unsupported tampering with the mysql.proc definition
|
||||
alter table mysql.proc drop type;
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
call bug14233();
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
create view v1 as select bug14233_f();
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
insert into t1 values (0);
|
||||
|
||||
flush table mysql.proc;
|
||||
|
||||
# Thrashing the .frm file
|
||||
--system echo 'saljdlfa' > var/master-data/mysql/proc.frm
|
||||
--error ER_NOT_FORM_FILE
|
||||
call bug14233();
|
||||
--error ER_NOT_FORM_FILE
|
||||
create view v1 as select bug14233_f();
|
||||
--error ER_NOT_FORM_FILE
|
||||
insert into t1 values (0);
|
||||
|
||||
|
||||
flush table mysql.proc;
|
||||
|
||||
# Drop the mysql.proc table
|
||||
--system rm var/master-data/mysql/proc.*
|
||||
--error ER_NO_SUCH_TABLE
|
||||
call bug14233();
|
||||
--error ER_NO_SUCH_TABLE
|
||||
create view v1 as select bug14233_f();
|
||||
--error ER_NO_SUCH_TABLE
|
||||
insert into t1 values (0);
|
||||
|
||||
# Restore mysql.proc
|
||||
--system mv var/master-data/mysql/backup/* var/master-data/mysql/
|
||||
--system rmdir var/master-data/mysql/backup
|
||||
|
||||
flush table mysql.proc;
|
||||
flush privileges;
|
||||
|
||||
delete from mysql.proc where name like 'bug14233%';
|
||||
|
||||
# Unsupported editing of mysql.proc, circumventing checks in "create ..."
|
||||
insert into mysql.proc
|
||||
(
|
||||
db, name, type, specific_name, language, sql_data_access, is_deterministic,
|
||||
security_type, param_list, returns, body, definer, created, modified,
|
||||
sql_mode, comment
|
||||
)
|
||||
values
|
||||
(
|
||||
'test', 'bug14233_1', 'FUNCTION', 'bug14233_1', 'SQL', 'READS_SQL_DATA', 'NO',
|
||||
'DEFINER', '', 'int(10)',
|
||||
'select count(*) from mysql.user',
|
||||
'root@localhost', NOW() , '0000-00-00 00:00:00', '', ''
|
||||
),
|
||||
(
|
||||
'test', 'bug14233_2', 'FUNCTION', 'bug14233_2', 'SQL', 'READS_SQL_DATA', 'NO',
|
||||
'DEFINER', '', 'int(10)',
|
||||
'begin declare x int; select count(*) into x from mysql.user; end',
|
||||
'root@localhost', NOW() , '0000-00-00 00:00:00', '', ''
|
||||
),
|
||||
(
|
||||
'test', 'bug14233_3', 'PROCEDURE', 'bug14233_3', 'SQL', 'READS_SQL_DATA','NO',
|
||||
'DEFINER', '', '',
|
||||
'alksj wpsj sa ^#!@ ',
|
||||
'root@localhost', NOW() , '0000-00-00 00:00:00', '', ''
|
||||
);
|
||||
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
select bug14233_1();
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
create view v1 as select bug14233_1();
|
||||
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
select bug14233_2();
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
create view v1 as select bug14233_2();
|
||||
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
call bug14233_3();
|
||||
drop trigger t1_ai;
|
||||
create trigger t1_ai after insert on t1 for each row call bug14233_3();
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
insert into t1 values (0);
|
||||
|
||||
# Clean-up
|
||||
delete from mysql.proc where name like 'bug14233%';
|
||||
drop trigger t1_ai;
|
||||
drop table t1;
|
@ -1,4 +1,10 @@
|
||||
delimiter |;
|
||||
|
||||
--disable_warnings
|
||||
drop procedure if exists p1|
|
||||
drop procedure if exists p2|
|
||||
--enable_warnings
|
||||
|
||||
######################################################################
|
||||
# Test Dynamic SQL in stored procedures. #############################
|
||||
######################################################################
|
||||
|
@ -1095,7 +1095,7 @@ delimiter |;
|
||||
--disable_warnings
|
||||
DROP FUNCTION IF EXISTS bug12953|
|
||||
--enable_warnings
|
||||
--error ER_SP_BADSTATEMENT
|
||||
--error ER_SP_NO_RETSET
|
||||
CREATE FUNCTION bug12953() RETURNS INT
|
||||
BEGIN
|
||||
OPTIMIZE TABLE t1;
|
||||
@ -1410,7 +1410,6 @@ delimiter ;|
|
||||
|
||||
# BUG#12329: "Bogus error msg when executing PS with stored procedure after
|
||||
# SP was re-created". See also test for related bug#13399 in trigger.test
|
||||
--disable_warnings
|
||||
drop function if exists bug12329;
|
||||
--enable_warnings
|
||||
create table t1 as select 1 a;
|
||||
@ -1518,6 +1517,105 @@ show procedure status;
|
||||
drop database mysqltest2;
|
||||
use test;
|
||||
|
||||
#
|
||||
# Bug#13012 "SP: REPAIR/BACKUP/RESTORE TABLE crashes the server"
|
||||
#
|
||||
delimiter |;
|
||||
--disable_warnings
|
||||
DROP FUNCTION IF EXISTS bug13012|
|
||||
--enable_warnings
|
||||
--error ER_SP_NO_RETSET
|
||||
CREATE FUNCTION bug13012() RETURNS INT
|
||||
BEGIN
|
||||
REPAIR TABLE t1;
|
||||
RETURN 1;
|
||||
END|
|
||||
--error ER_SP_NO_RETSET
|
||||
CREATE FUNCTION bug13012() RETURNS INT
|
||||
BEGIN
|
||||
BACKUP TABLE t1 TO '/tmp';
|
||||
RETURN 1;
|
||||
END|
|
||||
--error ER_SP_NO_RETSET
|
||||
CREATE FUNCTION bug13012() RETURNS INT
|
||||
BEGIN
|
||||
RESTORE TABLE t1 FROM '/tmp';
|
||||
RETURN 1;
|
||||
END|
|
||||
create table t1 (a int)|
|
||||
CREATE PROCEDURE bug13012_1() REPAIR TABLE t1|
|
||||
CREATE FUNCTION bug13012_2() RETURNS INT
|
||||
BEGIN
|
||||
CALL bug13012_1();
|
||||
RETURN 1;
|
||||
END|
|
||||
--error ER_SP_NO_RETSET
|
||||
SELECT bug13012_2()|
|
||||
drop table t1|
|
||||
drop procedure bug13012_1|
|
||||
drop function bug13012_2|
|
||||
delimiter ;|
|
||||
|
||||
# BUG#11555 "Stored procedures: current SP tables locking make
|
||||
# impossible view security". We should not expose names of tables
|
||||
# which are implicitly used by view (via stored routines/triggers).
|
||||
#
|
||||
# Note that SQL standard assumes that you simply won't be able drop table
|
||||
# and leave some objects (routines/views/triggers) which were depending on
|
||||
# it. Such objects should be dropped in advance (by default) or will be
|
||||
# dropped simultaneously with table (DROP TABLE with CASCADE clause).
|
||||
# So these tests probably should go away once we will implement standard
|
||||
# behavior.
|
||||
--disable_warnings
|
||||
drop function if exists bug11555_1;
|
||||
drop function if exists bug11555_2;
|
||||
drop view if exists v1, v2, v3, v4;
|
||||
--enable_warnings
|
||||
create function bug11555_1() returns int return (select max(i) from t1);
|
||||
create function bug11555_2() returns int return bug11555_1();
|
||||
# It is OK to report name of implicitly used table which is missing
|
||||
# when we create view.
|
||||
--error ER_NO_SUCH_TABLE
|
||||
create view v1 as select bug11555_1();
|
||||
--error ER_NO_SUCH_TABLE
|
||||
create view v2 as select bug11555_2();
|
||||
# But we should hide name of missing implicitly used table when we use view
|
||||
create table t1 (i int);
|
||||
create view v1 as select bug11555_1();
|
||||
create view v2 as select bug11555_2();
|
||||
create view v3 as select * from v1;
|
||||
drop table t1;
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v1;
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v2;
|
||||
--error ER_VIEW_INVALID
|
||||
select * from v3;
|
||||
# Note that creation of view which depends on broken view is yet
|
||||
# another form of view usage.
|
||||
--error ER_VIEW_INVALID
|
||||
create view v4 as select * from v1;
|
||||
drop view v1, v2, v3;
|
||||
# We also should hide details about broken triggers which are
|
||||
# invoked for view.
|
||||
drop function bug11555_1;
|
||||
drop function bug11555_2;
|
||||
create table t1 (i int);
|
||||
create table t2 (i int);
|
||||
create trigger t1_ai after insert on t1 for each row insert into t2 values (new.i);
|
||||
create view v1 as select * from t1;
|
||||
drop table t2;
|
||||
--error ER_VIEW_INVALID
|
||||
insert into v1 values (1);
|
||||
drop trigger t1_ai;
|
||||
create function bug11555_1() returns int return (select max(i) from t2);
|
||||
create trigger t1_ai after insert on t1 for each row set @a:=bug11555_1();
|
||||
--error ER_VIEW_INVALID
|
||||
insert into v1 values (2);
|
||||
drop function bug11555_1;
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
|
||||
|
||||
# BUG#NNNN: New bug synopsis
|
||||
#
|
||||
|
1273
mysql-test/t/sp-vars.test
Normal file
1273
mysql-test/t/sp-vars.test
Normal file
File diff suppressed because it is too large
Load Diff
@ -13,6 +13,8 @@
|
||||
# Tests that require multiple connections, except security/privilege tests,
|
||||
# go to sp-thread.
|
||||
# Tests that uses 'goto' to into sp-goto.test (currently disabled)
|
||||
# Tests that destroys system tables (e.g. mysql.proc) for error testing
|
||||
# go to sp-destruct.
|
||||
|
||||
use test;
|
||||
|
||||
@ -365,6 +367,7 @@ create function sub3(i int) returns int
|
||||
|
||||
call sub1("sub1a", (select 7))|
|
||||
call sub1("sub1b", (select max(i) from t2))|
|
||||
--error ER_OPERAND_COLUMNS
|
||||
call sub1("sub1c", (select i,d from t2 limit 1))|
|
||||
call sub1("sub1d", (select 1 from (select 1) a))|
|
||||
call sub2("sub2")|
|
||||
@ -4795,12 +4798,12 @@ begin
|
||||
declare continue handler for sqlexception select 'boo' as 'Handler';
|
||||
|
||||
begin
|
||||
declare v int default x;
|
||||
declare v int default undefined_var;
|
||||
|
||||
if v = 1 then
|
||||
select 1;
|
||||
else
|
||||
select 2;
|
||||
select v, isnull(v);
|
||||
end if;
|
||||
end;
|
||||
end|
|
||||
@ -4809,12 +4812,14 @@ create procedure bug14643_2()
|
||||
begin
|
||||
declare continue handler for sqlexception select 'boo' as 'Handler';
|
||||
|
||||
case x
|
||||
case undefined_var
|
||||
when 1 then
|
||||
select 1;
|
||||
else
|
||||
select 2;
|
||||
end case;
|
||||
|
||||
select undefined_var;
|
||||
end|
|
||||
|
||||
call bug14643_1()|
|
||||
@ -4908,23 +4913,25 @@ drop procedure bug14376|
|
||||
# variable declarations. In MySQL 5.0 it's vice versa.
|
||||
#
|
||||
|
||||
drop procedure if exists p1|
|
||||
drop table if exists t1|
|
||||
create table t1 (a varchar(255))|
|
||||
insert into t1 (a) values ("a - table column")|
|
||||
create procedure p1(a varchar(255))
|
||||
--disable_warnings
|
||||
drop procedure if exists bug5967|
|
||||
drop table if exists t3|
|
||||
--enable_warnings
|
||||
create table t3 (a varchar(255))|
|
||||
insert into t3 (a) values ("a - table column")|
|
||||
create procedure bug5967(a varchar(255))
|
||||
begin
|
||||
declare i varchar(255);
|
||||
declare c cursor for select a from t1;
|
||||
declare c cursor for select a from t3;
|
||||
select a;
|
||||
select a from t1 into i;
|
||||
select a from t3 into i;
|
||||
select i as 'Parameter takes precedence over table column'; open c;
|
||||
fetch c into i;
|
||||
close c;
|
||||
select i as 'Parameter takes precedence over table column in cursors';
|
||||
begin
|
||||
declare a varchar(255) default 'a - local variable';
|
||||
declare c1 cursor for select a from t1;
|
||||
declare c1 cursor for select a from t3;
|
||||
select a as 'A local variable takes precedence over parameter';
|
||||
open c1;
|
||||
fetch c1 into i;
|
||||
@ -4932,9 +4939,9 @@ begin
|
||||
select i as 'A local variable takes precedence over parameter in cursors';
|
||||
begin
|
||||
declare a varchar(255) default 'a - local variable in a nested compound statement';
|
||||
declare c2 cursor for select a from t1;
|
||||
declare c2 cursor for select a from t3;
|
||||
select a as 'A local variable in a nested compound statement takes precedence over a local variable in the outer statement';
|
||||
select a from t1 into i;
|
||||
select a from t3 into i;
|
||||
select i as 'A local variable in a nested compound statement takes precedence over table column';
|
||||
open c2;
|
||||
fetch c2 into i;
|
||||
@ -4943,7 +4950,133 @@ begin
|
||||
end;
|
||||
end;
|
||||
end|
|
||||
call p1("a - stored procedure parameter")|
|
||||
call bug5967("a - stored procedure parameter")|
|
||||
drop procedure bug5967|
|
||||
|
||||
#
|
||||
# Bug#13012 "SP: REPAIR/BACKUP/RESTORE TABLE crashes the server"
|
||||
#
|
||||
--disable_warnings
|
||||
drop procedure if exists bug13012|
|
||||
--enable_warnings
|
||||
create procedure bug13012()
|
||||
BEGIN
|
||||
REPAIR TABLE t1;
|
||||
BACKUP TABLE t1 to '../tmp';
|
||||
DROP TABLE t1;
|
||||
RESTORE TABLE t1 FROM '../tmp';
|
||||
END|
|
||||
call bug13012()|
|
||||
drop procedure bug13012|
|
||||
create view v1 as select * from t1|
|
||||
create procedure bug13012()
|
||||
BEGIN
|
||||
REPAIR TABLE t1,t2,t3,v1;
|
||||
OPTIMIZE TABLE t1,t2,t3,v1;
|
||||
ANALYZE TABLE t1,t2,t3,v1;
|
||||
END|
|
||||
call bug13012()|
|
||||
call bug13012()|
|
||||
call bug13012()|
|
||||
drop procedure bug13012|
|
||||
drop view v1;
|
||||
select * from t1|
|
||||
|
||||
#
|
||||
# A test case for Bug#15392 "Server crashes during prepared statement
|
||||
# execute": make sure that stored procedure check for error conditions
|
||||
# properly and do not continue execution if an error has been set.
|
||||
#
|
||||
# It's necessary to use several DBs because in the original code
|
||||
# the successful return of mysql_change_db overrode the error from
|
||||
# execution.
|
||||
drop schema if exists mysqltest1|
|
||||
drop schema if exists mysqltest2|
|
||||
drop schema if exists mysqltest3|
|
||||
create schema mysqltest1|
|
||||
create schema mysqltest2|
|
||||
create schema mysqltest3|
|
||||
use mysqltest3|
|
||||
|
||||
create procedure mysqltest1.p1 (out prequestid varchar(100))
|
||||
begin
|
||||
call mysqltest2.p2('call mysqltest3.p3(1, 2)');
|
||||
end|
|
||||
|
||||
create procedure mysqltest2.p2(in psql text)
|
||||
begin
|
||||
declare lsql text;
|
||||
set @lsql= psql;
|
||||
prepare lstatement from @lsql;
|
||||
execute lstatement;
|
||||
deallocate prepare lstatement;
|
||||
end|
|
||||
|
||||
create procedure mysqltest3.p3(in p1 int)
|
||||
begin
|
||||
select p1;
|
||||
end|
|
||||
|
||||
--error ER_SP_WRONG_NO_OF_ARGS
|
||||
call mysqltest1.p1(@rs)|
|
||||
--error ER_SP_WRONG_NO_OF_ARGS
|
||||
call mysqltest1.p1(@rs)|
|
||||
--error ER_SP_WRONG_NO_OF_ARGS
|
||||
call mysqltest1.p1(@rs)|
|
||||
drop schema if exists mysqltest1|
|
||||
drop schema if exists mysqltest2|
|
||||
drop schema if exists mysqltest3|
|
||||
use test|
|
||||
|
||||
#
|
||||
# Bug#15441 "Running SP causes Server to Crash": check that an SP variable
|
||||
# can not be used in VALUES() function.
|
||||
#
|
||||
--disable_warnings
|
||||
drop table if exists t3|
|
||||
drop procedure if exists bug15441|
|
||||
--enable_warnings
|
||||
create table t3 (id int not null primary key, county varchar(25))|
|
||||
insert into t3 (id, county) values (1, 'York')|
|
||||
|
||||
# First check that a stored procedure that refers to a parameter in VALUES()
|
||||
# function won't parse.
|
||||
|
||||
create procedure bug15441(c varchar(25))
|
||||
begin
|
||||
update t3 set id=2, county=values(c);
|
||||
end|
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
call bug15441('county')|
|
||||
drop procedure bug15441|
|
||||
|
||||
# Now check the case when there is an ambiguity between column names
|
||||
# and stored procedure parameters: the parser shall resolve the argument
|
||||
# of VALUES() function to the column name.
|
||||
|
||||
# It's hard to deduce what county refers to in every case (INSERT statement):
|
||||
# 1st county refers to the column
|
||||
# 2nd county refers to the procedure parameter
|
||||
# 3d and 4th county refers to the column, again, but
|
||||
# for 4th county it has the value of SP parameter
|
||||
|
||||
# In UPDATE statement, just check that values() function returns NULL for
|
||||
# non- INSERT...UPDATE statements, as stated in the manual.
|
||||
|
||||
create procedure bug15441(county varchar(25))
|
||||
begin
|
||||
declare c varchar(25) default "hello";
|
||||
|
||||
insert into t3 (id, county) values (1, county)
|
||||
on duplicate key update county= values(county);
|
||||
select * from t3;
|
||||
|
||||
update t3 set id=2, county=values(id);
|
||||
select * from t3;
|
||||
end|
|
||||
call bug15441('Yale')|
|
||||
drop table t3|
|
||||
drop procedure bug15441|
|
||||
|
||||
#
|
||||
# BUG#NNNN: New bug synopsis
|
||||
|
@ -68,3 +68,27 @@ drop table t1;
|
||||
|
||||
# check that cast appends trailing zeros
|
||||
select hex(cast(0x10 as binary(2)));
|
||||
|
||||
#
|
||||
# Bug #14299: BINARY space truncation should cause warning or error
|
||||
#
|
||||
create table t1 (b binary(2), vb varbinary(2));
|
||||
insert into t1 values(0x4120, 0x4120);
|
||||
insert into t1 values(0x412020, 0x412020);
|
||||
drop table t1;
|
||||
create table t1 (c char(2), vc varchar(2));
|
||||
insert into t1 values(0x4120, 0x4120);
|
||||
insert into t1 values(0x412020, 0x412020);
|
||||
drop table t1;
|
||||
|
||||
set @old_sql_mode= @@sql_mode, sql_mode= 'traditional';
|
||||
create table t1 (b binary(2), vb varbinary(2));
|
||||
insert into t1 values(0x4120, 0x4120);
|
||||
--error ER_DATA_TOO_LONG
|
||||
insert into t1 values(0x412020, NULL);
|
||||
--error ER_DATA_TOO_LONG
|
||||
insert into t1 values(NULL, 0x412020);
|
||||
drop table t1;
|
||||
set @@sql_mode= @old_sql_mode;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -12,12 +12,31 @@ drop procedure if exists sp1;
|
||||
|
||||
delimiter //;
|
||||
#
|
||||
create procedure sp1 () begin
|
||||
declare v1, v2, v3, v4 decimal(16,12); declare v5 int;
|
||||
set v1 = 1; set v2 = 2; set v3 = 1000000000000; set v4 = 2000000000000; set v5 = 0;
|
||||
while v5 < 100000 do
|
||||
set v1 = v1 + 0.000000000001; set v2 = v2 - 0.000000000001; set v3 = v3 + 1; set v4 = v4 - 1; set v5 = v5 + 1;
|
||||
end while; select v1, v2, v3 * 0.000000000001, v4 * 0.000000000001; end;//
|
||||
CREATE PROCEDURE sp1()
|
||||
BEGIN
|
||||
DECLARE v1, v2, v3, v4 DECIMAL(28,12);
|
||||
DECLARE v3_2, v4_2 DECIMAL(28, 12);
|
||||
DECLARE counter INT;
|
||||
|
||||
SET v1 = 1;
|
||||
SET v2 = 2;
|
||||
SET v3 = 1000000000000;
|
||||
SET v4 = 2000000000000;
|
||||
SET counter = 0;
|
||||
|
||||
WHILE counter < 100000 DO
|
||||
SET v1 = v1 + 0.000000000001;
|
||||
SET v2 = v2 - 0.000000000001;
|
||||
SET v3 = v3 + 1;
|
||||
SET v4 = v4 - 1;
|
||||
SET counter = counter + 1;
|
||||
END WHILE;
|
||||
|
||||
SET v3_2 = v3 * 0.000000000001;
|
||||
SET v4_2 = v4 * 0.000000000001;
|
||||
|
||||
SELECT v1, v2, v3, v3_2, v4, v4_2;
|
||||
END//
|
||||
#
|
||||
call sp1()//
|
||||
#-- should return
|
||||
|
@ -1744,7 +1744,6 @@ drop function f1;
|
||||
CHECK TABLE v1, v2, v3, v4, v5, v6;
|
||||
create function f1 () returns int return (select max(col1) from t1);
|
||||
DROP TABLE t1;
|
||||
# following will show underlying table until BUG#11555 fix
|
||||
CHECK TABLE v1, v2, v3, v4, v5, v6;
|
||||
drop function f1;
|
||||
drop function f2;
|
||||
|
Reference in New Issue
Block a user