mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into bodhi.local:/opt/local/work/mysql-5.0-runtime-merge sql/item_sum.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_delete.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_select.cc: Auto merged sql/sql_view.cc: Auto merged
This commit is contained in:
@ -119,4 +119,13 @@ 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 ;|
|
||||
|
@ -1268,6 +1268,9 @@ sub environment_setup () {
|
||||
$ENV{'IM_PATH_PID'}= $instance_manager->{path_pid};
|
||||
$ENV{'IM_PATH_ANGEL_PID'}= $instance_manager->{path_angel_pid};
|
||||
$ENV{'IM_PORT'}= $instance_manager->{port};
|
||||
$ENV{'IM_PATH_SOCK'}= $instance_manager->{path_sock};
|
||||
$ENV{'IM_USERNAME'}= $instance_manager->{admin_login};
|
||||
$ENV{'IM_PASSWORD'}= $instance_manager->{admin_password};
|
||||
|
||||
$ENV{'IM_MYSQLD1_SOCK'}= $instance_manager->{instances}->[0]->{path_sock};
|
||||
$ENV{'IM_MYSQLD1_PORT'}= $instance_manager->{instances}->[0]->{port};
|
||||
@ -1276,6 +1279,9 @@ sub environment_setup () {
|
||||
$ENV{'IM_MYSQLD2_PORT'}= $instance_manager->{instances}->[1]->{port};
|
||||
$ENV{'IM_MYSQLD2_PATH_PID'}=$instance_manager->{instances}->[1]->{path_pid};
|
||||
|
||||
$ENV{'EXE_MYSQL'}= $exe_mysql;
|
||||
|
||||
|
||||
$ENV{MTR_BUILD_THREAD}= 0 unless $ENV{MTR_BUILD_THREAD}; # Set if not set
|
||||
|
||||
# We are nice and report a bit about our settings
|
||||
|
@ -8,6 +8,7 @@ mysqld2 offline
|
||||
Killing the process...
|
||||
Sleeping...
|
||||
Success: the process was restarted.
|
||||
Success: server is ready to accept connection on socket.
|
||||
|
||||
--------------------------------------------------------------------
|
||||
-- Test for BUG#12751
|
||||
|
@ -295,6 +295,22 @@ b
|
||||
c
|
||||
d
|
||||
drop table t1,t4;
|
||||
DROP TABLE IF EXISTS t2, t1;
|
||||
CREATE TABLE t1 (i INT NOT NULL PRIMARY KEY) ENGINE= InnoDB;
|
||||
CREATE TABLE t2 (
|
||||
i INT NOT NULL,
|
||||
FOREIGN KEY (i) REFERENCES t1 (i) ON DELETE NO ACTION
|
||||
) ENGINE= InnoDB;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (1);
|
||||
DELETE IGNORE FROM t1 WHERE i = 1;
|
||||
Warnings:
|
||||
Error 1451 Cannot delete or update a parent row: a foreign key constraint fails (`test/t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`i`) REFERENCES `t1` (`i`) ON DELETE NO ACTION)
|
||||
SELECT * FROM t1, t2;
|
||||
i i
|
||||
1 1
|
||||
DROP TABLE t2, t1;
|
||||
End of 4.1 tests.
|
||||
create table t1 (
|
||||
a varchar(30), b varchar(30), primary key(a), key(b)
|
||||
) engine=innodb;
|
||||
|
@ -956,7 +956,103 @@ GROUP_CONCAT(Track SEPARATOR ', ')
|
||||
CAD
|
||||
DEALLOCATE PREPARE STMT;
|
||||
DROP TABLE t1;
|
||||
End of 4.1 tests
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (i INT, INDEX(i));
|
||||
INSERT INTO t1 VALUES (1);
|
||||
PREPARE stmt FROM "SELECT (COUNT(i) = 1), COUNT(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(COUNT(i) = 1) COUNT(i)
|
||||
0 0
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
(COUNT(i) = 1) COUNT(i)
|
||||
1 1
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(COUNT(i) = 1) COUNT(i)
|
||||
0 0
|
||||
PREPARE stmt FROM "SELECT (AVG(i) = 1), AVG(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(AVG(i) = 1) AVG(i)
|
||||
NULL NULL
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
(AVG(i) = 1) AVG(i)
|
||||
1 1.0000
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(AVG(i) = 1) AVG(i)
|
||||
NULL NULL
|
||||
PREPARE stmt FROM "SELECT (VARIANCE(i) = 1), VARIANCE(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(VARIANCE(i) = 1) VARIANCE(i)
|
||||
NULL NULL
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
(VARIANCE(i) = 1) VARIANCE(i)
|
||||
0 0.0000
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(VARIANCE(i) = 1) VARIANCE(i)
|
||||
NULL NULL
|
||||
PREPARE stmt FROM "SELECT (STDDEV(i) = 1), STDDEV(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(STDDEV(i) = 1) STDDEV(i)
|
||||
NULL NULL
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
(STDDEV(i) = 1) STDDEV(i)
|
||||
0 0.0000
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(STDDEV(i) = 1) STDDEV(i)
|
||||
NULL NULL
|
||||
PREPARE stmt FROM "SELECT (BIT_OR(i) = 1), BIT_OR(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(BIT_OR(i) = 1) BIT_OR(i)
|
||||
0 0
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
(BIT_OR(i) = 1) BIT_OR(i)
|
||||
1 1
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(BIT_OR(i) = 1) BIT_OR(i)
|
||||
0 0
|
||||
PREPARE stmt FROM "SELECT (BIT_AND(i) = 1), BIT_AND(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(BIT_AND(i) = 1) BIT_AND(i)
|
||||
0 18446744073709551615
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
(BIT_AND(i) = 1) BIT_AND(i)
|
||||
1 1
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(BIT_AND(i) = 1) BIT_AND(i)
|
||||
0 18446744073709551615
|
||||
PREPARE stmt FROM "SELECT (BIT_XOR(i) = 1), BIT_XOR(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(BIT_XOR(i) = 1) BIT_XOR(i)
|
||||
0 0
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
(BIT_XOR(i) = 1) BIT_XOR(i)
|
||||
1 1
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
(BIT_XOR(i) = 1) BIT_XOR(i)
|
||||
0 0
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP TABLE t1;
|
||||
End of 4.1 tests.
|
||||
create table t1 (a varchar(20));
|
||||
insert into t1 values ('foo');
|
||||
prepare stmt FROM 'SELECT char_length (a) FROM t1';
|
||||
@ -1379,4 +1475,5 @@ i
|
||||
1
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP TABLE t1, t2;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
End of 5.0 tests.
|
||||
|
@ -1226,3 +1226,27 @@ END;
|
||||
ERROR 42000: 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 'IF NOT EXISTS bug14702()
|
||||
BEGIN
|
||||
END' at line 1
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (i INT);
|
||||
CREATE PROCEDURE bug20953() CREATE VIEW v AS SELECT 1 INTO @a;
|
||||
ERROR HY000: View's SELECT contains a 'INTO' clause
|
||||
CREATE PROCEDURE bug20953() CREATE VIEW v AS SELECT 1 INTO DUMPFILE "file";
|
||||
ERROR HY000: View's SELECT contains a 'INTO' clause
|
||||
CREATE PROCEDURE bug20953() CREATE VIEW v AS SELECT 1 INTO OUTFILE "file";
|
||||
ERROR HY000: View's SELECT contains a 'INTO' clause
|
||||
CREATE PROCEDURE bug20953()
|
||||
CREATE VIEW v AS SELECT i FROM t1 PROCEDURE ANALYSE();
|
||||
ERROR HY000: View's SELECT contains a 'PROCEDURE' clause
|
||||
CREATE PROCEDURE bug20953() CREATE VIEW v AS SELECT 1 FROM (SELECT 1) AS d1;
|
||||
ERROR HY000: View's SELECT contains a subquery in the FROM clause
|
||||
CREATE PROCEDURE bug20953(i INT) CREATE VIEW v AS SELECT i;
|
||||
ERROR HY000: View's SELECT contains a variable or parameter
|
||||
CREATE PROCEDURE bug20953()
|
||||
BEGIN
|
||||
DECLARE i INT;
|
||||
CREATE VIEW v AS SELECT i;
|
||||
END |
|
||||
ERROR HY000: View's SELECT contains a variable or parameter
|
||||
PREPARE stmt FROM "CREATE VIEW v AS SELECT ?";
|
||||
ERROR HY000: View's SELECT contains a variable or parameter
|
||||
DROP TABLE t1;
|
||||
|
@ -4,6 +4,7 @@ DROP FUNCTION IF EXISTS sp_vars_check_ret1;
|
||||
DROP FUNCTION IF EXISTS sp_vars_check_ret2;
|
||||
DROP FUNCTION IF EXISTS sp_vars_check_ret3;
|
||||
DROP FUNCTION IF EXISTS sp_vars_check_ret4;
|
||||
DROP FUNCTION IF EXISTS sp_vars_div_zero;
|
||||
SET @@sql_mode = 'ansi';
|
||||
CREATE PROCEDURE sp_vars_check_dflt()
|
||||
BEGIN
|
||||
@ -88,6 +89,12 @@ 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|
|
||||
|
||||
---------------------------------------------------------------
|
||||
Calling the routines, created in ANSI mode.
|
||||
@ -172,6 +179,9 @@ sp_vars_check_ret4()
|
||||
154.12
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'sp_vars_check_ret4()' at row 1
|
||||
SELECT sp_vars_div_zero();
|
||||
sp_vars_div_zero()
|
||||
NULL
|
||||
SET @@sql_mode = 'traditional';
|
||||
|
||||
---------------------------------------------------------------
|
||||
@ -257,12 +267,16 @@ sp_vars_check_ret4()
|
||||
154.12
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'sp_vars_check_ret4()' at row 1
|
||||
SELECT sp_vars_div_zero();
|
||||
sp_vars_div_zero()
|
||||
NULL
|
||||
DROP PROCEDURE sp_vars_check_dflt;
|
||||
DROP PROCEDURE sp_vars_check_assignment;
|
||||
DROP FUNCTION sp_vars_check_ret1;
|
||||
DROP FUNCTION sp_vars_check_ret2;
|
||||
DROP FUNCTION sp_vars_check_ret3;
|
||||
DROP FUNCTION sp_vars_check_ret4;
|
||||
DROP FUNCTION sp_vars_div_zero;
|
||||
CREATE PROCEDURE sp_vars_check_dflt()
|
||||
BEGIN
|
||||
DECLARE v1 TINYINT DEFAULT 1e200;
|
||||
@ -346,6 +360,12 @@ 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|
|
||||
|
||||
---------------------------------------------------------------
|
||||
Calling the routines, created in TRADITIONAL mode.
|
||||
@ -366,6 +386,8 @@ sp_vars_check_ret4()
|
||||
154.12
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'sp_vars_check_ret4()' at row 1
|
||||
SELECT sp_vars_div_zero();
|
||||
ERROR 22012: Division by 0
|
||||
SET @@sql_mode = 'ansi';
|
||||
DROP PROCEDURE sp_vars_check_dflt;
|
||||
DROP PROCEDURE sp_vars_check_assignment;
|
||||
@ -373,6 +395,7 @@ DROP FUNCTION sp_vars_check_ret1;
|
||||
DROP FUNCTION sp_vars_check_ret2;
|
||||
DROP FUNCTION sp_vars_check_ret3;
|
||||
DROP FUNCTION sp_vars_check_ret4;
|
||||
DROP FUNCTION sp_vars_div_zero;
|
||||
|
||||
---------------------------------------------------------------
|
||||
BIT data type tests
|
||||
|
@ -5470,5 +5470,161 @@ CAD
|
||||
CHF
|
||||
DROP FUNCTION bug21493|
|
||||
DROP TABLE t3,t4|
|
||||
drop function if exists func_20028_a|
|
||||
drop function if exists func_20028_b|
|
||||
drop function if exists func_20028_c|
|
||||
drop procedure if exists proc_20028_a|
|
||||
drop procedure if exists proc_20028_b|
|
||||
drop procedure if exists proc_20028_c|
|
||||
drop table if exists table_20028|
|
||||
create table table_20028 (i int)|
|
||||
SET @save_sql_mode=@@sql_mode|
|
||||
SET sql_mode=''|
|
||||
create function func_20028_a() returns integer
|
||||
begin
|
||||
declare temp integer;
|
||||
select i into temp from table_20028 limit 1;
|
||||
return ifnull(temp, 0);
|
||||
end|
|
||||
create function func_20028_b() returns integer
|
||||
begin
|
||||
return func_20028_a();
|
||||
end|
|
||||
create function func_20028_c() returns integer
|
||||
begin
|
||||
declare div_zero integer;
|
||||
set SQL_MODE='TRADITIONAL';
|
||||
select 1/0 into div_zero;
|
||||
return div_zero;
|
||||
end|
|
||||
create procedure proc_20028_a()
|
||||
begin
|
||||
declare temp integer;
|
||||
select i into temp from table_20028 limit 1;
|
||||
end|
|
||||
create procedure proc_20028_b()
|
||||
begin
|
||||
call proc_20028_a();
|
||||
end|
|
||||
create procedure proc_20028_c()
|
||||
begin
|
||||
declare div_zero integer;
|
||||
set SQL_MODE='TRADITIONAL';
|
||||
select 1/0 into div_zero;
|
||||
end|
|
||||
select func_20028_a()|
|
||||
func_20028_a()
|
||||
0
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
select func_20028_b()|
|
||||
func_20028_b()
|
||||
0
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
select func_20028_c()|
|
||||
ERROR 22012: Division by 0
|
||||
call proc_20028_a()|
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
call proc_20028_b()|
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
call proc_20028_c()|
|
||||
ERROR 22012: Division by 0
|
||||
SET sql_mode='TRADITIONAL'|
|
||||
drop function func_20028_a|
|
||||
drop function func_20028_b|
|
||||
drop function func_20028_c|
|
||||
drop procedure proc_20028_a|
|
||||
drop procedure proc_20028_b|
|
||||
drop procedure proc_20028_c|
|
||||
create function func_20028_a() returns integer
|
||||
begin
|
||||
declare temp integer;
|
||||
select i into temp from table_20028 limit 1;
|
||||
return ifnull(temp, 0);
|
||||
end|
|
||||
create function func_20028_b() returns integer
|
||||
begin
|
||||
return func_20028_a();
|
||||
end|
|
||||
create function func_20028_c() returns integer
|
||||
begin
|
||||
declare div_zero integer;
|
||||
set SQL_MODE='';
|
||||
select 1/0 into div_zero;
|
||||
return div_zero;
|
||||
end|
|
||||
create procedure proc_20028_a()
|
||||
begin
|
||||
declare temp integer;
|
||||
select i into temp from table_20028 limit 1;
|
||||
end|
|
||||
create procedure proc_20028_b()
|
||||
begin
|
||||
call proc_20028_a();
|
||||
end|
|
||||
create procedure proc_20028_c()
|
||||
begin
|
||||
declare div_zero integer;
|
||||
set SQL_MODE='';
|
||||
select 1/0 into div_zero;
|
||||
end|
|
||||
select func_20028_a()|
|
||||
func_20028_a()
|
||||
0
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
select func_20028_b()|
|
||||
func_20028_b()
|
||||
0
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
select func_20028_c()|
|
||||
func_20028_c()
|
||||
NULL
|
||||
call proc_20028_a()|
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
call proc_20028_b()|
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
call proc_20028_c()|
|
||||
SET @@sql_mode=@save_sql_mode|
|
||||
drop function func_20028_a|
|
||||
drop function func_20028_b|
|
||||
drop function func_20028_c|
|
||||
drop procedure proc_20028_a|
|
||||
drop procedure proc_20028_b|
|
||||
drop procedure proc_20028_c|
|
||||
drop table table_20028|
|
||||
drop procedure if exists proc_21462_a|
|
||||
drop procedure if exists proc_21462_b|
|
||||
create procedure proc_21462_a()
|
||||
begin
|
||||
select "Called A";
|
||||
end|
|
||||
create procedure proc_21462_b(x int)
|
||||
begin
|
||||
select "Called B";
|
||||
end|
|
||||
call proc_21462_a|
|
||||
Called A
|
||||
Called A
|
||||
call proc_21462_a()|
|
||||
Called A
|
||||
Called A
|
||||
call proc_21462_a(1)|
|
||||
ERROR 42000: Incorrect number of arguments for PROCEDURE test.proc_21462_a; expected 0, got 1
|
||||
call proc_21462_b|
|
||||
ERROR 42000: Incorrect number of arguments for PROCEDURE test.proc_21462_b; expected 1, got 0
|
||||
call proc_21462_b()|
|
||||
ERROR 42000: Incorrect number of arguments for PROCEDURE test.proc_21462_b; expected 1, got 0
|
||||
call proc_21462_b(1)|
|
||||
Called B
|
||||
Called B
|
||||
drop procedure proc_21462_a|
|
||||
drop procedure proc_21462_b|
|
||||
End of 5.0 tests
|
||||
drop table t1,t2;
|
||||
|
@ -1073,10 +1073,11 @@ SELECT @x;
|
||||
NULL
|
||||
SET @x=2;
|
||||
UPDATE t1 SET i1 = @x;
|
||||
ERROR 22012: Division by 0
|
||||
Warnings:
|
||||
Error 1365 Division by 0
|
||||
SELECT @x;
|
||||
@x
|
||||
2
|
||||
NULL
|
||||
SET SQL_MODE='';
|
||||
SET @x=3;
|
||||
INSERT INTO t1 VALUES (@x);
|
||||
@ -1085,10 +1086,12 @@ SELECT @x;
|
||||
NULL
|
||||
SET @x=4;
|
||||
UPDATE t1 SET i1 = @x;
|
||||
ERROR 22012: Division by 0
|
||||
Warnings:
|
||||
Error 1365 Division by 0
|
||||
Error 1365 Division by 0
|
||||
SELECT @x;
|
||||
@x
|
||||
4
|
||||
NULL
|
||||
SET @@sql_mode=@save_sql_mode;
|
||||
DROP TRIGGER t1_ai;
|
||||
DROP TRIGGER t1_au;
|
||||
@ -1174,6 +1177,59 @@ ERROR HY000: String '1234567890abcdefghij1234567890abcdefghij1234567890abcdefghi
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
drop table if exists t1;
|
||||
drop table if exists t2;
|
||||
drop table if exists t3;
|
||||
drop table if exists t4;
|
||||
SET @save_sql_mode=@@sql_mode;
|
||||
SET sql_mode='TRADITIONAL'|
|
||||
create table t1 (id int(10) not null primary key, v int(10) )|
|
||||
create table t2 (id int(10) not null primary key, v int(10) )|
|
||||
create table t3 (id int(10) not null primary key, v int(10) )|
|
||||
create table t4 (c int)|
|
||||
create trigger t4_bi before insert on t4 for each row set @t4_bi_called:=1|
|
||||
create trigger t4_bu before update on t4 for each row set @t4_bu_called:=1|
|
||||
insert into t1 values(10, 10)|
|
||||
set @a:=1/0|
|
||||
Warnings:
|
||||
Error 1365 Division by 0
|
||||
select 1/0 from t1|
|
||||
1/0
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1365 Division by 0
|
||||
create trigger t1_bi before insert on t1 for each row set @a:=1/0|
|
||||
insert into t1 values(20, 20)|
|
||||
Warnings:
|
||||
Error 1365 Division by 0
|
||||
drop trigger t1_bi|
|
||||
create trigger t1_bi before insert on t1 for each row
|
||||
begin
|
||||
insert into t2 values (new.id, new.v);
|
||||
update t2 set v=v+1 where id= new.id;
|
||||
replace t3 values (new.id, 0);
|
||||
update t2, t3 set t2.v=new.v, t3.v=new.v where t2.id=t3.id;
|
||||
create temporary table t5 select * from t1;
|
||||
delete from t5;
|
||||
insert into t5 select * from t1;
|
||||
insert into t4 values (0);
|
||||
set @check= (select count(*) from t5);
|
||||
update t4 set c= @check;
|
||||
drop temporary table t5;
|
||||
set @a:=1/0;
|
||||
end|
|
||||
set @check=0, @t4_bi_called=0, @t4_bu_called=0|
|
||||
insert into t1 values(30, 30)|
|
||||
Warnings:
|
||||
Error 1365 Division by 0
|
||||
select @check, @t4_bi_called, @t4_bu_called|
|
||||
@check @t4_bi_called @t4_bu_called
|
||||
2 1 1
|
||||
SET @@sql_mode=@save_sql_mode;
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
drop table t4;
|
||||
drop table if exists t1;
|
||||
create table t1 (i int, j int key);
|
||||
insert into t1 values (1,1), (2,2), (3,3);
|
||||
create trigger t1_bu before update on t1 for each row
|
||||
|
@ -12,6 +12,9 @@ create table t1 (a int, b int);
|
||||
insert into t1 values (1,2), (1,3), (2,4), (2,5), (3,10);
|
||||
create view v1 (c,d) as select a,b+@@global.max_user_connections from t1;
|
||||
ERROR HY000: View's SELECT contains a variable or parameter
|
||||
create view v1 (c,d) as select a,b from t1
|
||||
where a = @@global.max_user_connections;
|
||||
ERROR HY000: View's SELECT contains a variable or parameter
|
||||
create view v1 (c) as select b+1 from t1;
|
||||
select c from v1;
|
||||
c
|
||||
@ -596,11 +599,6 @@ ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function
|
||||
drop view v1;
|
||||
create view v1 (a,a) as select 'a','a';
|
||||
ERROR 42S21: Duplicate column name 'a'
|
||||
drop procedure if exists p1;
|
||||
create procedure p1 () begin declare v int; create view v1 as select v; end;//
|
||||
call p1();
|
||||
ERROR HY000: View's SELECT contains a variable or parameter
|
||||
drop procedure p1;
|
||||
create table t1 (col1 int,col2 char(22));
|
||||
insert into t1 values(5,'Hello, world of views');
|
||||
create view v1 as select * from t1;
|
||||
@ -886,6 +884,8 @@ ERROR HY000: View's SELECT contains a 'INTO' clause
|
||||
create table t1 (a int);
|
||||
create view v1 as select a from t1 procedure analyse();
|
||||
ERROR HY000: View's SELECT contains a 'PROCEDURE' clause
|
||||
create view v1 as select 1 from (select 1) as d1;
|
||||
ERROR HY000: View's SELECT contains a subquery in the FROM clause
|
||||
drop table t1;
|
||||
create table t1 (s1 int, primary key (s1));
|
||||
create view v1 as select * from t1;
|
||||
@ -2956,6 +2956,20 @@ View Create View
|
||||
v1 CREATE ALGORITHM=MERGE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`pk` AS `pk` from (`t1` join `t2` on(((`t2`.`fk` = `t1`.`pk`) and (`t2`.`ver` = (select max(`t`.`ver`) AS `MAX(t.ver)` from `t2` `t` where (`t`.`org` = `t2`.`org`))))))
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1, t2;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
DROP VIEW IF EXISTS v1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (i INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
CREATE VIEW v1 AS SELECT MAX(i) FROM t1;
|
||||
CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW
|
||||
SET NEW.i = (SELECT * FROM v1) + 1;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
CREATE FUNCTION f1() RETURNS INT RETURN (SELECT * FROM v1);
|
||||
UPDATE t1 SET i= f1();
|
||||
DROP FUNCTION f1;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, val INT UNSIGNED NOT NULL);
|
||||
CREATE VIEW v1 AS SELECT id, val FROM t1 WHERE val >= 1 AND val <= 5 WITH CHECK OPTION;
|
||||
INSERT INTO v1 (val) VALUES (2);
|
||||
@ -2966,4 +2980,38 @@ UPDATE v1 SET val=6 WHERE id=2;
|
||||
ERROR HY000: CHECK OPTION failed 'test.v1'
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
DROP VIEW IF EXISTS v1, v2;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (i INT AUTO_INCREMENT PRIMARY KEY, j INT);
|
||||
CREATE VIEW v1 AS SELECT j FROM t1;
|
||||
CREATE VIEW v2 AS SELECT * FROM t1;
|
||||
INSERT INTO t1 (j) VALUES (1);
|
||||
SELECT LAST_INSERT_ID();
|
||||
LAST_INSERT_ID()
|
||||
1
|
||||
INSERT INTO v1 (j) VALUES (2);
|
||||
# LAST_INSERT_ID() should not change.
|
||||
SELECT LAST_INSERT_ID();
|
||||
LAST_INSERT_ID()
|
||||
1
|
||||
INSERT INTO v2 (j) VALUES (3);
|
||||
# LAST_INSERT_ID() should be updated.
|
||||
SELECT LAST_INSERT_ID();
|
||||
LAST_INSERT_ID()
|
||||
3
|
||||
INSERT INTO v1 (j) SELECT j FROM t1;
|
||||
# LAST_INSERT_ID() should not change.
|
||||
SELECT LAST_INSERT_ID();
|
||||
LAST_INSERT_ID()
|
||||
3
|
||||
SELECT * FROM t1;
|
||||
i j
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 1
|
||||
5 2
|
||||
6 3
|
||||
DROP VIEW v1, v2;
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests.
|
||||
|
@ -98,7 +98,7 @@ select ifnull(group_concat(concat(t1.id, ':', t1.name)), 'shortname') as 'withou
|
||||
select distinct ifnull(group_concat(concat(t1.id, ':', t1.name)), 'shortname') as 'with distinct: cutoff at length of shortname' from t1;
|
||||
drop table t1;
|
||||
|
||||
# check zero rows
|
||||
# check zero rows (bug#836)
|
||||
create table t1(id int);
|
||||
create table t2(id int);
|
||||
insert into t1 values(0),(1);
|
||||
|
@ -17,6 +17,12 @@
|
||||
|
||||
###########################################################################
|
||||
|
||||
# Wait for IM to start accepting connections.
|
||||
|
||||
--exec $MYSQL_TEST_DIR/t/wait_for_socket.sh $EXE_MYSQL $IM_PATH_SOCK $IM_USERNAME $IM_PASSWORD '' 30
|
||||
|
||||
###########################################################################
|
||||
|
||||
#
|
||||
# BUG#12751: Instance Manager: client hangs
|
||||
#
|
||||
|
@ -246,6 +246,36 @@ select distinct a1 from t4 where pk_col not in (1,2,3,4);
|
||||
|
||||
drop table t1,t4;
|
||||
|
||||
|
||||
#
|
||||
# BUG#18819: DELETE IGNORE hangs on foreign key parent delete
|
||||
#
|
||||
# The bug itself does not relate to InnoDB, but we have to use foreign
|
||||
# keys to reproduce it.
|
||||
#
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t2, t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (i INT NOT NULL PRIMARY KEY) ENGINE= InnoDB;
|
||||
CREATE TABLE t2 (
|
||||
i INT NOT NULL,
|
||||
FOREIGN KEY (i) REFERENCES t1 (i) ON DELETE NO ACTION
|
||||
) ENGINE= InnoDB;
|
||||
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (1);
|
||||
|
||||
DELETE IGNORE FROM t1 WHERE i = 1;
|
||||
|
||||
SELECT * FROM t1, t2;
|
||||
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
|
||||
--echo End of 4.1 tests.
|
||||
|
||||
|
||||
#
|
||||
# Bug #6142: a problem with the empty innodb table
|
||||
# (was part of group_min_max.test)
|
||||
|
@ -988,6 +988,7 @@ execute stmt;
|
||||
drop temporary table t1;
|
||||
deallocate prepare stmt;
|
||||
|
||||
|
||||
#
|
||||
# BUG#22085: Crash on the execution of a prepared statement that
|
||||
# uses an IN subquery with aggregate functions in HAVING
|
||||
@ -1040,7 +1041,82 @@ EXECUTE STMT USING @id,@id;
|
||||
DEALLOCATE PREPARE STMT;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 4.1 tests
|
||||
|
||||
#
|
||||
# BUG#21354: (COUNT(*) = 1) not working in SELECT inside prepared
|
||||
# statement
|
||||
#
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (i INT, INDEX(i));
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
PREPARE stmt FROM "SELECT (COUNT(i) = 1), COUNT(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
|
||||
PREPARE stmt FROM "SELECT (AVG(i) = 1), AVG(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
|
||||
PREPARE stmt FROM "SELECT (VARIANCE(i) = 1), VARIANCE(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
|
||||
PREPARE stmt FROM "SELECT (STDDEV(i) = 1), STDDEV(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
|
||||
PREPARE stmt FROM "SELECT (BIT_OR(i) = 1), BIT_OR(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
|
||||
PREPARE stmt FROM "SELECT (BIT_AND(i) = 1), BIT_AND(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
|
||||
PREPARE stmt FROM "SELECT (BIT_XOR(i) = 1), BIT_XOR(i) FROM t1 WHERE i = ?";
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 1;
|
||||
EXECUTE stmt USING @a;
|
||||
SET @a = 0;
|
||||
EXECUTE stmt USING @a;
|
||||
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo End of 4.1 tests.
|
||||
|
||||
|
||||
|
||||
############################# 5.0 tests start ################################
|
||||
#
|
||||
#
|
||||
@ -1437,4 +1513,24 @@ DEALLOCATE PREPARE stmt;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
|
||||
#
|
||||
# BUG#21856: Prepared Statments: crash if bad create
|
||||
#
|
||||
--disable_warnings
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
--enable_warnings
|
||||
|
||||
let $iterations= 100;
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
while ($iterations > 0)
|
||||
{
|
||||
--error ER_PARSE_ERROR
|
||||
PREPARE stmt FROM "CREATE PROCEDURE p1()";
|
||||
dec $iterations;
|
||||
}
|
||||
--enable_query_log
|
||||
--enable_result_log
|
||||
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
@ -1767,6 +1767,47 @@ BEGIN
|
||||
END;
|
||||
|
||||
|
||||
#
|
||||
# BUG#20953: create proc with a create view that uses local
|
||||
# vars/params should fail to create
|
||||
#
|
||||
# See test case for what syntax is forbidden in a view.
|
||||
#
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (i INT);
|
||||
|
||||
# We do not have to drop this procedure and view because they won't be
|
||||
# created.
|
||||
--error ER_VIEW_SELECT_CLAUSE
|
||||
CREATE PROCEDURE bug20953() CREATE VIEW v AS SELECT 1 INTO @a;
|
||||
--error ER_VIEW_SELECT_CLAUSE
|
||||
CREATE PROCEDURE bug20953() CREATE VIEW v AS SELECT 1 INTO DUMPFILE "file";
|
||||
--error ER_VIEW_SELECT_CLAUSE
|
||||
CREATE PROCEDURE bug20953() CREATE VIEW v AS SELECT 1 INTO OUTFILE "file";
|
||||
--error ER_VIEW_SELECT_CLAUSE
|
||||
CREATE PROCEDURE bug20953()
|
||||
CREATE VIEW v AS SELECT i FROM t1 PROCEDURE ANALYSE();
|
||||
--error ER_VIEW_SELECT_DERIVED
|
||||
CREATE PROCEDURE bug20953() CREATE VIEW v AS SELECT 1 FROM (SELECT 1) AS d1;
|
||||
--error ER_VIEW_SELECT_VARIABLE
|
||||
CREATE PROCEDURE bug20953(i INT) CREATE VIEW v AS SELECT i;
|
||||
delimiter |;
|
||||
--error ER_VIEW_SELECT_VARIABLE
|
||||
CREATE PROCEDURE bug20953()
|
||||
BEGIN
|
||||
DECLARE i INT;
|
||||
CREATE VIEW v AS SELECT i;
|
||||
END |
|
||||
delimiter ;|
|
||||
--error ER_VIEW_SELECT_VARIABLE
|
||||
PREPARE stmt FROM "CREATE VIEW v AS SELECT ?";
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# BUG#NNNN: New bug synopsis
|
||||
#
|
||||
|
@ -15,6 +15,7 @@ DROP FUNCTION IF EXISTS sp_vars_check_ret1;
|
||||
DROP FUNCTION IF EXISTS sp_vars_check_ret2;
|
||||
DROP FUNCTION IF EXISTS sp_vars_check_ret3;
|
||||
DROP FUNCTION IF EXISTS sp_vars_check_ret4;
|
||||
DROP FUNCTION IF EXISTS sp_vars_div_zero;
|
||||
|
||||
--enable_warnings
|
||||
|
||||
@ -49,6 +50,8 @@ SELECT sp_vars_check_ret3();
|
||||
|
||||
SELECT sp_vars_check_ret4();
|
||||
|
||||
SELECT sp_vars_div_zero();
|
||||
|
||||
# Check that changing sql_mode after creating a store procedure does not
|
||||
# matter.
|
||||
|
||||
@ -72,6 +75,8 @@ SELECT sp_vars_check_ret3();
|
||||
|
||||
SELECT sp_vars_check_ret4();
|
||||
|
||||
SELECT sp_vars_div_zero();
|
||||
|
||||
# Create the procedure in TRADITIONAL mode. Check that error will be thrown on
|
||||
# execution.
|
||||
|
||||
@ -81,6 +86,7 @@ DROP FUNCTION sp_vars_check_ret1;
|
||||
DROP FUNCTION sp_vars_check_ret2;
|
||||
DROP FUNCTION sp_vars_check_ret3;
|
||||
DROP FUNCTION sp_vars_check_ret4;
|
||||
DROP FUNCTION sp_vars_div_zero;
|
||||
|
||||
--source include/sp-vars.inc
|
||||
|
||||
@ -110,6 +116,9 @@ SELECT sp_vars_check_ret3();
|
||||
|
||||
SELECT sp_vars_check_ret4();
|
||||
|
||||
--error ER_DIVISION_BY_ZERO
|
||||
SELECT sp_vars_div_zero();
|
||||
|
||||
SET @@sql_mode = 'ansi';
|
||||
|
||||
#
|
||||
@ -122,6 +131,7 @@ DROP FUNCTION sp_vars_check_ret1;
|
||||
DROP FUNCTION sp_vars_check_ret2;
|
||||
DROP FUNCTION sp_vars_check_ret3;
|
||||
DROP FUNCTION sp_vars_check_ret4;
|
||||
DROP FUNCTION sp_vars_div_zero;
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
@ -6420,6 +6420,170 @@ SELECT bug21493(Member_ID) FROM t3|
|
||||
DROP FUNCTION bug21493|
|
||||
DROP TABLE t3,t4|
|
||||
|
||||
#
|
||||
# Bug#20028 Function with select return no data
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop function if exists func_20028_a|
|
||||
drop function if exists func_20028_b|
|
||||
drop function if exists func_20028_c|
|
||||
drop procedure if exists proc_20028_a|
|
||||
drop procedure if exists proc_20028_b|
|
||||
drop procedure if exists proc_20028_c|
|
||||
drop table if exists table_20028|
|
||||
--enable_warnings
|
||||
|
||||
create table table_20028 (i int)|
|
||||
|
||||
SET @save_sql_mode=@@sql_mode|
|
||||
|
||||
SET sql_mode=''|
|
||||
|
||||
create function func_20028_a() returns integer
|
||||
begin
|
||||
declare temp integer;
|
||||
select i into temp from table_20028 limit 1;
|
||||
return ifnull(temp, 0);
|
||||
end|
|
||||
|
||||
create function func_20028_b() returns integer
|
||||
begin
|
||||
return func_20028_a();
|
||||
end|
|
||||
|
||||
create function func_20028_c() returns integer
|
||||
begin
|
||||
declare div_zero integer;
|
||||
set SQL_MODE='TRADITIONAL';
|
||||
select 1/0 into div_zero;
|
||||
return div_zero;
|
||||
end|
|
||||
|
||||
create procedure proc_20028_a()
|
||||
begin
|
||||
declare temp integer;
|
||||
select i into temp from table_20028 limit 1;
|
||||
end|
|
||||
|
||||
create procedure proc_20028_b()
|
||||
begin
|
||||
call proc_20028_a();
|
||||
end|
|
||||
|
||||
create procedure proc_20028_c()
|
||||
begin
|
||||
declare div_zero integer;
|
||||
set SQL_MODE='TRADITIONAL';
|
||||
select 1/0 into div_zero;
|
||||
end|
|
||||
|
||||
select func_20028_a()|
|
||||
select func_20028_b()|
|
||||
--error ER_DIVISION_BY_ZERO
|
||||
select func_20028_c()|
|
||||
call proc_20028_a()|
|
||||
call proc_20028_b()|
|
||||
--error ER_DIVISION_BY_ZERO
|
||||
call proc_20028_c()|
|
||||
|
||||
SET sql_mode='TRADITIONAL'|
|
||||
|
||||
drop function func_20028_a|
|
||||
drop function func_20028_b|
|
||||
drop function func_20028_c|
|
||||
drop procedure proc_20028_a|
|
||||
drop procedure proc_20028_b|
|
||||
drop procedure proc_20028_c|
|
||||
|
||||
create function func_20028_a() returns integer
|
||||
begin
|
||||
declare temp integer;
|
||||
select i into temp from table_20028 limit 1;
|
||||
return ifnull(temp, 0);
|
||||
end|
|
||||
|
||||
create function func_20028_b() returns integer
|
||||
begin
|
||||
return func_20028_a();
|
||||
end|
|
||||
|
||||
create function func_20028_c() returns integer
|
||||
begin
|
||||
declare div_zero integer;
|
||||
set SQL_MODE='';
|
||||
select 1/0 into div_zero;
|
||||
return div_zero;
|
||||
end|
|
||||
|
||||
create procedure proc_20028_a()
|
||||
begin
|
||||
declare temp integer;
|
||||
select i into temp from table_20028 limit 1;
|
||||
end|
|
||||
|
||||
create procedure proc_20028_b()
|
||||
begin
|
||||
call proc_20028_a();
|
||||
end|
|
||||
|
||||
create procedure proc_20028_c()
|
||||
begin
|
||||
declare div_zero integer;
|
||||
set SQL_MODE='';
|
||||
select 1/0 into div_zero;
|
||||
end|
|
||||
|
||||
select func_20028_a()|
|
||||
select func_20028_b()|
|
||||
select func_20028_c()|
|
||||
call proc_20028_a()|
|
||||
call proc_20028_b()|
|
||||
call proc_20028_c()|
|
||||
|
||||
SET @@sql_mode=@save_sql_mode|
|
||||
|
||||
drop function func_20028_a|
|
||||
drop function func_20028_b|
|
||||
drop function func_20028_c|
|
||||
drop procedure proc_20028_a|
|
||||
drop procedure proc_20028_b|
|
||||
drop procedure proc_20028_c|
|
||||
drop table table_20028|
|
||||
|
||||
#
|
||||
# Bug#21462 Stored procedures with no arguments require parenthesis
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop procedure if exists proc_21462_a|
|
||||
drop procedure if exists proc_21462_b|
|
||||
--enable_warnings
|
||||
|
||||
create procedure proc_21462_a()
|
||||
begin
|
||||
select "Called A";
|
||||
end|
|
||||
|
||||
create procedure proc_21462_b(x int)
|
||||
begin
|
||||
select "Called B";
|
||||
end|
|
||||
|
||||
call proc_21462_a|
|
||||
call proc_21462_a()|
|
||||
-- error ER_SP_WRONG_NO_OF_ARGS
|
||||
call proc_21462_a(1)|
|
||||
|
||||
-- error ER_SP_WRONG_NO_OF_ARGS
|
||||
call proc_21462_b|
|
||||
-- error ER_SP_WRONG_NO_OF_ARGS
|
||||
call proc_21462_b()|
|
||||
call proc_21462_b(1)|
|
||||
|
||||
drop procedure proc_21462_a|
|
||||
drop procedure proc_21462_b|
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
|
||||
|
@ -1274,7 +1274,6 @@ INSERT INTO t1 VALUES (@x);
|
||||
SELECT @x;
|
||||
|
||||
SET @x=2;
|
||||
--error ER_DIVISION_BY_ZERO
|
||||
UPDATE t1 SET i1 = @x;
|
||||
SELECT @x;
|
||||
|
||||
@ -1285,7 +1284,6 @@ INSERT INTO t1 VALUES (@x);
|
||||
SELECT @x;
|
||||
|
||||
SET @x=4;
|
||||
--error ER_DIVISION_BY_ZERO
|
||||
UPDATE t1 SET i1 = @x;
|
||||
SELECT @x;
|
||||
|
||||
@ -1420,6 +1418,67 @@ CREATE DEFINER=some_user_name@1234567890abcdefghij1234567890abcdefghij1234567890
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
#
|
||||
# Bug#20028 Function with select return no data
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
drop table if exists t2;
|
||||
drop table if exists t3;
|
||||
drop table if exists t4;
|
||||
--enable_warnings
|
||||
|
||||
SET @save_sql_mode=@@sql_mode;
|
||||
|
||||
delimiter |;
|
||||
SET sql_mode='TRADITIONAL'|
|
||||
create table t1 (id int(10) not null primary key, v int(10) )|
|
||||
create table t2 (id int(10) not null primary key, v int(10) )|
|
||||
create table t3 (id int(10) not null primary key, v int(10) )|
|
||||
create table t4 (c int)|
|
||||
|
||||
create trigger t4_bi before insert on t4 for each row set @t4_bi_called:=1|
|
||||
create trigger t4_bu before update on t4 for each row set @t4_bu_called:=1|
|
||||
|
||||
insert into t1 values(10, 10)|
|
||||
set @a:=1/0|
|
||||
select 1/0 from t1|
|
||||
|
||||
create trigger t1_bi before insert on t1 for each row set @a:=1/0|
|
||||
|
||||
insert into t1 values(20, 20)|
|
||||
|
||||
drop trigger t1_bi|
|
||||
create trigger t1_bi before insert on t1 for each row
|
||||
begin
|
||||
insert into t2 values (new.id, new.v);
|
||||
update t2 set v=v+1 where id= new.id;
|
||||
replace t3 values (new.id, 0);
|
||||
update t2, t3 set t2.v=new.v, t3.v=new.v where t2.id=t3.id;
|
||||
create temporary table t5 select * from t1;
|
||||
delete from t5;
|
||||
insert into t5 select * from t1;
|
||||
insert into t4 values (0);
|
||||
set @check= (select count(*) from t5);
|
||||
update t4 set c= @check;
|
||||
drop temporary table t5;
|
||||
|
||||
set @a:=1/0;
|
||||
end|
|
||||
|
||||
set @check=0, @t4_bi_called=0, @t4_bu_called=0|
|
||||
insert into t1 values(30, 30)|
|
||||
select @check, @t4_bi_called, @t4_bu_called|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
SET @@sql_mode=@save_sql_mode;
|
||||
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
drop table t4;
|
||||
|
||||
#
|
||||
# Bug#20670 "UPDATE using key and invoking trigger that modifies
|
||||
|
@ -23,8 +23,11 @@ create table t1 (a int, b int);
|
||||
insert into t1 values (1,2), (1,3), (2,4), (2,5), (3,10);
|
||||
|
||||
# view with variable
|
||||
-- error 1351
|
||||
-- error ER_VIEW_SELECT_VARIABLE
|
||||
create view v1 (c,d) as select a,b+@@global.max_user_connections from t1;
|
||||
-- error ER_VIEW_SELECT_VARIABLE
|
||||
create view v1 (c,d) as select a,b from t1
|
||||
where a = @@global.max_user_connections;
|
||||
|
||||
# simple view
|
||||
create view v1 (c) as select b+1 from t1;
|
||||
@ -486,19 +489,6 @@ drop view v1;
|
||||
-- error 1060
|
||||
create view v1 (a,a) as select 'a','a';
|
||||
|
||||
#
|
||||
# SP variables inside view test
|
||||
#
|
||||
--disable_warnings
|
||||
drop procedure if exists p1;
|
||||
--enable_warnings
|
||||
delimiter //;
|
||||
create procedure p1 () begin declare v int; create view v1 as select v; end;//
|
||||
delimiter ;//
|
||||
-- error 1351
|
||||
call p1();
|
||||
drop procedure p1;
|
||||
|
||||
#
|
||||
# updatablity should be transitive
|
||||
#
|
||||
@ -820,6 +810,8 @@ create view v1 as select 5 into outfile 'ttt';
|
||||
create table t1 (a int);
|
||||
-- error 1350
|
||||
create view v1 as select a from t1 procedure analyse();
|
||||
-- error ER_VIEW_SELECT_DERIVED
|
||||
create view v1 as select 1 from (select 1) as d1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
@ -2597,6 +2589,7 @@ SELECT * FROM t2;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
|
||||
#
|
||||
# Bug#16110: insert permitted into view col w/o default value
|
||||
#
|
||||
@ -2880,6 +2873,40 @@ SHOW CREATE VIEW v1;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
|
||||
#
|
||||
# Bug#19111: TRIGGERs selecting from a VIEW on the firing base table
|
||||
# fail
|
||||
#
|
||||
# Allow to select from a view on a table being modified in a trigger
|
||||
# and stored function, since plain select is allowed there.
|
||||
#
|
||||
--disable_warnings
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
DROP VIEW IF EXISTS v1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (i INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
CREATE VIEW v1 AS SELECT MAX(i) FROM t1;
|
||||
|
||||
# Plain 'SET NEW.i = (SELECT MAX(i) FROM t1) + 1' works, so select
|
||||
# from a view should work too.
|
||||
CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW
|
||||
SET NEW.i = (SELECT * FROM v1) + 1;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
# Plain 'RETURN (SELECT MAX(i) FROM t1)' works in INSERT, so select
|
||||
# from a view should work too.
|
||||
CREATE FUNCTION f1() RETURNS INT RETURN (SELECT * FROM v1);
|
||||
UPDATE t1 SET i= f1();
|
||||
|
||||
DROP FUNCTION f1;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #16813 (WITH CHECK OPTION doesn't work with UPDATE)
|
||||
#
|
||||
@ -2894,4 +2921,43 @@ UPDATE v1 SET val=6 WHERE id=2;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# BUG#22584: last_insert_id not updated after inserting a record
|
||||
# through a updatable view
|
||||
#
|
||||
# We still do not update LAST_INSERT_ID if AUTO_INCREMENT column is
|
||||
# not accessible through a view. However, we do not reset the value
|
||||
# of LAST_INSERT_ID, but keep it unchanged.
|
||||
#
|
||||
--disable_warnings
|
||||
DROP VIEW IF EXISTS v1, v2;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (i INT AUTO_INCREMENT PRIMARY KEY, j INT);
|
||||
CREATE VIEW v1 AS SELECT j FROM t1;
|
||||
CREATE VIEW v2 AS SELECT * FROM t1;
|
||||
|
||||
INSERT INTO t1 (j) VALUES (1);
|
||||
SELECT LAST_INSERT_ID();
|
||||
|
||||
INSERT INTO v1 (j) VALUES (2);
|
||||
--echo # LAST_INSERT_ID() should not change.
|
||||
SELECT LAST_INSERT_ID();
|
||||
|
||||
INSERT INTO v2 (j) VALUES (3);
|
||||
--echo # LAST_INSERT_ID() should be updated.
|
||||
SELECT LAST_INSERT_ID();
|
||||
|
||||
INSERT INTO v1 (j) SELECT j FROM t1;
|
||||
--echo # LAST_INSERT_ID() should not change.
|
||||
SELECT LAST_INSERT_ID();
|
||||
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP VIEW v1, v2;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
62
mysql-test/t/wait_for_socket.sh
Executable file
62
mysql-test/t/wait_for_socket.sh
Executable file
@ -0,0 +1,62 @@
|
||||
#!/bin/sh
|
||||
|
||||
###########################################################################
|
||||
|
||||
if [ $# -ne 6 ]; then
|
||||
echo "Usage: wait_for_socket.sh <executable path> <socket path> <username> <password> <db> <timeout>"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
client_exe="$1"
|
||||
socket_path="$2"
|
||||
username="$3"
|
||||
password="$4"
|
||||
db="$5"
|
||||
total_timeout="$6"
|
||||
|
||||
###########################################################################
|
||||
|
||||
if [ -z "$client_exe" ]; then
|
||||
echo "Error: invalid path to client executable ($client_exe)."
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
if [ ! -x "$client_exe" ]; then
|
||||
echo "Error: client by path '$client_exe' is not available."
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
if [ -z "$socket_path" ]; then
|
||||
echo "Error: invalid socket patch."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
###########################################################################
|
||||
|
||||
client_args="--silent --socket=$socket_path "
|
||||
|
||||
[ -n "$username" ] && client_args="$client_args --user=$username "
|
||||
[ -n "$password" ] && client_args="$client_args --password=$password "
|
||||
[ -n "$db" ] && client_args="$client_args $db"
|
||||
|
||||
###########################################################################
|
||||
|
||||
cur_attempt=1
|
||||
|
||||
while true; do
|
||||
|
||||
if ( echo 'quit' | "$client_exe" $client_args >/dev/null 2>&1 ); then
|
||||
echo "Success: server is ready to accept connection on socket."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
[ $cur_attempt -ge $total_timeout ] && break
|
||||
|
||||
sleep 1
|
||||
|
||||
cur_attempt=`expr $cur_attempt + 1`
|
||||
|
||||
done
|
||||
|
||||
echo "Error: server does not accept connections after $total_timeout seconds."
|
||||
exit 0
|
Reference in New Issue
Block a user