[MDEV-29620] Assertion `next_insert_id == 0' failed in handler::ha_external_lock Created: 2022-09-23  Updated: 2023-05-18  Resolved: 2023-01-25

Status: Closed
Project: MariaDB Server
Component/s: Data Definition - Create Table, Server
Affects Version/s: None
Fix Version/s: N/A

Type: Bug Priority: Critical
Reporter: Alice Sherepa Assignee: Aleksey Midenkov
Resolution: Fixed Votes: 0
Labels: regression

Issue Links:
Problem/Incident
is caused by MDEV-25292 Atomic CREATE OR REPLACE TABLE Stalled

 Description   

CREATE OR REPLACE TABLE t1 ( i serial ) AS SELECT * FROM (values(1),(2)) dt;

10.11 49cee4e21a8e3cc0eccff3a6f9

/git/10.11/sql/handler.cc:7058: int handler::ha_external_lock(THD*, int): Assertion `next_insert_id == 0' failed.
220923 13:18:30 [ERROR] mysqld got signal 6 ;
 
Server version: 10.11.0-MariaDB-debug-log
 
??:0(__assert_fail)[0x7f37bb1ec102]
sql/handler.cc:7060(handler::ha_external_lock(THD*, int))[0x555dd0ccd919]
sql/sql_insert.cc:4300(select_insert::prepare_eof())[0x555dd0326cd3]
sql/sql_insert.cc:5220(select_create::send_eof())[0x555dd033070d]
sql/sql_select.cc:21364(do_select(JOIN*, Procedure*))[0x555dd05609fe]
sql/sql_select.cc:4813(JOIN::exec_inner())[0x555dd04e9f9e]
sql/sql_select.cc:4592(JOIN::exec())[0x555dd04e74e0]
sql/sql_select.cc:5073(mysql_select(THD*, TABLE_LIST*, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*))[0x555dd04eb8d5]
sql/sql_select.cc:582(handle_select(THD*, LEX*, select_result*, unsigned long))[0x555dd04bbd85]
sql/sql_table.cc:12740(Sql_cmd_create_table_like::execute(THD*))[0x555dd06d67cd]
sql/sql_parse.cc:5997(mysql_execute_command(THD*, bool))[0x555dd03e2f4f]
sql/sql_parse.cc:8037(mysql_parse(THD*, char*, unsigned int, Parser_state*))[0x555dd03f02c2]
sql/sql_parse.cc:1896(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool))[0x555dd03c688e]
sql/sql_parse.cc:1407(do_command(THD*, bool))[0x555dd03c35ab]
sql/sql_connect.cc:1416(do_handle_one_connection(CONNECT*, bool))[0x555dd086a7cb]
sql/sql_connect.cc:1320(handle_one_connection)[0x555dd086a121]
perfschema/pfs.cc:2203(pfs_spawn_thread)[0x555dd151021f]
nptl/pthread_create.c:487(start_thread)[0x7f37bb6abfa3]
x86_64/clone.S:97(clone)[0x7f37bb2b4eff]
 
Query (0x6290000e6450): CREATE OR REPLACE TABLE t1 ( i serial ) AS SELECT * FROM (values(1),(2)) dt



 Comments   
Comment by Aleksey Midenkov [ 2022-09-27 ]

Please review bb-10.11-midenok

Comment by Oleksandr Byelkin [ 2022-09-29 ]

OK to push

Comment by Roel Van de Paar [ 2023-01-20 ]

Seems fixed in bb-11.0-midenok-MDEV-25292

11.0.1 bb-11.0-midenok-MDEV-25292 b986107a777e3f900f235d969d569358c7a5edfe (Debug)

11.0.1-dbg>CREATE OR REPLACE TABLE t1 ( i serial ) AS SELECT * FROM (values(1),(2)) dt;
Query OK, 2 rows affected (0.017 sec)
Records: 2  Duplicates: 0  Warnings: 0
 
11.0.1-dbg>SELECT * FROM t1;
+---+---+
| i | 1 |
+---+---+
| 1 | 1 |
| 2 | 2 |
+---+---+
2 rows in set (0.008 sec)

Though not 100% confident that the FROM syntax is valid, please check.

Generated at Thu Feb 08 10:10:00 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.