1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

Optimization for MDEV-10411 Providing compatibility for basic PL/SQL constructs

When processing an SP body:

CREATE PROCEDURE p1 (parameters)
AS [ declarations ]
BEGIN statements
[ EXCEPTION exceptions ]
END;

the parser generates two "jump" instructions:
- from the end of "declarations" to the beginning of EXCEPTION
- from the end of EXCEPTION to "statements"

These jumps are useless if EXCEPTION does not exist.
This patch makes sure that these two "jump" instructions are
generated only if EXCEPTION really exists.
This commit is contained in:
Alexander Barkov
2016-08-15 21:46:22 +04:00
parent 4940a91a5f
commit d2b007d6bc
6 changed files with 49 additions and 7 deletions

View File

@ -21,7 +21,7 @@ END;
/
SHOW PROCEDURE CODE p1;
Pos Instruction
0 jump 3
0 jump 2
CALL p1;
DROP PROCEDURE p1;
# No HANDLER declarations, no code, some exceptions
@ -133,10 +133,9 @@ SHOW PROCEDURE CODE p1;
Pos Instruction
0 hpush_jump 3 1 EXIT
1 set v@0 123
2 hreturn 0 5
2 hreturn 0 4
3 set v@0 223
4 jump 5
5 hpop 1
4 hpop 1
set @v= 10;
CALL p1(@v);
SELECT @v;