Wrong criteria was used to distinguish the case when there was no
lookahead performed in the parser. Bug affected only statements
ending in one-character token without any optional tail, like CREATE
INDEX and CALL.
mysql-test/r/sp-code.result:
Add result for bug#19207: Final parenthesis omitted for CREATE INDEX
in Stored Procedure
mysql-test/t/sp-code.test:
Add test case for bug#19207: Final parenthesis omitted for CREATE INDEX
in Stored Procedure
sql/sql_yacc.yy:
Use (yychar == YYEMPTY) as the criteria of whether lookahead was not
performed.
Second version.
The problem was that the optimizer didn't work correctly with forwards jumps
to "no-op" hpop and cpop instructions.
Don't generate "no-op" instructions (hpop 0 and cpop 0), it isn't actually
necessary.
mysql-test/r/sp-code.result:
Updated results for new test case (BUG#15737)
mysql-test/t/sp-code.test:
New test case (BUG#15737)
sql/sp_head.cc:
Removed backpatch methods from sp_instr_hpop/cpop, since they're not needed any more.
Added more documentation to sp_head::optimize()
sql/sp_head.h:
Removed backpatch and opt_mark methods from sp_instr_hpop/cpop, since they're not needed
any more.
Added comments to optimizer methods in sp_instr.
sql/sql_yacc.yy:
Don't generate "no-op" hpop and cpop instructions for LEAVE, it's not necessary.
Just generate them when needed.
Also added mysql-test files:
include/is_debug_build.inc
r/is_debug_build.require
r/sp-code.result
t/sp-code.test
sql/sp_head.cc:
Review fixes:
- Some minor editorial changes
- Fixed all print() methods for instructions:
- reserve() enough space
- check return value from reserve()
- use qs_append, with length arg, whenever possible
sql/sp_pcontext.cc:
Review fixes.
Also fixed bug in find_cursor().
sql/sp_pcontext.h:
Changed parameter names (review fix).
sql/sql_parse.cc:
Moved comment. (Review fix)
mysql-test/include/is_debug_build.inc:
New BitKeeper file ``mysql-test/include/is_debug_build.inc''
mysql-test/r/is_debug_build.require:
New BitKeeper file ``mysql-test/r/is_debug_build.require''
mysql-test/r/sp-code.result:
New BitKeeper file ``mysql-test/r/sp-code.result''
mysql-test/t/sp-code.test:
New BitKeeper file ``mysql-test/t/sp-code.test''