219 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			SQL
		
	
	
	
			
		
		
	
	
			219 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			SQL
		
	
	
	
##============================================================================
 | 
						|
## 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;
 |