mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	 4792ed4220
			
		
	
	4792ed4220
	
	
	
		
			
			comments)
This change set is for 5.1 (manually merged)
Before this fix, the server would accept queries that contained comments,
even when the comments were not properly closed with a '*' '/' marker.
For example,
  select 1 /* + 2 <EOF>
would be accepted as
  select 1 /* + 2 */ <EOF>
and executed as
  select 1
With this fix, the server now rejects queries with unclosed comments
as syntax errors.
Both regular comments ('/' '*') and special comments ('/' '*' '!') must be
closed with '*' '/' to be parsed correctly.
		
	
		
			
				
	
	
		
			54 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| select 1+2/*hello*/+3;
 | |
| 1+2/*hello*/+3
 | |
| 6
 | |
| select 1 /* long
 | |
| multi line comment */;
 | |
| 1
 | |
| 1
 | |
| ;
 | |
| ERROR 42000: Query was empty
 | |
| select 1 /*!32301 +1 */;
 | |
| 1  +1
 | |
| 2
 | |
| select 1 /*!52301 +1 */;
 | |
| 1
 | |
| 1
 | |
| select 1--1;
 | |
| 1--1
 | |
| 2
 | |
| select 1 --2
 | |
| +1;
 | |
| 1 --2
 | |
| +1
 | |
| 4
 | |
| select 1 # The rest of the row will be ignored
 | |
| ;
 | |
| 1
 | |
| 1
 | |
| /* line with only comment */;
 | |
| select 1/*!2*/;
 | |
| 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 '2*/' at line 1
 | |
| select 1/*!000002*/;
 | |
| 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 '2*/' at line 1
 | |
| select 1/*!999992*/;
 | |
| 1
 | |
| 1
 | |
| select 1 + /*!00000 2 */ + 3 /*!99999 noise*/ + 4;
 | |
| 1 +  2  + 3  + 4
 | |
| 10
 | |
| drop table if exists table_28779;
 | |
| create table table_28779 (a int);
 | |
| prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*' AND b = 'bar';";
 | |
| 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 '/*' AND b = 'bar'' at line 1
 | |
| prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*' AND b = 'bar';*";
 | |
| 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 '/*' AND b = 'bar';*' at line 1
 | |
| prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*! AND 2=2;";
 | |
| 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
 | |
| prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*! AND 2=2;*";
 | |
| 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
 | |
| prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*!98765' AND b = 'bar';";
 | |
| 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 '/*!98765' AND b = 'bar'' at line 1
 | |
| prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*!98765' AND b = 'bar';*";
 | |
| 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 '/*!98765' AND b = 'bar';*' at line 1
 | |
| drop table table_28779;
 |