mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	37167 funcs_1: Many tests fail if the embedded
                  server is used.
   37164 funcs_1: Some tests fail if an optional
                  character set is missing.
   + some cleanup within the testsuite related to the
     fixes above
   + some adjustments to open bugs on Mac OS X
2. Skip tests which suffer from bug
   37456 funcs_1: Several tests crash when used
                  with embedded server
3. Minor cleanup in some tests
		
	
		
			
				
	
	
		
			531 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			531 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| SET @@session.sql_mode = 'NO_ENGINE_SUBSTITUTION';
 | |
| USE test;
 | |
| drop table if exists tb3;
 | |
| create table tb3 (
 | |
| f118 char not null DEFAULT 'a',
 | |
| f119 char binary not null DEFAULT b'101',
 | |
| f120 char ascii not null DEFAULT b'101',
 | |
| f121 char(50),
 | |
| f122 char(50),
 | |
| f129 binary not null DEFAULT b'101',
 | |
| f130 tinyint not null DEFAULT 99,
 | |
| f131 tinyint unsigned not null DEFAULT 99,
 | |
| f132 tinyint zerofill not null DEFAULT 99,
 | |
| f133 tinyint unsigned zerofill not null DEFAULT 99,
 | |
| f134 smallint not null DEFAULT 999,
 | |
| f135 smallint unsigned not null DEFAULT 999,
 | |
| f136 smallint zerofill not null DEFAULT 999,
 | |
| f137 smallint unsigned zerofill not null DEFAULT 999,
 | |
| f138 mediumint not null DEFAULT 9999,
 | |
| f139 mediumint unsigned not null DEFAULT 9999,
 | |
| f140 mediumint zerofill not null DEFAULT 9999,
 | |
| f141 mediumint unsigned zerofill not null DEFAULT 9999,
 | |
| f142 int not null DEFAULT 99999,
 | |
| f143 int unsigned not null DEFAULT 99999,
 | |
| f144 int zerofill not null DEFAULT 99999,
 | |
| f145 int unsigned zerofill not null DEFAULT 99999,
 | |
| f146 bigint not null DEFAULT 999999,
 | |
| f147 bigint unsigned not null DEFAULT 999999,
 | |
| f148 bigint zerofill not null DEFAULT 999999,
 | |
| f149 bigint unsigned zerofill not null DEFAULT 999999,
 | |
| f150 decimal not null DEFAULT 999.999,
 | |
| f151 decimal unsigned not null DEFAULT 999.17,
 | |
| f152 decimal zerofill not null DEFAULT 999.999,
 | |
| f153 decimal unsigned zerofill,
 | |
| f154 decimal (0),
 | |
| f155 decimal (64),
 | |
| f156 decimal (0) unsigned,
 | |
| f157 decimal (64) unsigned,
 | |
| f158 decimal (0) zerofill,
 | |
| f159 decimal (64) zerofill,
 | |
| f160 decimal (0) unsigned zerofill,
 | |
| f161 decimal (64) unsigned zerofill,
 | |
| f162 decimal (0,0),
 | |
| f163 decimal (63,30),
 | |
| f164 decimal (0,0) unsigned,
 | |
| f165 decimal (63,30) unsigned,
 | |
| f166 decimal (0,0) zerofill,
 | |
| f167 decimal (63,30) zerofill,
 | |
| f168 decimal (0,0) unsigned zerofill,
 | |
| f169 decimal (63,30) unsigned zerofill,
 | |
| f170 numeric,
 | |
| f171 numeric unsigned,
 | |
| f172 numeric zerofill,
 | |
| f173 numeric unsigned zerofill,
 | |
| f174 numeric (0),
 | |
| f175 numeric (64)
 | |
| ) engine = <engine_to_be_used>;
 | |
| Warnings:
 | |
| Note	1265	Data truncated for column 'f150' at row 1
 | |
| Note	1265	Data truncated for column 'f151' at row 1
 | |
| Note	1265	Data truncated for column 'f152' at row 1
 | |
| 
 | |
