diff options
author | unknown <pem@mysql.com> | 2006-01-26 17:26:25 +0100 |
---|---|---|
committer | unknown <pem@mysql.com> | 2006-01-26 17:26:25 +0100 |
commit | af187fa29da3195dd5271100a7e462cc4bc787d6 (patch) | |
tree | 33bb8533cef6759029e766a013e3eb42f27734cc /mysql-test/t/sp.test | |
parent | e43170419c97f5432e90016bc89e0910f39f1487 (diff) | |
download | mariadb-git-af187fa29da3195dd5271100a7e462cc4bc787d6.tar.gz |
Fixed on BUG#16568: Continue handler with simple CASE not working correctly
After trying multiple inheritance (to messy and hard make it work) and
sublassing jump_if_not (worked, but ugly), decided to on this solution
instead:
Inserting an abstract sp_instr_opt_meta class as parent for all instructions
with destinations makes it possible to handle a continuation pointer for
sp_instr_set_case_expr too.
Note: No special test case; the fix is captured by the changed behaviour of
bug14643_2, and bug14498_4 (formerly disabled), in sp.test.
mysql-test/r/sp.result:
Updated results for BUG#16568 (affects results for bug14643_2 and bug14498_4)
mysql-test/t/sp.test:
Enabled test bug14498_4 for BUG#16568.
sql/sp_head.cc:
Changed type of some parameters and variables (sp_instr_opt_meta instead of sp_instr_jump*).
Added consistency check of m_ip member in instructions in sp_head::show_routine_code().
Updated print() method of, and added opt_mark() and opt_move() methods to
sp_instr_set_case_expr, to handle the new continuation destination.
sql/sp_head.h:
New abstract class between sp_instr and instructions with destinations, in particular
sp_instr_set_case_expr, for continuation destination handling.
Changed type of some parameters and variables (sp_instr_opt_meta instead of sp_instr_jump*).
Added opt_mark(), opt_move() and set_destination() methods to
sp_instr_set_case_expr.
sql/sql_parse.cc:
Fixed small bug at show_routine_code() call (tested return value the wrong way).
sql/sql_yacc.yy:
sp_instr_set_case_expr is now added to backpatch list (for the new cont. destination).
Diffstat (limited to 'mysql-test/t/sp.test')
-rw-r--r-- | mysql-test/t/sp.test | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test index 8235686a74a..1bec3ad2fbd 100644 --- a/mysql-test/t/sp.test +++ b/mysql-test/t/sp.test @@ -5210,10 +5210,7 @@ end| call bug14498_1()| call bug14498_2()| call bug14498_3()| -# We couldn't call this before, due to a known bug (BUG#14643) -# QQ We still can't since the new set_case_expr instruction breaks -# the semantics of case; it won't crash, but will get the wrong result. -#call bug14498_4()| +call bug14498_4()| call bug14498_5()| drop procedure bug14498_1| |