mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Fix for bug #14304: auto_increment field incorrect set from within stored procedure (insert select).
This commit is contained in:
@ -4046,4 +4046,28 @@ boo
|
||||
2
|
||||
drop procedure bug14643_1|
|
||||
drop procedure bug14643_2|
|
||||
drop procedure if exists bug14304|
|
||||
drop table if exists t3, t4|
|
||||
create table t3(a int primary key auto_increment)|
|
||||
create table t4(a int primary key auto_increment)|
|
||||
create procedure bug14304()
|
||||
begin
|
||||
insert into t3 set a=null;
|
||||
insert into t4 set a=null;
|
||||
insert into t4 set a=null;
|
||||
insert into t4 set a=null;
|
||||
insert into t4 set a=null;
|
||||
insert into t4 set a=null;
|
||||
insert into t4 select null as a;
|
||||
insert into t3 set a=null;
|
||||
insert into t3 set a=null;
|
||||
select * from t3;
|
||||
end|
|
||||
call bug14304()|
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
drop procedure bug14304|
|
||||
drop table t3, t4|
|
||||
drop table t1,t2;
|
||||
|
@ -4823,6 +4823,37 @@ call bug14643_2()|
|
||||
drop procedure bug14643_1|
|
||||
drop procedure bug14643_2|
|
||||
|
||||
#
|
||||
# BUG#14304: auto_increment field incorrect set in SP
|
||||
#
|
||||
--disable_warnings
|
||||
drop procedure if exists bug14304|
|
||||
drop table if exists t3, t4|
|
||||
--enable_warnings
|
||||
|
||||
create table t3(a int primary key auto_increment)|
|
||||
create table t4(a int primary key auto_increment)|
|
||||
|
||||
create procedure bug14304()
|
||||
begin
|
||||
insert into t3 set a=null;
|
||||
insert into t4 set a=null;
|
||||
insert into t4 set a=null;
|
||||
insert into t4 set a=null;
|
||||
insert into t4 set a=null;
|
||||
insert into t4 set a=null;
|
||||
insert into t4 select null as a;
|
||||
|
||||
insert into t3 set a=null;
|
||||
insert into t3 set a=null;
|
||||
|
||||
select * from t3;
|
||||
end|
|
||||
|
||||
call bug14304()|
|
||||
|
||||
drop procedure bug14304|
|
||||
drop table t3, t4|
|
||||
|
||||
#
|
||||
# BUG#NNNN: New bug synopsis
|
||||
|
@ -1069,7 +1069,7 @@ int sp_head::execute(THD *thd)
|
||||
}
|
||||
|
||||
/* we should cleanup free_list and memroot, used by instruction */
|
||||
thd->free_items();
|
||||
thd->cleanup_after_query();
|
||||
free_root(&execute_mem_root, MYF(0));
|
||||
|
||||
/*
|
||||
|
@ -1948,6 +1948,7 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup,
|
||||
backup->last_insert_id= last_insert_id;
|
||||
backup->next_insert_id= next_insert_id;
|
||||
backup->insert_id_used= insert_id_used;
|
||||
backup->clear_next_insert_id= clear_next_insert_id;
|
||||
backup->limit_found_rows= limit_found_rows;
|
||||
backup->examined_row_count= examined_row_count;
|
||||
backup->sent_row_count= sent_row_count;
|
||||
@ -1999,6 +2000,7 @@ void THD::restore_sub_statement_state(Sub_statement_state *backup)
|
||||
last_insert_id= backup->last_insert_id;
|
||||
next_insert_id= backup->next_insert_id;
|
||||
insert_id_used= backup->insert_id_used;
|
||||
clear_next_insert_id= backup->clear_next_insert_id;
|
||||
limit_found_rows= backup->limit_found_rows;
|
||||
sent_row_count= backup->sent_row_count;
|
||||
client_capabilities= backup->client_capabilities;
|
||||
|
@ -1090,7 +1090,7 @@ public:
|
||||
ha_rows cuted_fields, sent_row_count, examined_row_count;
|
||||
ulong client_capabilities;
|
||||
uint in_sub_stmt;
|
||||
bool enable_slow_log, insert_id_used;
|
||||
bool enable_slow_log, insert_id_used, clear_next_insert_id;
|
||||
my_bool no_send_ok;
|
||||
SAVEPOINT *savepoints;
|
||||
};
|
||||
|
Reference in New Issue
Block a user