219 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			MySQL
		
	
	
	
		
		
			
		
	
	
			219 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			MySQL
		
	
	
	
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								## Notes
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Test case for Bug#11230
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The point of this test is to make sure that '#', '-- ' and '/* ... */'
							 | 
						||
| 
								 | 
							
								# comments, as well as empty lines, are sent from the client to the server.
							 | 
						||
| 
								 | 
							
								# This is to ensure better error reporting, and to keep comments in the code
							 | 
						||
| 
								 | 
							
								# for stored procedures / functions / triggers (Bug#11230).
							 | 
						||
| 
								 | 
							
								# As a result, be careful when editing comments in this script, they do
							 | 
						||
| 
								 | 
							
								# matter.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Also, note that this is a script for **mysql**, not mysqltest.
							 | 
						||
| 
								 | 
							
								# This is critical, as the mysqltest client interprets comments differently.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								## Setup
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## See mysql_comments.test for initial cleanup
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Test tables
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# t1 is reused throughout the file, and dropped at the end.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								drop table if exists t1;
							 | 
						||
| 
								 | 
							
								create table t1 (
							 | 
						||
| 
								 | 
							
								  id   char(16) not null default '',
							 | 
						||
| 
								 | 
							
								  data int not null
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								## Comments outside statements
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Ignored 1a
							 | 
						||
| 
								 | 
							
								-- Ignored 1b
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								   Ignored 1c
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select 1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								## Comments inside statements
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select # comment 1a
							 | 
						||
| 
								 | 
							
								# comment 2a
							 | 
						||
| 
								 | 
							
								-- comment 2b
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								   comment 2c
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								2
							 | 
						||
| 
								 | 
							
								; # not strictly inside, but on same line
							 | 
						||
| 
								 | 
							
								# ignored
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								## Comments inside functions
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop function if exists foofct ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create function foofct (x char(20))
							 | 
						||
| 
								 | 
							
								returns char(20)
							 | 
						||
| 
								 | 
							
								/* not inside the body yet */
							 | 
						||
| 
								 | 
							
								return
							 | 
						||
| 
								 | 
							
								-- comment 1a
							 | 
						||
| 
								 | 
							
								# comment 1b
							 | 
						||
| 
								 | 
							
								/* comment 1c */
							 | 
						||
| 
								 | 
							
								x; # after body, on same line
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select foofct("call 1");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								show create function foofct;
							 | 
						||
| 
								 | 
							
								drop function foofct;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								delimiter |
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create function foofct(x char(20))
							 | 
						||
| 
								 | 
							
								returns char(20)
							 | 
						||
| 
								 | 
							
								begin
							 | 
						||
| 
								 | 
							
								  -- comment 1a
							 | 
						||
| 
								 | 
							
								  # comment 1b
							 | 
						||
| 
								 | 
							
								  /*
							 | 
						||
| 
								 | 
							
								     comment 1c
							 | 
						||
| 
								 | 
							
								  */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  -- empty line below
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  -- empty line above
							 | 
						||
| 
								 | 
							
								  return x;
							 | 
						||
| 
								 | 
							
								end|
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								delimiter ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select foofct("call 2");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								show create function foofct;
							 | 
						||
| 
								 | 
							
								drop function foofct;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								## Comments inside stored procedures
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Empty statement
							 | 
						||
| 
								 | 
							
								drop procedure if exists empty;
							 | 
						||
| 
								 | 
							
								create procedure empty()
							 | 
						||
| 
								 | 
							
								begin
							 | 
						||
| 
								 | 
							
								end;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								call empty();
							 | 
						||
| 
								 | 
							
								show create procedure empty;
							 | 
						||
| 
								 | 
							
								drop procedure empty;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop procedure if exists foosp;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## These comments are before the create, and will be lost
							 | 
						||
| 
								 | 
							
								# Comment 1a
							 | 
						||
| 
								 | 
							
								-- Comment 1b
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								   Comment 1c
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								create procedure foosp()
							 | 
						||
| 
								 | 
							
								/* Comment not quiet in the body yet */
							 | 
						||
| 
								 | 
							
								  insert into test.t1
							 | 
						||
| 
								 | 
							
								## These comments are part of the procedure body, and should be kept.
							 | 
						||
| 
								 | 
							
								# Comment 2a
							 | 
						||
| 
								 | 
							
								-- Comment 2b
							 | 
						||
| 
								 | 
							
								/* Comment 2c */
							 | 
						||
| 
								 | 
							
								  -- empty line below
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  -- empty line above
							 | 
						||
| 
								 | 
							
								  values ("foo", 42); # comment 3, still part of the body
							 | 
						||
| 
								 | 
							
								## After the ';', therefore not part of the body
							 | 
						||
| 
								 | 
							
								# comment 4a
							 | 
						||
| 
								 | 
							
								-- Comment 4b
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								   Comment 4c
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								call foosp();
							 | 
						||
| 
								 | 
							
								select * from t1;
							 | 
						||
| 
								 | 
							
								delete from t1;
							 | 
						||
| 
								 | 
							
								show create procedure foosp;
							 | 
						||
| 
								 | 
							
								drop procedure foosp;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop procedure if exists nicesp;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								delimiter |
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create procedure nicesp(a int)
							 | 
						||
| 
								 | 
							
								begin
							 | 
						||
| 
								 | 
							
								  -- declare some variables here
							 | 
						||
| 
								 | 
							
								  declare b int;
							 | 
						||
| 
								 | 
							
								  declare c float;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  -- do more stuff here
							 | 
						||
| 
								 | 
							
								  -- commented nicely and so on
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  -- famous last words ...
							 | 
						||
| 
								 | 
							
								end|
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								delimiter ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								show create procedure nicesp;
							 | 
						||
| 
								 | 
							
								drop procedure nicesp;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								## Comments inside triggers
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop trigger if exists t1_empty;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create trigger t1_empty after delete on t1
							 | 
						||
| 
								 | 
							
								for each row
							 | 
						||
| 
								 | 
							
								begin
							 | 
						||
| 
								 | 
							
								end;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								show create trigger t1_empty;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop trigger if exists t1_bi;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								delimiter |
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create trigger t1_bi before insert on t1
							 | 
						||
| 
								 | 
							
								for each row
							 | 
						||
| 
								 | 
							
								begin
							 | 
						||
| 
								 | 
							
								# comment 1a
							 | 
						||
| 
								 | 
							
								-- comment 1b
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								   comment 1c
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								  -- declare some variables here
							 | 
						||
| 
								 | 
							
								  declare b int;
							 | 
						||
| 
								 | 
							
								  declare c float;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  -- do more stuff here
							 | 
						||
| 
								 | 
							
								  -- commented nicely and so on
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  -- famous last words ...
							 | 
						||
| 
								 | 
							
								  set NEW.data := 12;
							 | 
						||
| 
								 | 
							
								end|
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								delimiter ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								show create trigger t1_bi;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# also make sure the trigger still works
							 | 
						||
| 
								 | 
							
								insert into t1(id) value ("trig");
							 | 
						||
| 
								 | 
							
								select * from t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								## Cleanup
							 | 
						||
| 
								 | 
							
								##============================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop table t1;
							 |