| Testcase: 3.5:
 | |
| --------------
 | |
| create User test_general@localhost;
 | |
| set password for test_general@localhost = password('PWD');
 | |
| revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
 | |
| create User test_super@localhost;
 | |
| set password for test_super@localhost = password('PWD');
 | |
| grant ALL on *.* to test_super@localhost with grant OPTION;
 | |
| connect(localhost,test_general,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
 | |
| connect(localhost,test_super,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
 | |
| 
 | |
| Testcase 3.5.8.1: (implied in previous tests)
 | |
| ---------------------------------------------
 | |
| 
 | |
| Testcase 3.5.8.2: (implied in previous tests)
 | |
| ---------------------------------------------
 | |
| 
 | |
| Testcase 3.5.8.3/4:
 | |
| -------------------
 | |
| create database db_test;
 | |
| grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general;
 | |
| grant LOCK TABLES on db_test.* to test_general;
 | |
| Use db_test;
 | |
| create table t1_i (
 | |
| i120 char ascii not null DEFAULT b'101',
 | |
| i136 smallint zerofill not null DEFAULT 999,
 | |
| i144 int zerofill not null DEFAULT 99999,
 | |
| i163 decimal (63,30)) engine=<engine_to_be_used>;
 | |
| create table t1_u (
 | |
| u120 char ascii not null DEFAULT b'101',
 | |
| u136 smallint zerofill not null DEFAULT 999,
 | |
| u144 int zerofill not null DEFAULT 99999,
 | |
| u163 decimal (63,30)) engine=<engine_to_be_used>;
 | |
| create table t1_d (
 | |
| d120 char ascii not null DEFAULT b'101',
 | |
| d136 smallint zerofill not null DEFAULT 999,
 | |
| d144 int zerofill not null DEFAULT 99999,
 | |
| d163 decimal (63,30)) engine=<engine_to_be_used>;
 | |
| Insert into t1_u values ('a',111,99999,999.99);
 | |
| Insert into t1_u values ('b',222,99999,999.99);
 | |
| Insert into t1_u values ('c',333,99999,999.99);
 | |
| Insert into t1_u values ('d',222,99999,999.99);
 | |
| Insert into t1_u values ('e',222,99999,999.99);
 | |
| Insert into t1_u values ('f',333,99999,999.99);
 | |
| Insert into t1_d values ('a',111,99999,999.99);
 | |
| Insert into t1_d values ('b',222,99999,999.99);
 | |
| Insert into t1_d values ('c',333,99999,999.99);
 | |
| Insert into t1_d values ('d',444,99999,999.99);
 | |
| Insert into t1_d values ('e',222,99999,999.99);
 | |
| Insert into t1_d values ('f',222,99999,999.99);
 | |
| 
 | |
| 3.5.8.4 - multiple SQL
 | |
| ----------------------
 | |
| use test;
 | |
| Create trigger trg1 AFTER INSERT on tb3 for each row
 | |
| BEGIN
 | |
| insert into db_test.t1_i
 | |
| values (new.f120, new.f136, new.f144, new.f163);
 | |
| update db_test.t1_u
 | |
| set u144=new.f144, u163=new.f163
 | |
| where u136=new.f136;
 | |
| delete from db_test.t1_d where d136= new.f136;
 | |
| select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u
 | |
| where u136= new.f136;
 | |
| END//
 | |
| Use test;
 | |
| set @test_var=0;
 | |
| Insert into tb3 (f120, f122, f136, f144, f163)
 | |
| values ('1', 'Test 3.5.8.4', 222, 23456, 1.05);
 | |
| Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4';
 | |
| f120	f122	f136	f144	f163
 | |
| 1	Test 3.5.8.4	00222	0000023456	1.050000000000000000000000000000
 | |
| select * from db_test.t1_i;
 | |
| i120	i136	i144	i163
 | |
| 1	00222	0000023456	1.050000000000000000000000000000
 | |
| select * from db_test.t1_u;
 | |
| u120	u136	u144	u163
 | |
| a	00111	0000099999	999.990000000000000000000000000000
 | |
| b	00222	0000023456	1.050000000000000000000000000000
 | |
| c	00333	0000099999	999.990000000000000000000000000000
 | |
| d	00222	0000023456	1.050000000000000000000000000000
 | |
| e	00222	0000023456	1.050000000000000000000000000000
 | |
| f	00333	0000099999	999.990000000000000000000000000000
 | |
| select * from db_test.t1_d;
 | |
| d120	d136	d144	d163
 | |
| a	00111	0000099999	999.990000000000000000000000000000
 | |
| c	00333	0000099999	999.990000000000000000000000000000
 | |
| d	00444	0000099999	999.990000000000000000000000000000
 | |
| select @test_var;
 | |
| @test_var
 | |
| 3.150000000000000000000000000000
 | |
| 
 | |
| 3.5.8.4 - single SQL - insert
 | |
| -----------------------------
 | |
| Create trigger trg2 BEFORE UPDATE on tb3 for each row
 | |
| BEGIN
 | |
| insert into db_test.t1_i
 | |
| values (new.f120, new.f136, new.f144, new.f163);
 | |
| END//
 | |
| Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
 | |
| f120	f122	f136	f144	f163
 | |
| 1	Test 3.5.8.4	00222	0000023456	1.050000000000000000000000000000
 | |
| select * from db_test.t1_i order by i120;
 | |
| i120	i136	i144	i163
 | |
| 1	00222	0000023456	1.050000000000000000000000000000
 | |
| update tb3 set f120='I', f122='Test 3.5.8.4-Single Insert'
 | |
| 		 where f122='Test 3.5.8.4';
 | |
| Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
 | |
| f120	f122	f136	f144	f163
 | |
| I	Test 3.5.8.4-Single Insert	00222	0000023456	1.050000000000000000000000000000
 | |
| select * from db_test.t1_i order by i120;
 | |
| i120	i136	i144	i163
 | |
| 1	00222	0000023456	1.050000000000000000000000000000
 | |
| I	00222	0000023456	1.050000000000000000000000000000
 | |
| 
 | |
| 3.5.8.4 - single SQL - update
 | |
| -----------------------------
 | |
| drop trigger trg2;
 | |
| Create trigger trg3 BEFORE UPDATE on tb3 for each row
 | |
| update db_test.t1_u
 | |
| set u120=new.f120
 | |
| where u136=new.f136;
 | |
| update tb3 set f120='U', f122='Test 3.5.8.4-Single Update'
 | |
| 		 where f122='Test 3.5.8.4-Single Insert';
 | |
| Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
 | |
| f120	f122	f136	f144	f163
 | |
| U	Test 3.5.8.4-Single Update	00222	0000023456	1.050000000000000000000000000000
 | |
| select * from db_test.t1_u order by u120;
 | |
| u120	u136	u144	u163
 | |
| a	00111	0000099999	999.990000000000000000000000000000
 | |
| c	00333	0000099999	999.990000000000000000000000000000
 | |
| f	00333	0000099999	999.990000000000000000000000000000
 | |
| U	00222	0000023456	1.050000000000000000000000000000
 | |
| U	00222	0000023456	1.050000000000000000000000000000
 | |
| U	00222	0000023456	1.050000000000000000000000000000
 | |
| 
 | |
| 3.5.8.3/4 - single SQL - delete
 | |
| -------------------------------
 | |
| drop trigger trg3;
 | |
| Create trigger trg4 AFTER UPDATE on tb3 for each row
 | |
| delete from db_test.t1_d where d136= new.f136;
 | |
| update tb3 set f120='D', f136=444,
 | |
| f122='Test 3.5.8.4-Single Delete'
 | |
| 		 where f122='Test 3.5.8.4-Single Update';
 | |
| Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
 | |
| f120	f122	f136	f144	f163
 | |
| D	Test 3.5.8.4-Single Delete	00444	0000023456	1.050000000000000000000000000000
 | |
| select * from db_test.t1_d order by d120;
 | |
| d120	d136	d144	d163
 | |
| a	00111	0000099999	999.990000000000000000000000000000
 | |
| c	00333	0000099999	999.990000000000000000000000000000
 | |
| 
 | |
| 3.5.8.3/4 - single SQL - select
 | |
| -------------------------------
 | |
| drop trigger trg4;
 | |
| Create trigger trg5 AFTER UPDATE on tb3 for each row
 | |
| select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u
 | |
| where u136= new.f136;
 | |
| set @test_var=0;
 | |
| update tb3 set f120='S', f136=111,
 | |
| f122='Test 3.5.8.4-Single Select'
 | |
| 		 where f122='Test 3.5.8.4-Single Delete';
 | |
| Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%';
 | |
| f120	f122	f136	f144	f163
 | |
| S	Test 3.5.8.4-Single Select	00111	0000023456	1.050000000000000000000000000000
 | |
| select @test_var;
 | |
| @test_var
 | |
| 999.990000000000000000000000000000
 | |
| drop trigger trg1;
 | |
| drop trigger trg5;
 | |
| drop database if exists db_test;
 | |
| delete from tb3 where f122 like 'Test 3.5.8.4%';
 | |
| revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost';
 | |
| 
 | |
| Testcase 3.5.8.5 (IF):
 | |
| ----------------------
 | |
| create trigger trg2 before insert on tb3 for each row
 | |
| BEGIN
 | |
| IF new.f120='1' then
 | |
| set @test_var='one', new.f120='2';
 | |
| ELSEIF new.f120='2' then
 | |
| set @test_var='two', new.f120='3';
 | |
| ELSEIF new.f120='3' then
 | |
| set @test_var='three', new.f120='4';
 | |
| END IF;
 | |
| IF (new.f120='4') and (new.f136=10) then
 | |
| set @test_var2='2nd if', new.f120='d';
 | |
| ELSE
 | |
| set @test_var2='2nd else', new.f120='D';
 | |
| END IF;
 | |
| END//
 | |
| set @test_var='Empty', @test_var2=0;
 | |
| Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101);
 | |
| select f120, f122, f136, @test_var, @test_var2
 | |
| from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
 | |
| f120	f122	f136	@test_var	@test_var2
 | |
| D	Test 3.5.8.5-if	00101	one	2nd else
 | |
| Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102);
 | |
