Loading mysql-test/r/sp.result +31 −0 Original line number Diff line number Diff line Loading @@ -667,6 +667,8 @@ delete from t1| drop table if exists t3| create table t3 ( s char(16), d int)| call into_test4()| Warnings: Warning 1329 No data to FETCH select * from t3| s d into4 NULL Loading Loading @@ -1792,7 +1794,12 @@ end if; insert into t4 values (2, rc, t3); end| call bug1863(10)| Warnings: Note 1051 Unknown table 'temp_t1' Warning 1329 No data to FETCH call bug1863(10)| Warnings: Warning 1329 No data to FETCH select * from t4| f1 rc t3 2 0 NULL Loading Loading @@ -2090,7 +2097,11 @@ begin end| call bug4579_1()| call bug4579_1()| Warnings: Warning 1329 No data to FETCH call bug4579_1()| Warnings: Warning 1329 No data to FETCH drop procedure bug4579_1| drop procedure bug4579_2| drop table t3| Loading Loading @@ -3010,4 +3021,24 @@ select @x| @x 2005 drop function bug8861| drop procedure if exists bug9004_1| drop procedure if exists bug9004_2| create procedure bug9004_1(x char(16)) begin insert into t1 values (x, 42); insert into t1 values (x, 17); end| create procedure bug9004_2(x char(16)) call bug9004_1(x)| call bug9004_1('12345678901234567')| Warnings: Warning 1265 Data truncated for column 'id' at row 1 Warning 1265 Data truncated for column 'id' at row 2 call bug9004_2('12345678901234567890')| Warnings: Warning 1265 Data truncated for column 'id' at row 1 Warning 1265 Data truncated for column 'id' at row 2 delete from t1| drop procedure bug9004_1| drop procedure bug9004_2| drop table t1,t2; mysql-test/t/sp.test +24 −0 Original line number Diff line number Diff line Loading @@ -3700,6 +3700,30 @@ select @x| drop function bug8861| # # BUG#9004: Inconsistent behaviour of SP re. warnings # --disable_warnings drop procedure if exists bug9004_1| drop procedure if exists bug9004_2| --enable_warnings create procedure bug9004_1(x char(16)) begin insert into t1 values (x, 42); insert into t1 values (x, 17); end| create procedure bug9004_2(x char(16)) call bug9004_1(x)| # Truncation warnings expected... call bug9004_1('12345678901234567')| call bug9004_2('12345678901234567890')| delete from t1| drop procedure bug9004_1| drop procedure bug9004_2| # # BUG#NNNN: New bug synopsis # Loading sql/sql_error.cc +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ MYSQL_ERROR *push_warning(THD *thd, MYSQL_ERROR::enum_warning_level level, !(thd->options & OPTION_SQL_NOTES)) DBUG_RETURN(0); if (thd->query_id != thd->warn_id) if (thd->query_id != thd->warn_id && !thd->spcont) mysql_reset_errors(thd, 0); thd->got_warning= 1; Loading sql/sql_parse.cc +4 −2 Original line number Diff line number Diff line Loading @@ -2268,9 +2268,11 @@ mysql_execute_command(THD *thd) A better approach would be to reset this for any commands that is not a SHOW command or a select that only access local variables, but for now this is probably good enough. Don't reset warnings when executing a stored routine. */ if (all_tables || &lex->select_lex != lex->all_selects_list || lex->spfuns.records || lex->spprocs.records) if ((all_tables || &lex->select_lex != lex->all_selects_list || lex->spfuns.records || lex->spprocs.records) && !thd->spcont) mysql_reset_errors(thd, 0); #ifdef HAVE_REPLICATION Loading Loading
mysql-test/r/sp.result +31 −0 Original line number Diff line number Diff line Loading @@ -667,6 +667,8 @@ delete from t1| drop table if exists t3| create table t3 ( s char(16), d int)| call into_test4()| Warnings: Warning 1329 No data to FETCH select * from t3| s d into4 NULL Loading Loading @@ -1792,7 +1794,12 @@ end if; insert into t4 values (2, rc, t3); end| call bug1863(10)| Warnings: Note 1051 Unknown table 'temp_t1' Warning 1329 No data to FETCH call bug1863(10)| Warnings: Warning 1329 No data to FETCH select * from t4| f1 rc t3 2 0 NULL Loading Loading @@ -2090,7 +2097,11 @@ begin end| call bug4579_1()| call bug4579_1()| Warnings: Warning 1329 No data to FETCH call bug4579_1()| Warnings: Warning 1329 No data to FETCH drop procedure bug4579_1| drop procedure bug4579_2| drop table t3| Loading Loading @@ -3010,4 +3021,24 @@ select @x| @x 2005 drop function bug8861| drop procedure if exists bug9004_1| drop procedure if exists bug9004_2| create procedure bug9004_1(x char(16)) begin insert into t1 values (x, 42); insert into t1 values (x, 17); end| create procedure bug9004_2(x char(16)) call bug9004_1(x)| call bug9004_1('12345678901234567')| Warnings: Warning 1265 Data truncated for column 'id' at row 1 Warning 1265 Data truncated for column 'id' at row 2 call bug9004_2('12345678901234567890')| Warnings: Warning 1265 Data truncated for column 'id' at row 1 Warning 1265 Data truncated for column 'id' at row 2 delete from t1| drop procedure bug9004_1| drop procedure bug9004_2| drop table t1,t2;
mysql-test/t/sp.test +24 −0 Original line number Diff line number Diff line Loading @@ -3700,6 +3700,30 @@ select @x| drop function bug8861| # # BUG#9004: Inconsistent behaviour of SP re. warnings # --disable_warnings drop procedure if exists bug9004_1| drop procedure if exists bug9004_2| --enable_warnings create procedure bug9004_1(x char(16)) begin insert into t1 values (x, 42); insert into t1 values (x, 17); end| create procedure bug9004_2(x char(16)) call bug9004_1(x)| # Truncation warnings expected... call bug9004_1('12345678901234567')| call bug9004_2('12345678901234567890')| delete from t1| drop procedure bug9004_1| drop procedure bug9004_2| # # BUG#NNNN: New bug synopsis # Loading
sql/sql_error.cc +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ MYSQL_ERROR *push_warning(THD *thd, MYSQL_ERROR::enum_warning_level level, !(thd->options & OPTION_SQL_NOTES)) DBUG_RETURN(0); if (thd->query_id != thd->warn_id) if (thd->query_id != thd->warn_id && !thd->spcont) mysql_reset_errors(thd, 0); thd->got_warning= 1; Loading
sql/sql_parse.cc +4 −2 Original line number Diff line number Diff line Loading @@ -2268,9 +2268,11 @@ mysql_execute_command(THD *thd) A better approach would be to reset this for any commands that is not a SHOW command or a select that only access local variables, but for now this is probably good enough. Don't reset warnings when executing a stored routine. */ if (all_tables || &lex->select_lex != lex->all_selects_list || lex->spfuns.records || lex->spprocs.records) if ((all_tables || &lex->select_lex != lex->all_selects_list || lex->spfuns.records || lex->spprocs.records) && !thd->spcont) mysql_reset_errors(thd, 0); #ifdef HAVE_REPLICATION Loading