mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 04:46:15 +01:00 
			
		
		
		
	There was a memory leak under these conditions:
- YYABORT was called in the end-of-rule action of a rule containing expr_lex
- This expr_lex was not bound to any sp_lex_keeper
Bison did not call %destructor <expr_lex> in this case, because its stack
already contained a reduced upper-level rule.
Fixing rules starting with RETURN, CONTINUE, EXIT keywords:
Turning end-of-rule actions with YYABORT into mid-rule actions
by adding an empty trailing { } block. This prevents the upper level
rule from being reduced without calling %destructor <expr_lex>.
In other rules expr_lex is used not immediately before the last
end-of-rule { } block, so they don't need changes.
		
	
			
		
			
				
	
	
		
			27 lines
		
	
	
	
		
			978 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
	
		
			978 B
		
	
	
	
		
			Text
		
	
	
	
	
	
#
 | 
						|
# Start of 10.5 tests
 | 
						|
#
 | 
						|
#
 | 
						|
# MDEV-26186 280 Bytes lost in mysys/array.c, mysys/hash.c, sql/sp.cc, sql/sp.cc, sql/item_create.cc, sql/item_create.cc, sql/sql_yacc.yy:10748 when using oracle sql_mode
 | 
						|
#
 | 
						|
SET sql_mode= 'oracle';
 | 
						|
BEGIN CONTINUE WHEN f0();
 | 
						|
ERROR 42000: CONTINUE with no matching label: 
 | 
						|
SET sql_mode= 'oracle';
 | 
						|
BEGIN CONTINUE label WHEN f0();
 | 
						|
ERROR 42000: CONTINUE with no matching label: label
 | 
						|
SET sql_mode= 'oracle';
 | 
						|
BEGIN EXIT WHEN f0();
 | 
						|
ERROR 42000: EXIT with no matching label: 
 | 
						|
SET sql_mode= 'oracle';
 | 
						|
BEGIN EXIT label WHEN f0();
 | 
						|
ERROR 42000: EXIT with no matching label: label
 | 
						|
SET sql_mode= 'oracle';
 | 
						|
WHILE f(8)<1 DO SELECT 1;;
 | 
						|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DO SELECT 1' at line 1
 | 
						|
SET sql_mode= 'oracle';
 | 
						|
BEGIN DECLARE CONTINUE HANDLER FOR SQLEXCEPTION RETURN f0();
 | 
						|
ERROR 42000: RETURN is only allowed in a FUNCTION
 | 
						|
#
 | 
						|
# End of 10.5 tests
 | 
						|
#
 |