| select f120, f122, f136, @test_var, @test_var2
 | |
| from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
 | |
| f120	f122	f136	@test_var	@test_var2
 | |
| D	Test 3.5.8.5-if	00101	two	2nd else
 | |
| D	Test 3.5.8.5-if	00102	two	2nd else
 | |
| Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10);
 | |
| select f120, f122, f136, @test_var, @test_var2
 | |
| from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
 | |
| f120	f122	f136	@test_var	@test_var2
 | |
| d	Test 3.5.8.5-if	00010	three	2nd if
 | |
| D	Test 3.5.8.5-if	00101	three	2nd if
 | |
| D	Test 3.5.8.5-if	00102	three	2nd if
 | |
| Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103);
 | |
| select f120, f122, f136, @test_var, @test_var2
 | |
| from tb3 where f122 = 'Test 3.5.8.5-if' order by f136;
 | |
| f120	f122	f136	@test_var	@test_var2
 | |
| d	Test 3.5.8.5-if	00010	three	2nd else
 | |
| D	Test 3.5.8.5-if	00101	three	2nd else
 | |
| D	Test 3.5.8.5-if	00102	three	2nd else
 | |
| D	Test 3.5.8.5-if	00103	three	2nd else
 | |
| create trigger trg3 before update on tb3 for each row
 | |
