mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Fix for:
bug #26215: mysql command line client should not strip comments from SQL statements and bug #11230: Keeping comments when storing stored procedures With the introduction of multiline comments support in the command line client (mysql) in MySQL 4.1, it became impossible to preserve client-side comments within single SQL statements or stored routines. This feature was useful for monitoring tools and maintenance. The patch adds a new option to the command line client ('--enable-comments', '-c') which allows to preserve SQL comments and send them to the server for single SQL statements, and to keep comments in the code for stored procedures / functions / triggers. The patch is a modification of the contributed patch from bug #11230 with the following changes: - code style changes to conform to the coding guidelines - changed is_prefix() to my_strnncoll() to detect the DELIMITER command, since the first one is case-sensitive and not charset-aware - renamed t/comments-51.* to t/mysql_comments.* - removed tests for comments in triggers since 5.0 does not have SHOW CREATE TRIGGER (those tests will be added back in 5.1). The test cases are only for bug #11230. No automated test case for bug #26215 is possible due to the test suite deficiencies (though the cases from the bug report were tested manually).
This commit is contained in:
50
mysql-test/r/mysql_comments.result
Normal file
50
mysql-test/r/mysql_comments.result
Normal file
@ -0,0 +1,50 @@
|
||||
drop table if exists t1;
|
||||
drop function if exists foofct;
|
||||
drop procedure if exists empty;
|
||||
drop procedure if exists foosp;
|
||||
drop procedure if exists nicesp;
|
||||
drop trigger if exists t1_empty;
|
||||
drop trigger if exists t1_bi;
|
||||
"Pass 1 : --disable-comments"
|
||||
1
|
||||
1
|
||||
2
|
||||
2
|
||||
foofct("call 1")
|
||||
call 1
|
||||
Function sql_mode Create Function
|
||||
foofct CREATE DEFINER=`root`@`localhost` FUNCTION `foofct`(x char(20)) RETURNS char(20) CHARSET latin1\nreturn\n\n\n\nx
|
||||
foofct("call 2")
|
||||
call 2
|
||||
Function sql_mode Create Function
|
||||
foofct CREATE DEFINER=`root`@`localhost` FUNCTION `foofct`(x char(20)) RETURNS char(20) CHARSET latin1\nbegin\n \n \n \n\n \n\n \n return x;\nend
|
||||
Procedure sql_mode Create Procedure
|
||||
empty CREATE DEFINER=`root`@`localhost` PROCEDURE `empty`()\nbegin\nend
|
||||
id data
|
||||
foo 42
|
||||
Procedure sql_mode Create Procedure
|
||||
foosp CREATE DEFINER=`root`@`localhost` PROCEDURE `foosp`()\ninsert into test.t1\n\n\n\n\n \n\n \n values ("foo", 42)
|
||||
Procedure sql_mode Create Procedure
|
||||
nicesp CREATE DEFINER=`root`@`localhost` PROCEDURE `nicesp`(a int)\nbegin\n \n declare b int;\n declare c float;\n\n \n \n\n \nend
|
||||
"Pass 2 : --enable-comments"
|
||||
1
|
||||
1
|
||||
2
|
||||
2
|
||||
foofct("call 1")
|
||||
call 1
|
||||
Function sql_mode Create Function
|
||||
foofct CREATE DEFINER=`root`@`localhost` FUNCTION `foofct`(x char(20)) RETURNS char(20) CHARSET latin1\nreturn\n-- comment 1a\n# comment 1b\n/* comment 1c */\nx # after body, on same line
|
||||
foofct("call 2")
|
||||
call 2
|
||||
Function sql_mode Create Function
|
||||
foofct CREATE DEFINER=`root`@`localhost` FUNCTION `foofct`(x char(20)) RETURNS char(20) CHARSET latin1\nbegin\n -- comment 1a\n # comment 1b\n /*\n comment 1c\n */\n\n -- empty line below\n\n -- empty line above\n return x;\nend
|
||||
Procedure sql_mode Create Procedure
|
||||
empty CREATE DEFINER=`root`@`localhost` PROCEDURE `empty`()\nbegin\nend
|
||||
id data
|
||||
foo 42
|
||||
Procedure sql_mode Create Procedure
|
||||
foosp CREATE DEFINER=`root`@`localhost` PROCEDURE `foosp`()\ninsert into test.t1\n## These comments are part of the procedure body, and should be kept.\n# Comment 2a\n-- Comment 2b\n/* Comment 2c */\n -- empty line below\n\n -- empty line above\n values ("foo", 42) # comment 3, still part of the body
|
||||
Procedure sql_mode Create Procedure
|
||||
nicesp CREATE DEFINER=`root`@`localhost` PROCEDURE `nicesp`(a int)\nbegin\n -- declare some variables here\n declare b int;\n declare c float;\n\n -- do more stuff here\n -- commented nicely and so on\n\n -- famous last words ...\nend
|
||||
End of 5.0 tests
|
Reference in New Issue
Block a user