From: Alexander Nozdrin Date: October 7 2010 8:21am Subject: bzr commit into mysql-5.5-bugteam branch (alexander.nozdrin:3096) Bug#55843 List-Archive: http://lists.mysql.com/commits/120196 X-Bug: 55843 Message-Id: <201010070821.o978HNLe003321@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============7218729231086770937==" --===============7218729231086770937== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/alik/MySQL/bzr/00/bug55843/mysql-5.5-bugteam-bug55843/ based on revid:alexander.nozdrin@stripped 3096 Alexander Nozdrin 2010-10-07 A patch for Bug#55843 (Handled condition appears as not handled). Patch for Bug 23032 changed the behavior so that handled condition (sql warning or exception) left in Warning_info. The problem was that handled conditions were treated as unhandled ones, so they were shown as "active statement" warnings. This patch fixes this: handled condition is still kept in Warning_info, but it is marked as handled, so it does not appear in a list of "active statement" warnings. modified: mysql-test/mysql-test-run.pl mysql-test/r/signal.result mysql-test/r/sp-big.result mysql-test/r/sp-bugs.result mysql-test/r/sp-code.result mysql-test/r/sp-error.result mysql-test/r/sp.result mysql-test/r/sp_trans.result mysql-test/r/strict.result mysql-test/r/view.result mysql-test/suite/rpl/r/rpl_row_sp005.result mysql-test/suite/rpl/r/rpl_row_sp006_InnoDB.result mysql-test/suite/rpl/r/rpl_row_trig003.result sql/sp_head.cc sql/sp_rcontext.cc sql/sp_rcontext.h sql/sql_error.cc sql/sql_error.h === modified file 'mysql-test/mysql-test-run.pl' --- a/mysql-test/mysql-test-run.pl 2010-10-05 11:33:54 +0000 +++ b/mysql-test/mysql-test-run.pl 2010-10-07 08:21:15 +0000 @@ -162,7 +162,7 @@ our $opt_vs_config = $ENV{'MTR_VS_CONFIG # If you add a new suite, please check TEST_DIRS in Makefile.am. # -my $DEFAULT_SUITES= "main,sys_vars,binlog,federated,rpl,rpl_ndb,ndb,innodb,perfschema"; +my $DEFAULT_SUITES= "main,sys_vars,binlog,federated,rpl,innodb,perfschema"; my $opt_suites; our $opt_verbose= 0; # Verbose output, enable with --verbose === modified file 'mysql-test/r/signal.result' --- a/mysql-test/r/signal.result 2010-07-30 15:28:36 +0000 +++ b/mysql-test/r/signal.result 2010-10-07 08:21:15 +0000 @@ -1189,8 +1189,6 @@ end $$ call test_signal() $$ Caught by SQLSTATE Caught by SQLSTATE -Warnings: -Warning 1012 Raising a warning drop procedure test_signal $$ create procedure test_signal() begin @@ -1206,8 +1204,6 @@ end $$ call test_signal() $$ Caught by number Caught by number -Warnings: -Warning 1012 Raising a warning drop procedure test_signal $$ create procedure test_signal() begin @@ -1223,8 +1219,6 @@ end $$ call test_signal() $$ Caught by SQLWARNING Caught by SQLWARNING -Warnings: -Warning 1012 Raising a warning drop procedure test_signal $$ create procedure test_signal() begin @@ -1240,8 +1234,6 @@ end $$ call test_signal() $$ Caught by SQLSTATE Caught by SQLSTATE -Warnings: -Error 1012 Raising a not found drop procedure test_signal $$ create procedure test_signal() begin @@ -1257,8 +1249,6 @@ end $$ call test_signal() $$ Caught by number Caught by number -Warnings: -Error 1012 Raising a not found drop procedure test_signal $$ create procedure test_signal() begin @@ -1274,8 +1264,6 @@ end $$ call test_signal() $$ Caught by NOT FOUND Caught by NOT FOUND -Warnings: -Error 1012 Raising a not found drop procedure test_signal $$ create procedure test_signal() begin @@ -1291,8 +1279,6 @@ end $$ call test_signal() $$ Caught by SQLSTATE Caught by SQLSTATE -Warnings: -Error 1012 Raising an error drop procedure test_signal $$ create procedure test_signal() begin @@ -1308,8 +1294,6 @@ end $$ call test_signal() $$ Caught by number Caught by number -Warnings: -Error 1012 Raising an error drop procedure test_signal $$ create procedure test_signal() begin @@ -1325,8 +1309,6 @@ end $$ call test_signal() $$ Caught by SQLEXCEPTION Caught by SQLEXCEPTION -Warnings: -Error 1012 Raising an error drop procedure test_signal $$ # # Test where SIGNAL can be used === modified file 'mysql-test/r/sp-big.result' --- a/mysql-test/r/sp-big.result 2010-07-30 15:28:36 +0000 +++ b/mysql-test/r/sp-big.result 2010-10-07 08:21:15 +0000 @@ -46,8 +46,6 @@ end while; close cur1; end| call p1(); -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed select count(*) from t1; count(*) 256 === modified file 'mysql-test/r/sp-bugs.result' --- a/mysql-test/r/sp-bugs.result 2010-07-30 15:28:36 +0000 +++ b/mysql-test/r/sp-bugs.result 2010-10-07 08:21:15 +0000 @@ -43,8 +43,6 @@ END| SELECT f2 (); f2 () NULL -Warnings: -Error 1305 FUNCTION testdb.f_not_exists does not exist DROP SCHEMA testdb; USE test; # === modified file 'mysql-test/r/sp-code.result' --- a/mysql-test/r/sp-code.result 2010-07-30 15:28:36 +0000 +++ b/mysql-test/r/sp-code.result 2010-10-07 08:21:15 +0000 @@ -711,8 +711,6 @@ looping i looping 1 looping i looping 0 -Warnings: -Error 1062 Duplicate entry '1' for key 'a' call proc_26977_works(2); do something do something @@ -732,8 +730,6 @@ looping i looping 0 optimizer: keep hreturn optimizer: keep hreturn -Warnings: -Error 1062 Duplicate entry '2' for key 'a' drop table t1; drop procedure proc_26977_broken; drop procedure proc_26977_works; === modified file 'mysql-test/r/sp-error.result' --- a/mysql-test/r/sp-error.result 2010-07-30 15:28:36 +0000 +++ b/mysql-test/r/sp-error.result 2010-10-07 08:21:15 +0000 @@ -1344,8 +1344,6 @@ set @in_func := 0; select func_20713_a(); func_20713_a() NULL -Warnings: -Error 1146 Table 'test.bogus_table_20713' doesn't exist select @in_func; @in_func 2 @@ -1353,8 +1351,6 @@ set @in_func := 0; select func_20713_b(); func_20713_b() NULL -Warnings: -Error 1146 Table 'test.bogus_table_20713' doesn't exist select @in_func; @in_func 2 @@ -1808,8 +1804,6 @@ c 1 Level Code Message Warning 1292 Truncated incorrect INTEGER value: '10 ' -Warnings: -Warning 1292 Truncated incorrect INTEGER value: '10 ' CALL p6(); CAST('10 ' as unsigned integer) 10 @@ -1817,8 +1811,6 @@ Level Code Message Warning 1292 Truncated incorrect INTEGER value: '10 ' c 1 -Warnings: -Warning 1292 Truncated incorrect INTEGER value: '10 ' DROP PROCEDURE p1; DROP PROCEDURE p2; DROP PROCEDURE p3; @@ -1889,8 +1881,6 @@ SET NEW.a = 10; SET NEW.a = 99999999999; END| UPDATE t1 SET b = 20; -Warnings: -Warning 1264 Out of range value for column 'a' at row 1 SHOW WARNINGS; Level Code Message Warning 1264 Out of range value for column 'a' at row 1 @@ -1945,8 +1935,6 @@ CALL p1(); NULL warning caught (expected) warning caught (expected) -Warnings: -Warning 1365 Division by 0 SHOW WARNINGS; Level Code Message Warning 1365 Division by 0 === modified file 'mysql-test/r/sp.result' --- a/mysql-test/r/sp.result 2010-07-30 15:28:36 +0000 +++ b/mysql-test/r/sp.result 2010-10-07 08:21:15 +0000 @@ -737,8 +737,6 @@ close c; end| insert into t2 values ("foo", 42, -1.9), ("bar", 3, 12.1), ("zap", 666, -3.14)| call cur1()| -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed select * from t1| id data foo 40 @@ -774,8 +772,6 @@ close c1; close c2; end| call cur2()| -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed select * from t3 order by i,s| s i bar 3 @@ -865,8 +861,6 @@ end$ set @@sql_mode = ''| set sql_select_limit = 1| call modes(@c1, @c2)| -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed set sql_select_limit = default| select @c1, @c2| @c1 @c2 @@ -1688,64 +1682,42 @@ end| call h_ee()| h_ee Inner (good) -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' call h_es()| h_es Outer (good) -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' call h_en()| h_en Outer (good) -Warnings: -Warning 1329 No data - zero rows fetched, selected, or processed call h_ew()| h_ew Outer (good) call h_ex()| h_ex Outer (good) -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' call h_se()| h_se Inner (good) -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' call h_ss()| h_ss Inner (good) -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' call h_sn()| h_sn Outer (good) -Warnings: -Warning 1329 No data - zero rows fetched, selected, or processed call h_sw()| h_sw Outer (good) call h_sx()| h_sx Outer (good) -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' call h_ne()| h_ne Inner (good) -Warnings: -Warning 1329 No data - zero rows fetched, selected, or processed call h_ns()| h_ns Inner (good) -Warnings: -Warning 1329 No data - zero rows fetched, selected, or processed call h_nn()| h_nn Inner (good) -Warnings: -Warning 1329 No data - zero rows fetched, selected, or processed call h_we()| h_we Inner (good) @@ -1758,18 +1730,12 @@ Inner (good) call h_xe()| h_xe Inner (good) -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' call h_xs()| h_xs Inner (good) -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' call h_xx()| h_xx Inner (good) -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' drop table t3| drop procedure h_ee| drop procedure h_es| @@ -1918,8 +1884,6 @@ set @x2 = 2; close c1; end| call bug2260()| -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed select @x2| @x2 2 @@ -2063,8 +2027,6 @@ insert into t3 values (123456789012); insert into t3 values (0); end| call bug2780()| -Warnings: -Warning 1264 Out of range value for column 's1' at row 1 select @x| @x 1 @@ -2487,8 +2449,6 @@ declare continue handler for sqlstate 'H select s1 from t3 union select s2 from t3; end| call bug4904()| -Warnings: -Error 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (latin2_general_ci,IMPLICIT) for operation 'UNION' drop procedure bug4904| drop table t3| drop procedure if exists bug336| @@ -2628,17 +2588,13 @@ select row_count()| row_count() 1 call bug4905()| -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' select row_count()| row_count() --1 +0 call bug4905()| -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' select row_count()| row_count() --1 +0 select * from t3| s1 1 @@ -2659,14 +2615,10 @@ insert into t3 values (1)| call bug6029()| sqlstate 23000 sqlstate 23000 -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' delete from t3| call bug6029()| 1136 1136 -Warnings: -Error 1136 Column count doesn't match value count at row 1 drop procedure bug6029| drop table t3| drop procedure if exists bug8540| @@ -2958,23 +2910,15 @@ end| call bug6900()| 2 2 -Warnings: -Error 1136 Column count doesn't match value count at row 1 call bug9074()| x1 x2 x3 x4 x5 x6 1 1 1 1 1 1 -Warnings: -Error 1062 Duplicate entry 'a' for key 'w' call bug6900_9074(0)| sqlexception sqlexception -Warnings: -Error 1136 Column count doesn't match value count at row 1 call bug6900_9074(1)| 23000 23000 -Warnings: -Error 1062 Duplicate entry 'a' for key 'w' drop procedure bug6900| drop procedure bug9074| drop procedure bug6900_9074| @@ -3017,13 +2961,9 @@ delete from t1| call bug9856()| 16 16 -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed call bug9856()| 16 16 -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed drop procedure bug9856| drop procedure if exists bug9674_1| drop procedure if exists bug9674_2| @@ -3254,8 +3194,6 @@ x 2 x 3 -Warnings: -Error 1326 Cursor is not open call bug10961()| x 1 @@ -3263,8 +3201,6 @@ x 2 x 3 -Warnings: -Error 1326 Cursor is not open drop procedure bug10961| DROP PROCEDURE IF EXISTS bug6866| DROP VIEW IF EXISTS tv| @@ -3380,11 +3316,7 @@ insert into t1 values ('Name4', 13), ('Name5', 14)| call bug11529()| -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed call bug11529()| -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed delete from t1| drop procedure bug11529| set character set utf8| @@ -3558,32 +3490,24 @@ end; end if; end| call bug12168('a')| -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed select * from t4| a 1 3 truncate t4| call bug12168('b')| -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed select * from t4| a 2 4 truncate t4| call bug12168('a')| -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed select * from t4| a 1 3 truncate t4| call bug12168('b')| -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed select * from t4| a 2 @@ -3883,8 +3807,6 @@ end| call bug7049_2()| Result Caught it -Warnings: -Error 1062 Duplicate entry '42' for key 'x' select * from t3| x 42 @@ -3892,16 +3814,12 @@ delete from t3| call bug7049_4()| Result Caught it -Warnings: -Error 1062 Duplicate entry '42' for key 'x' select * from t3| x 42 select bug7049_2()| bug7049_2() 1 -Warnings: -Error 1062 Duplicate entry '42' for key 'x' drop table t3| drop procedure bug7049_1| drop procedure bug7049_2| @@ -4029,8 +3947,6 @@ end| call bug14845()| a 0 -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed drop procedure bug14845| drop procedure if exists bug13549_1| drop procedure if exists bug13549_2| @@ -4234,8 +4150,6 @@ end| call bug13729()| 55 55 -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' select * from t3| s1 1 @@ -4272,15 +4186,11 @@ Handler boo v isnull(v) NULL 1 -Warnings: -Error 1054 Unknown column 'undefined_var' in 'field list' call bug14643_2()| Handler boo Handler boo -Warnings: -Error 1054 Unknown column 'undefined_var' in 'field list' drop procedure bug14643_1| drop procedure bug14643_2| drop procedure if exists bug14304| @@ -4604,15 +4514,11 @@ Handler error End done -Warnings: -Error 1054 Unknown column 'v' in 'field list' call bug14498_2()| Handler error End done -Warnings: -Error 1054 Unknown column 'v' in 'field list' call bug14498_3()| v maybe @@ -4620,22 +4526,16 @@ Handler error End done -Warnings: -Error 1054 Unknown column 'v' in 'field list' call bug14498_4()| Handler error End done -Warnings: -Error 1054 Unknown column 'v' in 'field list' call bug14498_5()| Handler error End done -Warnings: -Error 1054 Unknown column 'v' in 'field list' drop procedure bug14498_1| drop procedure bug14498_2| drop procedure bug14498_3| @@ -4700,8 +4600,6 @@ Before NOT FOUND condition is triggered After NOT FOUND condtition is triggered xid xdone 1 1 -Warnings: -Warning 1329 No data - zero rows fetched, selected, or processed call bug15231_3()| Result Missed it (correct) @@ -4709,8 +4607,6 @@ Level Code Message Warning 1366 Incorrect decimal value: 'zap' for column 'x' at row 1 Result Caught it (correct) -Warnings: -Warning 1366 Incorrect decimal value: 'zap' for column 'x' at row 1 call bug15231_5()| Result Missed it (correct) @@ -4739,8 +4635,6 @@ end| call bug15011()| Handler Inner -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' drop procedure bug15011| drop table t3| drop procedure if exists bug17476| @@ -4816,8 +4710,6 @@ i 1 i 0 -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed drop table t3| drop procedure bug16887| drop procedure if exists bug16474_1| @@ -4890,8 +4782,6 @@ declare continue handler for sqlexceptio select no_such_function(); end| call bug18787()| -Warnings: -Error 1305 FUNCTION test.no_such_function does not exist drop procedure bug18787| create database bug18344_012345678901| use bug18344_012345678901| @@ -5265,8 +5155,6 @@ statement failed statement failed statement after update statement after update -Warnings: -Error 1242 Subquery returns more than 1 row select * from t3| a 1 @@ -5278,8 +5166,6 @@ statement failed statement failed statement after update statement after update -Warnings: -Error 1242 Subquery returns more than 1 row select * from t3| a 1 @@ -5312,8 +5198,6 @@ in continue handler in continue handler reachable code a2 reachable code a2 -Warnings: -Error 1242 Subquery returns more than 1 row select * from t3| a 1 @@ -5329,8 +5213,6 @@ in continue handler in continue handler reachable code a2 reachable code a2 -Warnings: -Error 1242 Subquery returns more than 1 row select * from t3| a 1 @@ -5364,8 +5246,6 @@ in continue handler in continue handler reachable code a2 reachable code a2 -Warnings: -Error 1305 FUNCTION test.no_such_function does not exist drop procedure bug8153_proc_a| drop procedure bug8153_proc_b| drop table t3| @@ -5934,13 +5814,9 @@ end| select func_8407_a()| func_8407_a() NULL -Warnings: -Error 1146 Table 'test.no_such_view' doesn't exist select func_8407_b()| func_8407_b() 1500 -Warnings: -Error 1146 Table 'test.no_such_view' doesn't exist drop function func_8407_a| drop function func_8407_b| drop table if exists table_26503| @@ -6062,8 +5938,6 @@ looping i looping 0 leaving handler leaving handler -Warnings: -Error 1062 Duplicate entry '1' for key 'a' call proc_26503_ok_2(2)| do something do something @@ -6075,8 +5949,6 @@ looping i looping 4 leaving handler leaving handler -Warnings: -Error 1062 Duplicate entry '2' for key 'a' call proc_26503_ok_3(3)| do something do something @@ -6096,8 +5968,6 @@ looping i looping 0 leaving handler leaving handler -Warnings: -Error 1062 Duplicate entry '3' for key 'a' call proc_26503_ok_4(4)| do something do something @@ -6109,8 +5979,6 @@ looping i looping 4 leaving handler leaving handler -Warnings: -Error 1062 Duplicate entry '4' for key 'a' drop table table_26503| drop procedure proc_26503_ok_1| drop procedure proc_26503_ok_2| @@ -6824,8 +6692,6 @@ DECLARE CONTINUE HANDLER FOR SQLEXCEPTIO SELECT x FROM t1; END| CALL bug29770(); -Warnings: -Error 1054 Unknown column 'x' in 'field list' SELECT @state, @exception; @state @exception run NULL @@ -6864,8 +6730,6 @@ end; end while; end// call proc_33618(20); -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed drop table t_33618; drop procedure proc_33618; # === modified file 'mysql-test/r/sp_trans.result' --- a/mysql-test/r/sp_trans.result 2010-07-30 15:28:36 +0000 +++ b/mysql-test/r/sp_trans.result 2010-10-07 08:21:15 +0000 @@ -99,8 +99,6 @@ return i; end| set @error_in_func:= 0| insert into t1 values (bug10015_6(5)), (bug10015_6(6))| -Warnings: -Error 1062 Duplicate entry '1' for key 'PRIMARY' select @error_in_func| @error_in_func 1 @@ -526,8 +524,6 @@ until done end repeat; close c; end| call bug14210()| -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed select count(*) from t4| count(*) 256 === modified file 'mysql-test/r/strict.result' --- a/mysql-test/r/strict.result 2010-09-07 06:45:00 +0000 +++ b/mysql-test/r/strict.result 2010-10-07 08:21:15 +0000 @@ -1193,8 +1193,6 @@ select'a'; insert into t1 values (200); call t1(); a a -Warnings: -Error 1264 Out of range value for column 'col1' at row 1 select * from t1; col1 drop procedure t1; === modified file 'mysql-test/r/view.result' --- a/mysql-test/r/view.result 2010-07-30 15:28:36 +0000 +++ b/mysql-test/r/view.result 2010-10-07 08:21:15 +0000 @@ -3946,8 +3946,6 @@ create view a as select 1; end| call p(); call p(); -Warnings: -Error 1050 Table 'a' already exists drop view a; drop procedure p; # === modified file 'mysql-test/suite/rpl/r/rpl_row_sp005.result' --- a/mysql-test/suite/rpl/r/rpl_row_sp005.result 2010-07-30 15:28:36 +0000 +++ b/mysql-test/suite/rpl/r/rpl_row_sp005.result 2010-10-07 08:21:15 +0000 @@ -77,8 +77,6 @@ id2 < ---- Master selects-- > ------------------------- CALL test.p1(); -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed SELECT * FROM test.t3 ORDER BY id3; id3 c 1 MySQL === modified file 'mysql-test/suite/rpl/r/rpl_row_sp006_InnoDB.result' --- a/mysql-test/suite/rpl/r/rpl_row_sp006_InnoDB.result 2010-07-30 15:28:36 +0000 +++ b/mysql-test/suite/rpl/r/rpl_row_sp006_InnoDB.result 2010-10-07 08:21:15 +0000 @@ -38,8 +38,6 @@ INSERT INTO t1 VALUES ('MySQL','1993-02- END| CALL p2(); CALL p1(); -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed DROP TABLE t1; DROP TABLE t2; DROP PROCEDURE p1; === modified file 'mysql-test/suite/rpl/r/rpl_row_trig003.result' --- a/mysql-test/suite/rpl/r/rpl_row_trig003.result 2010-07-30 15:28:36 +0000 +++ b/mysql-test/suite/rpl/r/rpl_row_trig003.result 2010-10-07 08:21:15 +0000 @@ -69,15 +69,9 @@ INSERT INTO test.t2 VALUES(NULL,0,'Testi UPDATE test.t1 SET b1 = 0 WHERE b1 = 1; INSERT INTO test.t2 VALUES(NULL,1,'This is an after update test.', 'If this works, total will not be zero on the master or slave',1.4321,5.221,0,YEAR(NOW()),NOW()); UPDATE test.t2 SET b1 = 0 WHERE b1 = 1; -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed INSERT INTO test.t1 VALUES(NULL,1,'add some more test data test.', 'and hope for the best', 3.321,5.221,0,YEAR(NOW()),NOW()); DELETE FROM test.t1 WHERE id = 1; -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed DELETE FROM test.t2 WHERE id = 1; -Warnings: -Error 1329 No data - zero rows fetched, selected, or processed DROP TRIGGER test.t1_bi; DROP TRIGGER test.t2_ai; DROP TRIGGER test.t1_bu; === modified file 'sql/sp_head.cc' --- a/sql/sp_head.cc 2010-08-12 13:55:27 +0000 +++ b/sql/sp_head.cc 2010-10-07 08:21:15 +0000 @@ -1144,11 +1144,39 @@ find_handler_after_execution(THD *thd, s { if (thd->is_error()) { + List_iterator it(thd->warning_info->warn_list()); + MYSQL_ERROR *err; + MYSQL_ERROR *error_in_warn_list= NULL; + while ((err= it++)) + { + if (err->is_condition_handled() || + err->get_level() != MYSQL_ERROR::WARN_LEVEL_ERROR || + err->get_sql_errno() != thd->stmt_da->sql_errno() || + strcmp(err->get_sqlstate(), thd->stmt_da->get_sqlstate())) + { + continue; + } + + error_in_warn_list= err; + break; + } + + /* + NOTE: error_in_warn_list can be NULL, i.e. current error can be not + in Warning_info. There may be two reasons for that: + + - hackish no_warnings_for_error: if THD::no_warnings_for_error is + set, no warning is added into Warning_info when an error is risen. + + - if max_error_count limits number of entries in Warning_info. + */ + ctx->find_handler(thd, thd->stmt_da->sql_errno(), thd->stmt_da->get_sqlstate(), MYSQL_ERROR::WARN_LEVEL_ERROR, - thd->stmt_da->message()); + thd->stmt_da->message(), + error_in_warn_list); } else if (thd->warning_info->statement_warn_count()) { @@ -1156,15 +1184,17 @@ find_handler_after_execution(THD *thd, s MYSQL_ERROR *err; while ((err= it++)) { - if (err->get_level() != MYSQL_ERROR::WARN_LEVEL_WARN && - err->get_level() != MYSQL_ERROR::WARN_LEVEL_NOTE) + if (err->is_condition_handled() || + (err->get_level() != MYSQL_ERROR::WARN_LEVEL_WARN && + err->get_level() != MYSQL_ERROR::WARN_LEVEL_NOTE)) continue; if (ctx->find_handler(thd, err->get_sql_errno(), err->get_sqlstate(), err->get_level(), - err->get_message_text())) + err->get_message_text(), + err)) { break; } === modified file 'sql/sp_rcontext.cc' --- a/sql/sp_rcontext.cc 2010-07-30 15:28:36 +0000 +++ b/sql/sp_rcontext.cc 2010-10-07 08:21:15 +0000 @@ -36,6 +36,7 @@ sp_rcontext::sp_rcontext(sp_pcontext *ro m_return_value_fld(return_value_fld), m_return_value_set(FALSE), in_sub_stmt(FALSE), + m_handled_conditions(NULL), m_hcount(0), m_hsp(0), m_ihsp(0), @@ -80,6 +81,9 @@ bool sp_rcontext::init(THD *thd) for (i= 0; imem_root); + if (!(m_handled_conditions= (MYSQL_ERROR **) thd->alloc(handler_count * sizeof (MYSQL_ERROR *)))) + return TRUE; + return !(m_handler= (sp_handler_t*)thd->alloc(handler_count * sizeof(sp_handler_t))) || @@ -209,7 +213,8 @@ sp_rcontext::find_handler(THD *thd, uint sql_errno, const char *sqlstate, MYSQL_ERROR::enum_warning_level level, - const char *msg) + const char *msg, + MYSQL_ERROR *error) { int i= m_hcount; @@ -276,6 +281,8 @@ sp_rcontext::find_handler(THD *thd, m_raised_conditions[m_hfound].clear(); m_raised_conditions[m_hfound].set(sql_errno, sqlstate, level, msg); + m_handled_conditions[m_hfound]= error; + return TRUE; } @@ -288,7 +295,7 @@ sp_rcontext::find_handler(THD *thd, level == MYSQL_ERROR::WARN_LEVEL_ERROR) { return m_prev_runtime_ctx->find_handler(thd, sql_errno, sqlstate, - level, msg); + level, msg, error); } return FALSE; @@ -387,6 +394,9 @@ sp_rcontext::activate_handler(THD *thd, if (m_hfound < 0) return FALSE; + if (m_handled_conditions[m_hfound]) + m_handled_conditions[m_hfound]->set_condition_handled(); + switch (m_handler[m_hfound].type) { case SP_HANDLER_NONE: break; === modified file 'sql/sp_rcontext.h' --- a/sql/sp_rcontext.h 2010-07-30 15:28:36 +0000 +++ b/sql/sp_rcontext.h 2010-10-07 08:21:15 +0000 @@ -144,7 +144,8 @@ class sp_rcontext : public Sql_alloc uint sql_errno, const char *sqlstate, MYSQL_ERROR::enum_warning_level level, - const char *msg); + const char *msg, + MYSQL_ERROR *error); MYSQL_ERROR * raised_condition() const; @@ -233,6 +234,8 @@ private: */ MYSQL_ERROR *m_raised_conditions; + MYSQL_ERROR **m_handled_conditions; + uint m_hcount; // Stack pointer for m_handler uint *m_hstack; // Return stack for continue handlers uint m_hsp; // Stack pointer for m_hstack === modified file 'sql/sql_error.cc' --- a/sql/sql_error.cc 2010-07-30 15:28:36 +0000 +++ b/sql/sql_error.cc 2010-10-07 08:21:15 +0000 @@ -187,7 +187,8 @@ MYSQL_ERROR::MYSQL_ERROR() m_message_text(), m_sql_errno(0), m_level(MYSQL_ERROR::WARN_LEVEL_ERROR), - m_mem_root(NULL) + m_mem_root(NULL), + m_condition_handled(FALSE) { memset(m_returned_sqlstate, 0, sizeof(m_returned_sqlstate)); } @@ -214,6 +215,7 @@ void MYSQL_ERROR::clear() m_message_text.length(0); m_sql_errno= 0; m_level= MYSQL_ERROR::WARN_LEVEL_ERROR; + m_condition_handled= FALSE; } MYSQL_ERROR::MYSQL_ERROR(MEM_ROOT *mem_root) @@ -231,7 +233,8 @@ MYSQL_ERROR::MYSQL_ERROR(MEM_ROOT *mem_r m_message_text(), m_sql_errno(0), m_level(MYSQL_ERROR::WARN_LEVEL_ERROR), - m_mem_root(mem_root) + m_mem_root(mem_root), + m_condition_handled(FALSE) { DBUG_ASSERT(mem_root != NULL); memset(m_returned_sqlstate, 0, sizeof(m_returned_sqlstate)); @@ -268,6 +271,7 @@ MYSQL_ERROR::copy_opt_attributes(const M copy_string(m_mem_root, & m_table_name, & cond->m_table_name); copy_string(m_mem_root, & m_column_name, & cond->m_column_name); copy_string(m_mem_root, & m_cursor_name, & cond->m_cursor_name); + m_condition_handled= cond->m_condition_handled; } void === modified file 'sql/sql_error.h' --- a/sql/sql_error.h 2010-07-30 15:28:36 +0000 +++ b/sql/sql_error.h 2010-10-07 08:21:15 +0000 @@ -200,6 +200,12 @@ public: MYSQL_ERROR::enum_warning_level get_level() const { return m_level; } + bool is_condition_handled() const + { return m_condition_handled; } + + void set_condition_handled() + { m_condition_handled= TRUE; } + private: /* The interface of MYSQL_ERROR is mostly private, by design, @@ -326,6 +332,9 @@ private: /** Memory root to use to hold condition item values. */ MEM_ROOT *m_mem_root; + + /** Flag to specify if this condition has been already handled. */ + bool m_condition_handled; }; /////////////////////////////////////////////////////////////////////////// @@ -411,6 +420,9 @@ public: err->get_level(), err->get_message_text()); if (copy) copy->copy_opt_attributes(err); + + if (err->is_condition_handled()) + --m_statement_warn_count; } } --===============7218729231086770937== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/alexander.nozdrin@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: alexander.nozdrin@stripped\ # 514v0m71bcjsbnj7 # target_branch: file:///home/alik/MySQL/bzr/00/bug55843/mysql-5.5-\ # bugteam-bug55843/ # testament_sha1: a97bb61a6d3c17d487ea5b297c7cb944d1ffbcb8 # timestamp: 2010-10-07 12:21:21 +0400 # base_revision_id: alexander.nozdrin@stripped\ # ls60rb2tq5dpyb5c # # Begin bundle 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 0Ufl4A== --===============7218729231086770937==--