| BEGIN
 | |
| ELSEIF new.f120='2' then
 | |
| END IF;
 | |
| 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 'ELSEIF new.f120='2' then
 | |
| END IF;
 | |
| END' at line 3
 | |
| drop trigger trg3//
 | |
| create trigger trg4 before update on tb3 for each row
 | |
| BEGIN
 | |
| IF (new.f120='4') and (new.f136=10) then
 | |
| set @test_var2='2nd if', new.f120='d';
 | |
| ELSE
 | |
| set @test_var2='2nd else', new.f120='D';
 | |
| 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 '' at line 7
 | |
| drop trigger trg4;
 | |
| drop trigger trg2;
 | |
| delete from tb3 where f121='Test 3.5.8.5-if';
 | |
| 
 | |
| Testcase 3.5.8.5-case:
 | |
| ----------------------
 | |
| create trigger trg3 before insert on tb3 for each row
 | |
| BEGIN
 | |
| SET new.f120=char(ascii(new.f120)-32);
 | |
| CASE
 | |
| when new.f136<100 then set new.f136=new.f136+120;
 | |
| when new.f136<10 then set new.f144=777;
 | |
| when new.f136>100 then set new.f120=new.f136-1;
 | |
| END case;
 | |
| CASE
 | |
| when new.f136=200 then set @test_var=CONCAT(new.f120, '=');
 | |
