Commit aa08a744 authored by Aleksey Midenkov's avatar Aleksey Midenkov

MDEV-29620 Assertion `next_insert_id == 0' failed in handler::ha_external_lock

ha_release_auto_increment() must be done before F_UNLCK.
Non-atomic case is handled by select_insert::binlog_query().
parent c579d66b
...@@ -912,3 +912,8 @@ x ...@@ -912,3 +912,8 @@ x
77 77
drop table t; drop table t;
set sql_mode= default; set sql_mode= default;
#
# MDEV-29620 Assertion `next_insert_id == 0' failed in handler::ha_external_lock
#
create or replace table t1 (i serial) as select * from (values(1), (2)) dt;
drop table t1;
...@@ -697,3 +697,9 @@ alter table mysql.innodb_index_stats modify stat_description varchar(1024) not n ...@@ -697,3 +697,9 @@ alter table mysql.innodb_index_stats modify stat_description varchar(1024) not n
select * from t; select * from t;
drop table t; drop table t;
set sql_mode= default; set sql_mode= default;
--echo #
--echo # MDEV-29620 Assertion `next_insert_id == 0' failed in handler::ha_external_lock
--echo #
create or replace table t1 (i serial) as select * from (values(1), (2)) dt;
drop table t1;
...@@ -4289,6 +4289,8 @@ bool select_insert::prepare_eof() ...@@ -4289,6 +4289,8 @@ bool select_insert::prepare_eof()
{ {
DBUG_ASSERT(table->s->tmp_table); DBUG_ASSERT(table->s->tmp_table);
table->file->ha_release_auto_increment();
/* /*
Note: InnoDB does autocommit on external unlock. Note: InnoDB does autocommit on external unlock.
We cannot do commit twice and we must commit after binlog We cannot do commit twice and we must commit after binlog
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment