mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge mysql.com:/home/mysql_src/mysql-5.0-van
into mysql.com:/home/mysql_src/mysql-5.1-merge-of-5.0 (2nd try; Pekka kindly accepted to fix storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp and storage/ndb/src/kernel/vm/SimulatedBlock.cpp after I push).
This commit is contained in:
@ -30,3 +30,10 @@ check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int);
|
||||
prepare stmt1 from "SELECT * FROM t1 PROCEDURE ANALYSE()";
|
||||
execute stmt1;
|
||||
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
|
||||
execute stmt1;
|
||||
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
|
||||
deallocate prepare stmt1;
|
||||
|
@ -429,4 +429,8 @@ REPAIR TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
SET myisam_repair_threads=@@global.myisam_repair_threads;
|
||||
INSERT INTO t1 VALUES('testword\'\'');
|
||||
SELECT a FROM t1 WHERE MATCH a AGAINST('testword' IN BOOLEAN MODE);
|
||||
a
|
||||
testword''
|
||||
DROP TABLE t1;
|
||||
|
@ -596,3 +596,18 @@ GROUP_CONCAT(a ORDER BY a)
|
||||
,x
|
||||
,z
|
||||
DROP TABLE t1;
|
||||
set names latin1;
|
||||
create table t1 (a char, b char);
|
||||
insert into t1 values ('a', 'a'), ('a', 'b'), ('b', 'a'), ('b', 'b');
|
||||
create table t2 select group_concat(b) as a from t1 where a = 'a';
|
||||
create table t3 (select group_concat(a) as a from t1 where a = 'a') union
|
||||
(select group_concat(b) as a from t1 where a = 'b');
|
||||
select charset(a) from t2;
|
||||
charset(a)
|
||||
latin1
|
||||
select charset(a) from t3;
|
||||
charset(a)
|
||||
latin1
|
||||
latin1
|
||||
drop table t1, t2, t3;
|
||||
set names default;
|
||||
|
@ -445,3 +445,40 @@ drop table t2;
|
||||
drop table t3;
|
||||
drop table t4;
|
||||
drop table t5;
|
||||
create table t1 (c1 int);
|
||||
insert into t1 values (1);
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
c1
|
||||
1
|
||||
send the below to another connection, do not wait for the result
|
||||
optimize table t1;
|
||||
proceed with the normal connection
|
||||
handler t1 read next;
|
||||
c1
|
||||
1
|
||||
handler t1 close;
|
||||
read the result from the other connection
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
proceed with the normal connection
|
||||
drop table t1;
|
||||
create table t1 (c1 int);
|
||||
insert into t1 values (14397);
|
||||
flush tables with read lock;
|
||||
drop table t1;
|
||||
ERROR HY000: Can't execute the query because you have a conflicting read lock
|
||||
send the below to another connection, do not wait for the result
|
||||
drop table t1;
|
||||
proceed with the normal connection
|
||||
select * from t1;
|
||||
c1
|
||||
14397
|
||||
unlock tables;
|
||||
read the result from the other connection
|
||||
proceed with the normal connection
|
||||
select * from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
drop table if exists t1;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 't1'
|
||||
|
@ -205,3 +205,54 @@ select (@after-@before) >= 2;
|
||||
(@after-@before) >= 2
|
||||
1
|
||||
drop table t1,t2;
|
||||
commit;
|
||||
begin;
|
||||
create temporary table ti (a int) engine=innodb;
|
||||
rollback;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
insert into ti values(1);
|
||||
set autocommit=0;
|
||||
create temporary table t1 (a int) engine=myisam;
|
||||
commit;
|
||||
insert t1 values (1);
|
||||
rollback;
|
||||
Warnings:
|
||||
Warning 1196 Some non-transactional changed tables couldn't be rolled back
|
||||
create table t0 (n int);
|
||||
insert t0 select * from t1;
|
||||
set autocommit=1;
|
||||
insert into t0 select GET_LOCK("lock1",null);
|
||||
set autocommit=0;
|
||||
create table t2 (n int) engine=innodb;
|
||||
insert into t2 values (3);
|
||||
select get_lock("lock1",60);
|
||||
get_lock("lock1",60)
|
||||
1
|
||||
show binlog events from 98;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 98 Query 1 # use `test`; BEGIN
|
||||
master-bin.000001 166 Query 1 # use `test`; insert into t1 values(16)
|
||||
master-bin.000001 254 Query 1 # use `test`; insert into t1 values(18)
|
||||
master-bin.000001 342 Xid 1 # COMMIT /* xid=105 */
|
||||
master-bin.000001 369 Query 1 # use `test`; delete from t1
|
||||
master-bin.000001 446 Xid 1 # COMMIT /* xid=114 */
|
||||
master-bin.000001 473 Query 1 # use `test`; delete from t2
|
||||
master-bin.000001 550 Xid 1 # COMMIT /* xid=115 */
|
||||
master-bin.000001 577 Query 1 # use `test`; alter table t2 type=MyISAM
|
||||
master-bin.000001 666 Query 1 # use `test`; insert into t1 values (1)
|
||||
master-bin.000001 754 Xid 1 # COMMIT /* xid=117 */
|
||||
master-bin.000001 781 Query 1 # use `test`; insert into t2 values (20)
|
||||
master-bin.000001 870 Query 1 # use `test`; drop table t1,t2
|
||||
master-bin.000001 949 Query 1 # use `test`; create temporary table ti (a int) engine=innodb
|
||||
master-bin.000001 1059 Query 1 # use `test`; insert into ti values(1)
|
||||
master-bin.000001 1146 Xid 1 # COMMIT /* xid=132 */
|
||||
master-bin.000001 1173 Query 1 # use `test`; create temporary table t1 (a int) engine=myisam
|
||||
master-bin.000001 1283 Query 1 # use `test`; insert t1 values (1)
|
||||
master-bin.000001 1366 Query 1 # use `test`; create table t0 (n int)
|
||||
master-bin.000001 1452 Query 1 # use `test`; insert t0 select * from t1
|
||||
master-bin.000001 1541 Query 1 # use `test`; insert into t0 select GET_LOCK("lock1",null)
|
||||
master-bin.000001 1648 Query 1 # use `test`; create table t2 (n int) engine=innodb
|
||||
master-bin.000001 1748 Query 1 # use `test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `test`.`t1`,`test`.`ti`
|
||||
do release_lock("lock1");
|
||||
drop table t0,t2;
|
||||
|
@ -505,6 +505,16 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1 Using temporary
|
||||
1 SIMPLE t2 index NULL PRIMARY 4 NULL 2 Using index; Distinct
|
||||
drop table t1,t2;
|
||||
create table t1 (
|
||||
c1 varchar(32),
|
||||
key (c1)
|
||||
) engine=myisam;
|
||||
alter table t1 disable keys;
|
||||
insert into t1 values ('a'), ('b');
|
||||
select c1 from t1 order by c1 limit 1;
|
||||
c1
|
||||
a
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (`a` int(11) NOT NULL default '0', `b` int(11) NOT NULL default '0', UNIQUE KEY `a` USING RTREE (`a`,`b`)) ENGINE=MyISAM;
|
||||
Got one of the listed errors
|
||||
create table t1 (a int, b varchar(200), c text not null) checksum=1;
|
||||
|
@ -306,11 +306,21 @@ count(*)
|
||||
drop table t1;
|
||||
create table t1 (
|
||||
a char(10) primary key
|
||||
) engine=ndb;
|
||||
insert into t1 values ('jonas % ');
|
||||
replace into t1 values ('jonas % ');
|
||||
replace into t1 values ('jonas % ');
|
||||
) engine=ndbcluster default charset=latin1;
|
||||
insert into t1 values ('aaabb');
|
||||
select * from t1;
|
||||
a
|
||||
jonas %
|
||||
aaabb
|
||||
replace into t1 set a = 'AAABB';
|
||||
select * from t1;
|
||||
a
|
||||
AAABB
|
||||
replace into t1 set a = 'aAaBb';
|
||||
select * from t1;
|
||||
a
|
||||
aAaBb
|
||||
replace into t1 set a = 'aaabb';
|
||||
select * from t1;
|
||||
a
|
||||
aaabb
|
||||
drop table t1;
|
||||
|
@ -375,3 +375,28 @@ drop procedure foo;
|
||||
drop function fn1;
|
||||
drop database mysqltest1;
|
||||
drop user "zedjzlcsjhd"@127.0.0.1;
|
||||
use test;
|
||||
use test;
|
||||
drop function if exists f1;
|
||||
create function f1() returns int reads sql data
|
||||
begin
|
||||
declare var integer;
|
||||
declare c cursor for select a from v1;
|
||||
open c;
|
||||
fetch c into var;
|
||||
close c;
|
||||
return var;
|
||||
end|
|
||||
create view v1 as select 1 as a;
|
||||
create table t1 (a int);
|
||||
insert into t1 (a) values (f1());
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
drop view v1;
|
||||
drop function f1;
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
drop table t1;
|
||||
reset master;
|
||||
|
@ -845,6 +845,8 @@ set password = 'foo1';
|
||||
select password;
|
||||
end|
|
||||
ERROR 42000: Variable 'password' must be quoted with `...`, or renamed
|
||||
set names='foo2'|
|
||||
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 '' at line 1
|
||||
create procedure bug13510_2()
|
||||
begin
|
||||
declare names varchar(10);
|
||||
@ -872,6 +874,127 @@ names
|
||||
foo4
|
||||
drop procedure bug13510_3|
|
||||
drop procedure bug13510_4|
|
||||
drop function if exists bug_13627_f|
|
||||
CREATE TABLE t1 (a int)|
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DROP TRIGGER test1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN DROP TRIGGER test1; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN load table t1 from master; END |
|
||||
ERROR 0A000: LOAD TABLE is not allowed in stored procedures
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN load table t1 from master; return 1; END |
|
||||
ERROR 0A000: LOAD TABLE is not allowed in stored procedures
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create table t2 (a int); END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create table t2 (a int); return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create index t1_i on t1 (a); END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create index t1_i on t1 (a); return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN alter table t1 add column b int; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN alter table t1 add column b int; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN rename table t1 to t2; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN rename table t1 to t2; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN truncate table t1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN truncate table t1; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop table t1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN drop table t1; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop index t1_i on t1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN drop index t1_i on t1; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN unlock tables; END |
|
||||
ERROR 0A000: UNLOCK is not allowed in stored procedures
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN unlock tables; return 1; END |
|
||||
ERROR 0A000: UNLOCK is not allowed in stored procedures
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN LOCK TABLE t1 READ; END |
|
||||
ERROR 0A000: LOCK is not allowed in stored procedures
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN LOCK TABLE t1 READ; return 1; END |
|
||||
ERROR 0A000: LOCK is not allowed in stored procedures
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create database mysqltest; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create database mysqltest; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop database mysqltest; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN drop database mysqltest; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create user 'mysqltest_1'; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create user 'mysqltest_1'; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop user 'mysqltest_1'; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN drop user 'mysqltest_1'; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN rename user 'mysqltest_2' to 'mysqltest_1'; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN rename user 'mysqltest_2' to 'mysqltest_1'; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create view v1 as select 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create view v1 as select 1; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN alter view v1 as select 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN alter view v1 as select 1; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop view v1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN drop view v1; return 1; END |
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create trigger tr2 before insert on t1 for each row do select 1; END |
|
||||
ERROR 2F003: Can't create a TRIGGER from within another stored routine
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create trigger tr2 before insert on t1 for each row do select 1; return 1; END |
|
||||
ERROR 2F003: Can't create a TRIGGER from within another stored routine
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop function bug_13627_f; END |
|
||||
ERROR HY000: Can't drop or alter a FUNCTION from within another stored routine
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN drop function bug_13627_f; return 1; END |
|
||||
ERROR HY000: Can't drop or alter a FUNCTION from within another stored routine
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create function f2 () returns int return 1; END |
|
||||
ERROR 2F003: Can't create a FUNCTION from within another stored routine
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create function f2 () returns int return 1; return 1; END |
|
||||
ERROR 2F003: Can't create a FUNCTION from within another stored routine
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW
|
||||
BEGIN
|
||||
CREATE TEMPORARY TABLE t2 (a int);
|
||||
DROP TEMPORARY TABLE t2;
|
||||
END |
|
||||
CREATE FUNCTION bug_13627_f() returns int
|
||||
BEGIN
|
||||
CREATE TEMPORARY TABLE t2 (a int);
|
||||
DROP TEMPORARY TABLE t2;
|
||||
return 1;
|
||||
END |
|
||||
drop table t1|
|
||||
drop function bug_13627_f|
|
||||
drop function if exists bug12329;
|
||||
create table t1 as select 1 a;
|
||||
create table t2 as select 1 a;
|
||||
create function bug12329() returns int return (select a from t1);
|
||||
prepare stmt1 from 'select bug12329()';
|
||||
execute stmt1;
|
||||
bug12329()
|
||||
1
|
||||
drop function bug12329;
|
||||
create function bug12329() returns int return (select a+100 from t2);
|
||||
select bug12329();
|
||||
bug12329()
|
||||
101
|
||||
execute stmt1;
|
||||
ERROR HY000: Table 't2' was not locked with LOCK TABLES
|
||||
deallocate prepare stmt1;
|
||||
drop function bug12329;
|
||||
drop table t1, t2;
|
||||
create database mysqltest1;
|
||||
use mysqltest1;
|
||||
drop database mysqltest1;
|
||||
|
@ -3617,4 +3617,54 @@ count(*)
|
||||
drop table t3, t4|
|
||||
drop procedure bug14210|
|
||||
set @@session.max_heap_table_size=default|
|
||||
drop function if exists bug14723|
|
||||
drop procedure if exists bug14723|
|
||||
/*!50003 create function bug14723()
|
||||
returns bigint(20)
|
||||
main_loop: begin
|
||||
return 42;
|
||||
end */;;
|
||||
show create function bug14723;;
|
||||
Function sql_mode Create Function
|
||||
bug14723 CREATE FUNCTION `bug14723`() RETURNS bigint(20)
|
||||
main_loop: begin
|
||||
return 42;
|
||||
end
|
||||
select bug14723();;
|
||||
bug14723()
|
||||
42
|
||||
/*!50003 create procedure bug14723()
|
||||
main_loop: begin
|
||||
select 42;
|
||||
end */;;
|
||||
show create procedure bug14723;;
|
||||
Procedure sql_mode Create Procedure
|
||||
bug14723 CREATE PROCEDURE `bug14723`()
|
||||
main_loop: begin
|
||||
select 42;
|
||||
end
|
||||
call bug14723();;
|
||||
42
|
||||
42
|
||||
drop function bug14723|
|
||||
drop procedure bug14723|
|
||||
create procedure bug14845()
|
||||
begin
|
||||
declare a char(255);
|
||||
declare done int default 0;
|
||||
declare c cursor for select count(*) from t1 where 1 = 0;
|
||||
declare continue handler for sqlstate '02000' set done = 1;
|
||||
open c;
|
||||
repeat
|
||||
fetch c into a;
|
||||
if not done then
|
||||
select a;
|
||||
end if;
|
||||
until done end repeat;
|
||||
close c;
|
||||
end|
|
||||
call bug14845()|
|
||||
a
|
||||
0
|
||||
drop procedure bug14845|
|
||||
drop table t1,t2;
|
||||
|
@ -738,3 +738,28 @@ f1
|
||||
1
|
||||
drop trigger t1_bi;
|
||||
drop tables t1, t2;
|
||||
create table t1 (id int);
|
||||
create table t2 (id int);
|
||||
create trigger t1_bi before insert on t1 for each row insert into t2 values (new.id);
|
||||
prepare stmt1 from "insert into t1 values (10)";
|
||||
create procedure p1() insert into t1 values (10);
|
||||
call p1();
|
||||
drop trigger t1_bi;
|
||||
execute stmt1;
|
||||
call p1();
|
||||
deallocate prepare stmt1;
|
||||
drop procedure p1;
|
||||
create table t3 (id int);
|
||||
create trigger t1_bi after insert on t1 for each row insert into t2 values (new.id);
|
||||
prepare stmt1 from "insert into t1 values (10)";
|
||||
create procedure p1() insert into t1 values (10);
|
||||
call p1();
|
||||
drop trigger t1_bi;
|
||||
create trigger t1_bi after insert on t1 for each row insert into t3 values (new.id);
|
||||
execute stmt1;
|
||||
ERROR HY000: Table 't3' was not locked with LOCK TABLES
|
||||
call p1();
|
||||
ERROR HY000: Table 't3' was not locked with LOCK TABLES
|
||||
deallocate prepare stmt1;
|
||||
drop procedure p1;
|
||||
drop table t1, t2, t3;
|
||||
|
@ -204,6 +204,21 @@ create table t1 (a int);
|
||||
insert into t1 values (1), (2), (3);
|
||||
create view v1 (a) as select a+1 from t1;
|
||||
create view v2 (a) as select a-1 from t1;
|
||||
select * from t1 natural left join v1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
select * from v2 natural left join t1;
|
||||
a
|
||||
0
|
||||
1
|
||||
2
|
||||
select * from v2 natural left join v1;
|
||||
a
|
||||
0
|
||||
1
|
||||
2
|
||||
drop view v1, v2;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
@ -2323,6 +2338,14 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
|
||||
DROP VIEW v1,v2;
|
||||
DROP TABLE t1,t2,t3;
|
||||
create table t1 (f1 int);
|
||||
create view v1 as select t1.f1 as '123
|
||||
456' from t1;
|
||||
select * from v1;
|
||||
123
|
||||
456
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
create table t1 (f1 int, f2 int);
|
||||
insert into t1 values(1,1),(1,2),(1,3);
|
||||
create view v1 as select f1 ,group_concat(f2 order by f2 asc) from t1 group by f1;
|
||||
@ -2385,3 +2408,19 @@ show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY INVOKER VIEW `v1` AS select 1 AS `1`
|
||||
drop view v1;
|
||||
create table t1 (id INT, primary key(id));
|
||||
insert into t1 values (1),(2);
|
||||
create view v1 as select * from t1;
|
||||
explain select id from v1 order by id;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index NULL PRIMARY 4 NULL 2 Using index
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
create table t1(f1 int, f2 int);
|
||||
insert into t1 values (null, 10), (null,2);
|
||||
create view v1 as select * from t1;
|
||||
select f1, sum(f2) from v1 group by f1;
|
||||
f1 sum(f2)
|
||||
NULL 12
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
@ -39,4 +39,13 @@ check table t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# procedure in PS BUG#13673
|
||||
#
|
||||
CREATE TABLE t1 (a int);
|
||||
prepare stmt1 from "SELECT * FROM t1 PROCEDURE ANALYSE()";
|
||||
execute stmt1;
|
||||
execute stmt1;
|
||||
deallocate prepare stmt1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -15,5 +15,4 @@ 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
|
||||
archive_gis : The test fails on 32bit Linux
|
||||
compress : Magnus will fix
|
||||
|
@ -348,6 +348,12 @@ INSERT INTO t1 VALUES('bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb');
|
||||
SET myisam_repair_threads=2;
|
||||
REPAIR TABLE t1;
|
||||
SET myisam_repair_threads=@@global.myisam_repair_threads;
|
||||
|
||||
#
|
||||
# BUG#5686 - #1034 - Incorrect key file for table - only utf8
|
||||
#
|
||||
INSERT INTO t1 VALUES('testword\'\'');
|
||||
SELECT a FROM t1 WHERE MATCH a AGAINST('testword' IN BOOLEAN MODE);
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -390,3 +390,19 @@ SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY id;
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Bug#8568 "GROUP_CONCAT returns string, unless in a UNION in which case
|
||||
# returns BLOB": add a test case, the bug can not be repeated any more.
|
||||
#
|
||||
|
||||
set names latin1;
|
||||
create table t1 (a char, b char);
|
||||
insert into t1 values ('a', 'a'), ('a', 'b'), ('b', 'a'), ('b', 'b');
|
||||
create table t2 select group_concat(b) as a from t1 where a = 'a';
|
||||
create table t3 (select group_concat(a) as a from t1 where a = 'a') union
|
||||
(select group_concat(b) as a from t1 where a = 'b');
|
||||
select charset(a) from t2;
|
||||
select charset(a) from t3;
|
||||
drop table t1, t2, t3;
|
||||
set names default;
|
||||
|
@ -2,8 +2,6 @@
|
||||
# simple test of all group functions
|
||||
#
|
||||
|
||||
--source include/have_innodb.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
@ -545,10 +543,12 @@ DROP TABLE t1;
|
||||
# Bug #12882 min/max inconsistent on empty table
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
create table t1m (a int) engine=myisam;
|
||||
create table t1i (a int) engine=innodb;
|
||||
create table t2m (a int) engine=myisam;
|
||||
create table t2i (a int) engine=innodb;
|
||||
--enable_warnings
|
||||
insert into t2m values (5);
|
||||
insert into t2i values (5);
|
||||
|
||||
|
@ -347,4 +347,79 @@ drop table t3;
|
||||
drop table t4;
|
||||
drop table t5;
|
||||
|
||||
#
|
||||
# Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
|
||||
#
|
||||
create table t1 (c1 int);
|
||||
insert into t1 values (1);
|
||||
# client 1
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
# client 2
|
||||
connect (con2,localhost,root,,);
|
||||
connection con2;
|
||||
--exec echo send the below to another connection, do not wait for the result
|
||||
send optimize table t1;
|
||||
--sleep 1
|
||||
# client 1
|
||||
--exec echo proceed with the normal connection
|
||||
connection default;
|
||||
handler t1 read next;
|
||||
handler t1 close;
|
||||
# client 2
|
||||
--exec echo read the result from the other connection
|
||||
connection con2;
|
||||
reap;
|
||||
# client 1
|
||||
--exec echo proceed with the normal connection
|
||||
connection default;
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Addendum to Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
|
||||
# Show that DROP TABLE can no longer deadlock against
|
||||
# FLUSH TABLES WITH READ LOCK. This is a 5.0 issue.
|
||||
#
|
||||
create table t1 (c1 int);
|
||||
insert into t1 values (14397);
|
||||
flush tables with read lock;
|
||||
# The thread with the global read lock cannot drop the table itself:
|
||||
--error 1223
|
||||
drop table t1;
|
||||
#
|
||||
# client 2
|
||||
# We need a second connection to try the drop.
|
||||
# The drop waits for the global read lock to go away.
|
||||
# Without the addendum fix it locked LOCK_open before entering the wait loop.
|
||||
connection con2;
|
||||
--exec echo send the below to another connection, do not wait for the result
|
||||
send drop table t1;
|
||||
--sleep 1
|
||||
#
|
||||
# client 1
|
||||
# Now we need something that wants LOCK_open. A simple table access which
|
||||
# opens the table does the trick.
|
||||
--exec echo proceed with the normal connection
|
||||
connection default;
|
||||
# This would hang on LOCK_open without the 5.0 addendum fix.
|
||||
select * from t1;
|
||||
# Release the read lock. This should make the DROP go through.
|
||||
unlock tables;
|
||||
#
|
||||
# client 2
|
||||
# Read the result of the drop command.
|
||||
connection con2;
|
||||
--exec echo read the result from the other connection
|
||||
reap;
|
||||
#
|
||||
# client 1
|
||||
# Now back to normal operation. The table should not exist any more.
|
||||
--exec echo proceed with the normal connection
|
||||
connection default;
|
||||
--error 1146
|
||||
select * from t1;
|
||||
# Just to be sure and not confuse the next test case writer.
|
||||
drop table if exists t1;
|
||||
|
||||
|
@ -227,7 +227,37 @@ select (@after:=unix_timestamp())*0; # always give repeatable output
|
||||
# the bug, the reap would return immediately after the insert into t2.
|
||||
select (@after-@before) >= 2;
|
||||
|
||||
# cleanup
|
||||
drop table t1,t2;
|
||||
commit;
|
||||
|
||||
# test for BUG#7947 - DO RELEASE_LOCK() not written to binlog on rollback in the middle
|
||||
# of a transaction
|
||||
|
||||
connection con2;
|
||||
begin;
|
||||
create temporary table ti (a int) engine=innodb;
|
||||
rollback;
|
||||
insert into ti values(1);
|
||||
set autocommit=0;
|
||||
create temporary table t1 (a int) engine=myisam;
|
||||
commit;
|
||||
insert t1 values (1);
|
||||
rollback;
|
||||
create table t0 (n int);
|
||||
insert t0 select * from t1;
|
||||
set autocommit=1;
|
||||
insert into t0 select GET_LOCK("lock1",null);
|
||||
set autocommit=0;
|
||||
create table t2 (n int) engine=innodb;
|
||||
insert into t2 values (3);
|
||||
disconnect con2;
|
||||
connection con3;
|
||||
select get_lock("lock1",60);
|
||||
--replace_column 5 #
|
||||
--replace_result "xid=208" "xid=105" "xid=227" "xid=114" "xid=230" "xid=115" "xid=234" "xid=117" "xid=261" "xid=132"
|
||||
show binlog events from 98;
|
||||
do release_lock("lock1");
|
||||
drop table t0,t2;
|
||||
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -476,6 +476,18 @@ explain select sql_big_result distinct t1.a from t1,t2 order by t2.a;
|
||||
explain select distinct t1.a from t1,t2 order by t2.a;
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Bug#14616 - Freshly imported table returns error 124 when using LIMIT
|
||||
#
|
||||
create table t1 (
|
||||
c1 varchar(32),
|
||||
key (c1)
|
||||
) engine=myisam;
|
||||
alter table t1 disable keys;
|
||||
insert into t1 values ('a'), ('b');
|
||||
select c1 from t1 order by c1 limit 1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test RTREE index
|
||||
#
|
||||
|
@ -237,13 +237,18 @@ drop table t1;
|
||||
#select a,b,length(a),length(b) from t1 where a='c' and b='c';
|
||||
#drop table t1;
|
||||
|
||||
# bug
|
||||
# bug#14007
|
||||
create table t1 (
|
||||
a char(10) primary key
|
||||
) engine=ndb;
|
||||
insert into t1 values ('jonas % ');
|
||||
replace into t1 values ('jonas % ');
|
||||
replace into t1 values ('jonas % ');
|
||||
) engine=ndbcluster default charset=latin1;
|
||||
|
||||
insert into t1 values ('aaabb');
|
||||
select * from t1;
|
||||
replace into t1 set a = 'AAABB';
|
||||
select * from t1;
|
||||
replace into t1 set a = 'aAaBb';
|
||||
select * from t1;
|
||||
replace into t1 set a = 'aaabb';
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
|
@ -360,4 +360,40 @@ connection master;
|
||||
drop function fn1;
|
||||
drop database mysqltest1;
|
||||
drop user "zedjzlcsjhd"@127.0.0.1;
|
||||
use test;
|
||||
sync_slave_with_master;
|
||||
use test;
|
||||
|
||||
#
|
||||
# Bug#14077 "Failure to replicate a stored function with a cursor":
|
||||
# verify that stored routines with cursors work on slave.
|
||||
#
|
||||
connection master;
|
||||
--disable_warnings
|
||||
drop function if exists f1;
|
||||
--enable_warnings
|
||||
delimiter |;
|
||||
create function f1() returns int reads sql data
|
||||
begin
|
||||
declare var integer;
|
||||
declare c cursor for select a from v1;
|
||||
open c;
|
||||
fetch c into var;
|
||||
close c;
|
||||
return var;
|
||||
end|
|
||||
delimiter ;|
|
||||
create view v1 as select 1 as a;
|
||||
create table t1 (a int);
|
||||
insert into t1 (a) values (f1());
|
||||
select * from t1;
|
||||
drop view v1;
|
||||
drop function f1;
|
||||
sync_slave_with_master;
|
||||
connection slave;
|
||||
select * from t1;
|
||||
|
||||
# cleanup
|
||||
connection master;
|
||||
drop table t1;
|
||||
reset master;
|
||||
|
@ -1233,6 +1233,10 @@ begin
|
||||
select password;
|
||||
end|
|
||||
|
||||
# Check that an error message is sent
|
||||
--error ER_PARSE_ERROR
|
||||
set names='foo2'|
|
||||
|
||||
--error ER_SP_BAD_VAR_SHADOW
|
||||
create procedure bug13510_2()
|
||||
begin
|
||||
@ -1263,8 +1267,168 @@ call bug13510_4()|
|
||||
|
||||
drop procedure bug13510_3|
|
||||
drop procedure bug13510_4|
|
||||
|
||||
|
||||
#
|
||||
# Test that statements which implicitly commit transaction are prohibited
|
||||
# in stored function and triggers. Attempt to create function or trigger
|
||||
# containing such statement should produce error (includes test for
|
||||
# bug #13627).
|
||||
#
|
||||
--disable_warnings
|
||||
drop function if exists bug_13627_f|
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (a int)|
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DROP TRIGGER test1; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN DROP TRIGGER test1; return 1; END |
|
||||
|
||||
-- error ER_SP_BADSTATEMENT
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN load table t1 from master; END |
|
||||
-- error ER_SP_BADSTATEMENT
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN load table t1 from master; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create table t2 (a int); END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create table t2 (a int); return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create index t1_i on t1 (a); END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create index t1_i on t1 (a); return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN alter table t1 add column b int; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN alter table t1 add column b int; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN rename table t1 to t2; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN rename table t1 to t2; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN truncate table t1; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN truncate table t1; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop table t1; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN drop table t1; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop index t1_i on t1; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN drop index t1_i on t1; return 1; END |
|
||||
|
||||
-- error ER_SP_BADSTATEMENT
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN unlock tables; END |
|
||||
-- error ER_SP_BADSTATEMENT
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN unlock tables; return 1; END |
|
||||
|
||||
-- error ER_SP_BADSTATEMENT
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN LOCK TABLE t1 READ; END |
|
||||
-- error ER_SP_BADSTATEMENT
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN LOCK TABLE t1 READ; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create database mysqltest; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create database mysqltest; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop database mysqltest; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN drop database mysqltest; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create user 'mysqltest_1'; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create user 'mysqltest_1'; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop user 'mysqltest_1'; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN drop user 'mysqltest_1'; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN rename user 'mysqltest_2' to 'mysqltest_1'; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN rename user 'mysqltest_2' to 'mysqltest_1'; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create view v1 as select 1; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create view v1 as select 1; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN alter view v1 as select 1; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN alter view v1 as select 1; return 1; END |
|
||||
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop view v1; END |
|
||||
-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN drop view v1; return 1; END |
|
||||
|
||||
-- error ER_SP_NO_RECURSIVE_CREATE
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create trigger tr2 before insert on t1 for each row do select 1; END |
|
||||
-- error ER_SP_NO_RECURSIVE_CREATE
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create trigger tr2 before insert on t1 for each row do select 1; return 1; END |
|
||||
|
||||
-- error ER_SP_NO_DROP_SP
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop function bug_13627_f; END |
|
||||
-- error ER_SP_NO_DROP_SP
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN drop function bug_13627_f; return 1; END |
|
||||
|
||||
-- error ER_SP_NO_RECURSIVE_CREATE
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create function f2 () returns int return 1; END |
|
||||
-- error ER_SP_NO_RECURSIVE_CREATE
|
||||
CREATE FUNCTION bug_13627_f() returns int BEGIN create function f2 () returns int return 1; return 1; END |
|
||||
|
||||
CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW
|
||||
BEGIN
|
||||
CREATE TEMPORARY TABLE t2 (a int);
|
||||
DROP TEMPORARY TABLE t2;
|
||||
END |
|
||||
CREATE FUNCTION bug_13627_f() returns int
|
||||
BEGIN
|
||||
CREATE TEMPORARY TABLE t2 (a int);
|
||||
DROP TEMPORARY TABLE t2;
|
||||
return 1;
|
||||
END |
|
||||
|
||||
drop table t1|
|
||||
drop function bug_13627_f|
|
||||
|
||||
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;
|
||||
create table t2 as select 1 a;
|
||||
create function bug12329() returns int return (select a from t1);
|
||||
prepare stmt1 from 'select bug12329()';
|
||||
execute stmt1;
|
||||
drop function bug12329;
|
||||
create function bug12329() returns int return (select a+100 from t2);
|
||||
select bug12329();
|
||||
# Until we implement proper mechanism for invalidation of PS/SP when table
|
||||
# or SP's are changed the following statement will fail with 'Table ... was
|
||||
# not locked' error (this mechanism should be based on the new TDC).
|
||||
--error 1100
|
||||
execute stmt1;
|
||||
deallocate prepare stmt1;
|
||||
drop function bug12329;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# Bug#13514 "server crash when create a stored procedure before choose a
|
||||
# database" and
|
||||
|
@ -4541,6 +4541,59 @@ drop table t3, t4|
|
||||
drop procedure bug14210|
|
||||
set @@session.max_heap_table_size=default|
|
||||
|
||||
|
||||
#
|
||||
# BUG#1473: Dumping of stored functions seems to cause corruption in
|
||||
# the function body
|
||||
#
|
||||
--disable_warnings
|
||||
drop function if exists bug14723|
|
||||
drop procedure if exists bug14723|
|
||||
--enable_warnings
|
||||
|
||||
delimiter ;;|
|
||||
/*!50003 create function bug14723()
|
||||
returns bigint(20)
|
||||
main_loop: begin
|
||||
return 42;
|
||||
end */;;
|
||||
show create function bug14723;;
|
||||
select bug14723();;
|
||||
|
||||
/*!50003 create procedure bug14723()
|
||||
main_loop: begin
|
||||
select 42;
|
||||
end */;;
|
||||
show create procedure bug14723;;
|
||||
call bug14723();;
|
||||
|
||||
delimiter |;;
|
||||
|
||||
drop function bug14723|
|
||||
drop procedure bug14723|
|
||||
|
||||
#
|
||||
# Bug#14845 "mysql_stmt_fetch returns MYSQL_NO_DATA when COUNT(*) is 0"
|
||||
# Check that when fetching from a cursor, COUNT(*) works properly.
|
||||
#
|
||||
create procedure bug14845()
|
||||
begin
|
||||
declare a char(255);
|
||||
declare done int default 0;
|
||||
declare c cursor for select count(*) from t1 where 1 = 0;
|
||||
declare continue handler for sqlstate '02000' set done = 1;
|
||||
open c;
|
||||
repeat
|
||||
fetch c into a;
|
||||
if not done then
|
||||
select a;
|
||||
end if;
|
||||
until done end repeat;
|
||||
close c;
|
||||
end|
|
||||
call bug14845()|
|
||||
drop procedure bug14845|
|
||||
|
||||
#
|
||||
# BUG#NNNN: New bug synopsis
|
||||
#
|
||||
|
@ -875,3 +875,42 @@ drop function f1;
|
||||
drop view v1;
|
||||
drop table t1, t2, t3;
|
||||
--enable_parsing
|
||||
|
||||
#
|
||||
# Test for bug #13399 "Crash when executing PS/SP which should activate
|
||||
# trigger which is now dropped". See also test for similar bug for stored
|
||||
# routines in sp-error.test (#12329).
|
||||
create table t1 (id int);
|
||||
create table t2 (id int);
|
||||
create trigger t1_bi before insert on t1 for each row insert into t2 values (new.id);
|
||||
prepare stmt1 from "insert into t1 values (10)";
|
||||
create procedure p1() insert into t1 values (10);
|
||||
call p1();
|
||||
# Actually it is enough to do FLUSH TABLES instead of DROP TRIGGER
|
||||
drop trigger t1_bi;
|
||||
# Server should not crash on these two statements
|
||||
execute stmt1;
|
||||
call p1();
|
||||
deallocate prepare stmt1;
|
||||
drop procedure p1;
|
||||
|
||||
# Let us test more complex situation when we alter trigger in such way that
|
||||
# it uses different set of tables (or simply add new trigger).
|
||||
create table t3 (id int);
|
||||
create trigger t1_bi after insert on t1 for each row insert into t2 values (new.id);
|
||||
prepare stmt1 from "insert into t1 values (10)";
|
||||
create procedure p1() insert into t1 values (10);
|
||||
call p1();
|
||||
# Altering trigger forcing it use different set of tables
|
||||
drop trigger t1_bi;
|
||||
create trigger t1_bi after insert on t1 for each row insert into t3 values (new.id);
|
||||
# Until we implement proper mechanism for invalidation of PS/SP when table
|
||||
# or SP's are changed these two statements will fail with 'Table ... was
|
||||
# not locked' error (this mechanism should be based on the new TDC).
|
||||
--error 1100
|
||||
execute stmt1;
|
||||
--error 1100
|
||||
call p1();
|
||||
deallocate prepare stmt1;
|
||||
drop procedure p1;
|
||||
drop table t1, t2, t3;
|
||||
|
@ -147,11 +147,9 @@ insert into t1 values (1), (2), (3);
|
||||
create view v1 (a) as select a+1 from t1;
|
||||
create view v2 (a) as select a-1 from t1;
|
||||
|
||||
--disable_parsing # WL #2486 should enable these tests
|
||||
select * from t1 natural left join v1;
|
||||
select * from v2 natural left join t1;
|
||||
select * from v2 natural left join v1;
|
||||
--enable_parsing
|
||||
|
||||
drop view v1, v2;
|
||||
drop table t1;
|
||||
@ -2194,6 +2192,15 @@ DROP VIEW v1,v2;
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
#
|
||||
# Bug #13622 Wrong view .frm created if some field's alias contain \n
|
||||
#
|
||||
create table t1 (f1 int);
|
||||
create view v1 as select t1.f1 as '123
|
||||
456' from t1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
||||
# Bug #14466 lost sort order in GROUP_CONCAT() in a view
|
||||
#
|
||||
create table t1 (f1 int, f2 int);
|
||||
@ -2257,3 +2264,23 @@ drop view v1;
|
||||
create definer = current_user sql security invoker view v1 as select 1;
|
||||
show create view v1;
|
||||
drop view v1;
|
||||
|
||||
#
|
||||
# Bug #14816 test_if_order_by_key() expected only Item_fields.
|
||||
#
|
||||
create table t1 (id INT, primary key(id));
|
||||
insert into t1 values (1),(2);
|
||||
create view v1 as select * from t1;
|
||||
explain select id from v1 order by id;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #14850 Item_ref's values wasn't updated
|
||||
#
|
||||
create table t1(f1 int, f2 int);
|
||||
insert into t1 values (null, 10), (null,2);
|
||||
create view v1 as select * from t1;
|
||||
select f1, sum(f2) from v1 group by f1;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
Reference in New Issue
Block a user