| ELSE set @test_var=concat(new.f120, '*');
 | |
| END case;
 | |
| CASE new.f144
 | |
| when 1 then set @test_var=concat(@test_var, 'one');
 | |
| when 2 then set @test_var=concat(@test_var, 'two');
 | |
| when 3 then set @test_var=concat(@test_var, 'three');
 | |
| when 4 then set @test_var=concat(@test_var, 'four');
 | |
| when 5 then set @test_var=concat(@test_var, 'five');
 | |
| when 6 then set @test_var=concat(@test_var, 'six');
 | |
| when 7 then set @test_var=concat(@test_var, 'seven');
 | |
| when 8 then set @test_var=concat(@test_var, 'eight');
 | |
| when 9 then set @test_var=concat(@test_var, 'nine');
 | |
| when 10 then set @test_var=concat(@test_var, 'ten');
 | |
| when 11 then set @test_var=concat(@test_var, 'eleven');
 | |
| when 12 then set @test_var=concat(@test_var, 'twelve');
 | |
| when 13 then set @test_var=concat(@test_var, 'thirteen');
 | |
| when 14 then set @test_var=concat(@test_var, 'fourteen');
 | |
| when 15 then set @test_var=concat(@test_var, 'fifteen');
 | |
| ELSE set @test_var=CONCAT(new.f120, '*', new.f144);
 | |
| END case;
 | |
| END//
 | |
| set @test_var='Empty';
 | |
| Insert into tb3 (f120, f122, f136, f144)
 | |
| values ('a', 'Test 3.5.8.5-case', 5, 7);
 | |
| select f120, f122, f136, f144, @test_var
 | |
| from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
 | |
| f120	f122	f136	f144	@test_var
 | |
| A	Test 3.5.8.5-case	00125	0000000007	A*seven
 | |
| Insert into tb3 (f120, f122, f136, f144)
 | |
| values ('b', 'Test 3.5.8.5-case', 71,16);
 | |
| select f120, f122, f136, f144, @test_var
 | |
| from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
 | |
| f120	f122	f136	f144	@test_var
 | |
| A	Test 3.5.8.5-case	00125	0000000007	B*0000000016
 | |
| B	Test 3.5.8.5-case	00191	0000000016	B*0000000016
 | |
| Insert into tb3 (f120, f122, f136, f144)
 | |
| values ('c', 'Test 3.5.8.5-case', 80,1);
 | |
| select f120, f122, f136, f144, @test_var
 | |
| from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
 | |
| f120	f122	f136	f144	@test_var
 | |
| A	Test 3.5.8.5-case	00125	0000000007	C=one
 | |
| B	Test 3.5.8.5-case	00191	0000000016	C=one
 | |
| C	Test 3.5.8.5-case	00200	0000000001	C=one
 | |
| Insert into tb3 (f120, f122, f136)
 | |
| values ('d', 'Test 3.5.8.5-case', 152);
 | |
| Warnings:
 | |
| Warning	1265	Data truncated for column 'f120' at row 1
 | |
| select f120, f122, f136, f144, @test_var
 | |
| from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
 | |
