mirror of
https://github.com/MariaDB/server.git
synced 2025-07-14 13:41:20 +03:00
Fixed BUG#8638: Test 'sp' fails: Stored Procedure often sends warning 1329
The warning sent is by itself ok, the problem was rather why it wasn't sent on some other platforms... The real problem was that a total_warn_count which was inconsistent with warn_list was sent back with send_eof() during SP execution, which in turn cause a protocol error in mysqltest.
This commit is contained in:
@ -656,7 +656,6 @@ delete from t1|
|
|||||||
drop table if exists t3|
|
drop table if exists t3|
|
||||||
create table t3 ( s char(16), d int)|
|
create table t3 ( s char(16), d int)|
|
||||||
call into_test4()|
|
call into_test4()|
|
||||||
Warnings:
|
|
||||||
select * from t3|
|
select * from t3|
|
||||||
s d
|
s d
|
||||||
into4 NULL
|
into4 NULL
|
||||||
@ -1344,9 +1343,7 @@ end if;
|
|||||||
insert into t4 values (2, rc, t3);
|
insert into t4 values (2, rc, t3);
|
||||||
end|
|
end|
|
||||||
call bug1863(10)|
|
call bug1863(10)|
|
||||||
Warnings:
|
|
||||||
call bug1863(10)|
|
call bug1863(10)|
|
||||||
Warnings:
|
|
||||||
select * from t4|
|
select * from t4|
|
||||||
f1 rc t3
|
f1 rc t3
|
||||||
2 0 NULL
|
2 0 NULL
|
||||||
@ -1643,9 +1640,7 @@ begin
|
|||||||
end|
|
end|
|
||||||
call bug4579_1()|
|
call bug4579_1()|
|
||||||
call bug4579_1()|
|
call bug4579_1()|
|
||||||
Warnings:
|
|
||||||
call bug4579_1()|
|
call bug4579_1()|
|
||||||
Warnings:
|
|
||||||
drop procedure bug4579_1|
|
drop procedure bug4579_1|
|
||||||
drop procedure bug4579_2|
|
drop procedure bug4579_2|
|
||||||
drop table t3|
|
drop table t3|
|
||||||
@ -2118,12 +2113,16 @@ var
|
|||||||
call bug7743("OneWord")|
|
call bug7743("OneWord")|
|
||||||
var
|
var
|
||||||
NULL
|
NULL
|
||||||
|
Warnings:
|
||||||
|
Warning 1329 No data to FETCH
|
||||||
call bug7743("anotherword")|
|
call bug7743("anotherword")|
|
||||||
var
|
var
|
||||||
2
|
2
|
||||||
call bug7743("AnotherWord")|
|
call bug7743("AnotherWord")|
|
||||||
var
|
var
|
||||||
NULL
|
NULL
|
||||||
|
Warnings:
|
||||||
|
Warning 1329 No data to FETCH
|
||||||
drop procedure bug7743|
|
drop procedure bug7743|
|
||||||
drop table t4|
|
drop table t4|
|
||||||
delete from t3|
|
delete from t3|
|
||||||
|
@ -359,7 +359,9 @@ send_eof(THD *thd, bool no_flush)
|
|||||||
if (thd->client_capabilities & CLIENT_PROTOCOL_41)
|
if (thd->client_capabilities & CLIENT_PROTOCOL_41)
|
||||||
{
|
{
|
||||||
uchar buff[5];
|
uchar buff[5];
|
||||||
uint tmp= min(thd->total_warn_count, 65535);
|
/* Don't send warn count during SP execution, as the warn_list
|
||||||
|
is cleared between substatements, and mysqltest gets confused */
|
||||||
|
uint tmp= (thd->spcont ? 0 : min(thd->total_warn_count, 65535));
|
||||||
buff[0]=254;
|
buff[0]=254;
|
||||||
int2store(buff+1, tmp);
|
int2store(buff+1, tmp);
|
||||||
/*
|
/*
|
||||||
|
@ -4185,6 +4185,12 @@ unsent_create_error:
|
|||||||
thd->row_count_func= 0;
|
thd->row_count_func= 0;
|
||||||
res= sp->execute_procedure(thd, &lex->value_list);
|
res= sp->execute_procedure(thd, &lex->value_list);
|
||||||
|
|
||||||
|
/* If warnings have been cleared, we have to clear total_warn_count
|
||||||
|
* too, otherwise the clients get confused.
|
||||||
|
*/
|
||||||
|
if (thd->warn_list.is_empty())
|
||||||
|
thd->total_warn_count= 0;
|
||||||
|
|
||||||
thd->variables.select_limit= select_limit;
|
thd->variables.select_limit= select_limit;
|
||||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||||
sp_restore_security_context(thd, sp, &save_ctx);
|
sp_restore_security_context(thd, sp, &save_ctx);
|
||||||
|
Reference in New Issue
Block a user