mirror of
https://github.com/MariaDB/server.git
synced 2025-02-09 23:24:11 +01:00
![Alexander Barkov](/assets/img/avatar_default.png)
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.
35 lines
814 B
Text
35 lines
814 B
Text
--echo #
|
|
--echo # Start of 10.5 tests
|
|
--echo #
|
|
|
|
--echo #
|
|
--echo # 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
|
|
--echo #
|
|
|
|
SET sql_mode= 'oracle';
|
|
--error ER_SP_LILABEL_MISMATCH
|
|
BEGIN CONTINUE WHEN f0();
|
|
|
|
SET sql_mode= 'oracle';
|
|
--error ER_SP_LILABEL_MISMATCH
|
|
BEGIN CONTINUE label WHEN f0();
|
|
|
|
SET sql_mode= 'oracle';
|
|
--error ER_SP_LILABEL_MISMATCH
|
|
BEGIN EXIT WHEN f0();
|
|
|
|
SET sql_mode= 'oracle';
|
|
--error ER_SP_LILABEL_MISMATCH
|
|
BEGIN EXIT label WHEN f0();
|
|
|
|
SET sql_mode= 'oracle';
|
|
--error ER_PARSE_ERROR
|
|
--query WHILE f(8)<1 DO SELECT 1;
|
|
|
|
SET sql_mode= 'oracle';
|
|
--error ER_SP_BADRETURN
|
|
BEGIN DECLARE CONTINUE HANDLER FOR SQLEXCEPTION RETURN f0();
|
|
|
|
--echo #
|
|
--echo # End of 10.5 tests
|
|
--echo #
|