| f120	f122	f136	f144	@test_var
 | |
| 1	Test 3.5.8.5-case	00152	0000099999	1*0000099999
 | |
| A	Test 3.5.8.5-case	00125	0000000007	1*0000099999
 | |
| B	Test 3.5.8.5-case	00191	0000000016	1*0000099999
 | |
| C	Test 3.5.8.5-case	00200	0000000001	1*0000099999
 | |
| Insert into tb3 (f120, f122, f136, f144)
 | |
| values ('e', 'Test 3.5.8.5-case', 200, 8);
 | |
| Warnings:
 | |
| Warning	1265	Data truncated for column 'f120' at row 1
 | |
| select f120, f122, f136, f144, @test_var
 | |
| from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
 | |
| f120	f122	f136	f144	@test_var
 | |
| 1	Test 3.5.8.5-case	00152	0000099999	1=eight
 | |
| 1	Test 3.5.8.5-case	00200	0000000008	1=eight
 | |
| A	Test 3.5.8.5-case	00125	0000000007	1=eight
 | |
| B	Test 3.5.8.5-case	00191	0000000016	1=eight
 | |
| C	Test 3.5.8.5-case	00200	0000000001	1=eight
 | |
| Insert into tb3 (f120, f122, f136, f144)
 | |
| values ('f', 'Test 3.5.8.5-case', 100, 8);
 | |
| select f120, f122, f136, f144, @test_var
 | |
| from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136;
 | |
| f120	f122	f136	f144	@test_var
 | |
| 1	Test 3.5.8.5-case	00152	0000099999	1=eight
 | |
| 1	Test 3.5.8.5-case	00200	0000000008	1=eight
 | |
| A	Test 3.5.8.5-case	00125	0000000007	1=eight
 | |
| B	Test 3.5.8.5-case	00191	0000000016	1=eight
 | |
| C	Test 3.5.8.5-case	00200	0000000001	1=eight
 | |
| create trigger trg3a before update on tb3 for each row
 | |
| BEGIN
 | |
| CASE
 | |
| when new.f136<100 then set new.f120='p';
 | |
| 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 '' at line 5
 | |
| drop trigger trg3a;
 | |
| drop trigger trg3;
 | |
| delete from tb3 where f121='Test 3.5.8.5-case';
 | |
| 
 | |
| Testcase 3.5.8.5-loop/leave:
 | |
| ----------------------------
 | |
| Create trigger trg4 after insert on tb3 for each row
 | |
| BEGIN
 | |
| set @counter=0, @flag='Initial';
 | |
| Label1: loop
 | |
| if new.f136<new.f144 then
 | |
| set @counter='Nothing to loop';
 | |
| leave Label1;
 | |
| else
 | |
| set @counter=@counter+1;
 | |
| if new.f136=new.f144+@counter then
 | |
| set @counter=concat(@counter, ' loops');
 | |
| leave Label1;
 | |
| end if;
 | |
| end if;
 | |
| iterate label1;
 | |
| set @flag='Final';
 | |
| END loop Label1;
 | |
| END//
 | |
| Insert into tb3 (f122, f136, f144)
 | |
| values ('Test 3.5.8.5-loop', 2, 8);
 | |
| select @counter, @flag;
 | |
| @counter	@flag
 | |
| Nothing to loop	Initial
 | |
| Insert into tb3 (f122, f136, f144)
 | |
| values ('Test 3.5.8.5-loop', 11, 8);
 | |
| select @counter, @flag;
 | |
| @counter	@flag
 | |
| 3 loops	Initial
 | |
| Create trigger trg4_2 after update on tb3 for each row
 | |
| BEGIN
 | |
| Label1: loop
 | |
| set @counter=@counter+1;
 | |
| END;
 | |
| 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 ';
 | |
| END' at line 5
 | |
| drop trigger trg4_2;
 | |
| drop trigger trg4;
 | |
| delete from tb3 where f122='Test 3.5.8.5-loop';
 | |
| 
 | |
| Testcase 3.5.8.5-repeat:
 | |
| ------------------------
 | |
| Create trigger trg6 after insert on tb3 for each row
 | |
| BEGIN
 | |
| rp_label: REPEAT
 | |
| SET @counter1 = @counter1 + 1;
 | |
| IF (@counter1 MOD 2 = 0) THEN ITERATE rp_label; 	
 | |
| END IF;
 | |
| SET @counter2 = @counter2 + 1;
 | |
| UNTIL @counter1> new.f136 END REPEAT rp_label;
 | |
| END//
 | |
| set @counter1= 0, @counter2= 0;
 | |
| Insert into tb3 (f122, f136)
 | |
| values ('Test 3.5.8.5-repeat', 13);
 | |
| select @counter1, @counter2;
 | |
| @counter1	@counter2
 | |
| 15	8
 | |
| Create trigger trg6_2 after update on tb3 for each row
 | |
| BEGIN
 | |
| REPEAT
 | |
| SET @counter2 = @counter2 + 1;
 | |
| 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 'END' at line 5
 | |
| drop trigger trg6;
 | |
| delete from tb3 where f122='Test 3.5.8.5-repeat';
 | |
| 
 | |
| Testcase 3.5.8.5-while:
 | |
| -----------------------
 | |
| Create trigger trg7 after insert on tb3 for each row
 | |
| wl_label: WHILE @counter1 < new.f136 DO
 | |
| SET @counter1 = @counter1 + 1;
 | |
| IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; 	
 | |
| END IF;
 | |
| SET @counter2 = @counter2 + 1;
 | |
| END WHILE wl_label//
 | |
| set @counter1= 0, @counter2= 0;
 | |
| Insert into tb3 (f122, f136)
 | |
| values ('Test 3.5.8.5-while', 7);
 | |
| select @counter1, @counter2;
 | |
| @counter1	@counter2
 | |
| 7	4
 | |
| Create trigger trg7_2 after update on tb3 for each row
 | |
| BEGIN
 | |
| WHILE @counter1 < new.f136
 | |
| SET @counter1 = @counter1 + 1;
 | |
| 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 'SET @counter1 = @counter1 + 1;
 | |
| END' at line 4
 | |
| delete from tb3 where f122='Test 3.5.8.5-while';
 | |
| drop trigger trg7;
 | |
| 
 | |
| Testcase 3.5.8.6: (requirement void)
 | |
| ------------------------------------
 | |
| CREATE PROCEDURE sp_01 () BEGIN set @v1=1; END//
 | |
| CREATE TRIGGER trg8_1 BEFORE UPDATE ON tb3 FOR EACH ROW
 | |
| BEGIN
 | |
| CALL sp_01 ();
 | |
| END//
 | |
| Insert into tb3 (f120, f122, f136) values ('6', 'Test 3.5.8.6-insert', 101);
 | |
| update tb3 set f120='S', f136=111,
 | |
| f122='Test 3.5.8.6-tr8_1'
 | |
| 	       where f122='Test 3.5.8.6-insert';
 | |
| select f120, f122
 | |
| from tb3 where f122  like 'Test 3.5.8.6%' order by f120;
 | |
| f120	f122
 | |
| S	Test 3.5.8.6-tr8_1
 | |
| DROP TRIGGER trg8_1;
 | |
| DROP PROCEDURE sp_01;
 | |
| 
 | |
| Testcase 3.5.8.7
 | |
| ----------------
 | |
| Create trigger trg9_1 before update on tb3 for each row
 | |
| BEGIN
 | |
| Start transaction;
 | |
| Set new.f120='U';
 | |
| Commit;
 | |
| END//
 | |
| ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
 | |
| Create trigger trg9_2 before delete on tb3 for each row
 | |
| BEGIN
 | |
| Start transaction;
 | |
| Set @var2=old.f120;
 | |
| Rollback;
 | |
| END//
 | |
| ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger.
 | |
| drop user test_general@localhost;
 | |
| drop user test_general;
 | |
| drop user test_super@localhost;
 | |
| DROP TABLE test.tb3;
 |