Bug #38821 Assert table->auto_increment_field_not_null failed in open_table()
| Submitted: | 15 Aug 2008 12:00 | Modified: | 17 Oct 2008 18:15 |
|---|---|---|---|
| Reporter: | Philip Stoev | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S1 (Critical) |
| Version: | 5.1-bzr/5.0/6.0 | OS: | Any |
| Assigned to: | Ramil Kalimullin | CPU Architecture: | Any |
| Tags: | regression | ||
[15 Aug 2008 12:44]
Philip Stoev
The only queries that are needed are three CREATE IF NOT EXISTS ... SELECT statements using AUTO_INCREMENT:
CREATE TABLE t1 (
pk INTEGER AUTO_INCREMENT ,
int_nokey INTEGER NOT NULL,
int_key INTEGER NOT NULL,
PRIMARY KEY (pk),
KEY (int_key)
);
INSERT IGNORE INTO t1 ( int_key, int_nokey ) VALUES ( '5', '8' );
CREATE TABLE IF NOT EXISTS t2 (
`pk` INTEGER NOT NULL AUTO_INCREMENT,
PRIMARY KEY ( `pk` )
) SELECT `pk` FROM t1;
CREATE TABLE IF NOT EXISTS t2 (
`pk` INTEGER NOT NULL AUTO_INCREMENT,
PRIMARY KEY ( `pk` )
) SELECT `pk` FROM t1;
CREATE TABLE IF NOT EXISTS t2 (
`pk` INTEGER NOT NULL AUTO_INCREMENT,
PRIMARY KEY ( `pk` )
) SELECT `pk` FROM t1;
[15 Aug 2008 13:05]
MySQL Verification Team
Thank you for the bug report. Repeatable on bzr 5.0/5.1/6.0. Not repeatable on 5.0.22 debug released version.
terribly wrong...
009B9434 mysqld.exe!_NMSG_WRITE()[crt0msg.c:195]
009A79BA mysqld.exe!abort()[abort.c:44]
009A5122 mysqld.exe!_assert()[assert.c:306]
00609B1B mysqld.exe!open_table()[sql_base.cc:2964]
0060CABF mysqld.exe!open_tables()[sql_base.cc:4515]
0060DB98 mysqld.exe!open_and_lock_tables_derived()[sql_base.cc:4915]
005D8FB2 mysqld.exe!open_and_lock_tables()[mysql_priv.h:1531]
0066C707 mysqld.exe!mysql_execute_command()[sql_parse.cc:2452]
00675041 mysqld.exe!mysql_parse()[sql_parse.cc:5656]
00669EDE mysqld.exe!dispatch_command()[sql_parse.cc:1137]
006695C7 mysqld.exe!do_command()[sql_parse.cc:794]
00778B64 mysqld.exe!handle_one_connection()[sql_connect.cc:1115]
0083E4B6 mysqld.exe!pthread_start()[my_winthread.c:85]
009AD567 mysqld.exe!_threadstart()[thread.c:196]
7C80B713 kernel32.dll!GetModuleFileNameA()
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort...
thd->query at 01EEE730=CREATE TABLE IF NOT EXISTS t2 (
`pk` INTEGER NOT NULL AUTO_INCREMENT,
PRIMARY KEY ( `pk` )
) SELECT `pk` FROM t1
thd->thread_id=1
thd->killed=NOT_KILLED
[26 Aug 2008 11:46]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/52548 2721 Ramil Kalimullin 2008-08-26 Fix for bug#38821: Assert table->auto_increment_field_not_null failed in open_table() Problem: repeating "CREATE... ( AUTOINCREMENT) ... SELECT" may lead to an assertion failure. Fix: reset table->auto_increment_field_not_null after each record writing.
[3 Sep 2008 10:17]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/53147 2681 Ramil Kalimullin 2008-09-03 Fix for bug#38821: Assert table->auto_increment_field_not_null failed in open_table() Problem: repeating "CREATE... ( AUTOINCREMENT) ... SELECT" may lead to an assertion failure. Fix: reset table->auto_increment_field_not_null after each record writing.
[15 Sep 2008 8:11]
Bugs System
Pushed into 5.0.70 (revid:ramil@mysql.com-20080903101719-64hgxtnfm157j1n6) (version source revid:kgeorge@mysql.com-20080910094058-fygie2nur8py7y8j) (pib:3)
[15 Sep 2008 8:31]
Bugs System
Pushed into 5.1.29 (revid:ramil@mysql.com-20080903101719-64hgxtnfm157j1n6) (version source revid:kgeorge@mysql.com-20080910094421-1i1kxv3n1bxskiqa) (pib:3)
[16 Sep 2008 14:24]
Paul DuBois
Noted in 5.0.70, 5.1.29 changelogs. Repeated CREATE TABLE ... SELECT statements, where the created table contained an AUTO_INCREMENT column, could lead to an assertion failure. Setting to NDI pending push into 6.0.x
[1 Oct 2008 16:00]
Bugs System
Pushed into 5.1.29 (revid:ramil@mysql.com-20080903101719-64hgxtnfm157j1n6) (version source revid:kgeorge@mysql.com-20080910094421-1i1kxv3n1bxskiqa) (pib:4)
[1 Oct 2008 17:16]
Paul DuBois
Setting report to NDI pending push into 6.0.x.
[17 Oct 2008 16:45]
Bugs System
Pushed into 6.0.8-alpha (revid:ramil@mysql.com-20080903101719-64hgxtnfm157j1n6) (version source revid:kpettersson@mysql.com-20080911114255-81pt7q1uvl1fkojq) (pib:5)
[17 Oct 2008 18:15]
Paul DuBois
Noted in 6.0.8 changelog.
[28 Oct 2008 21:05]
Bugs System
Pushed into 5.1.29-ndb-6.2.17 (revid:ramil@mysql.com-20080903101719-64hgxtnfm157j1n6) (version source revid:tomas.ulin@sun.com-20081028140209-u4emkk1xphi5tkfb) (pib:5)
[28 Oct 2008 22:23]
Bugs System
Pushed into 5.1.29-ndb-6.3.19 (revid:ramil@mysql.com-20080903101719-64hgxtnfm157j1n6) (version source revid:tomas.ulin@sun.com-20081028194045-0353yg8cvd2c7dd1) (pib:5)
[1 Nov 2008 9:49]
Bugs System
Pushed into 5.1.29-ndb-6.4.0 (revid:ramil@mysql.com-20080903101719-64hgxtnfm157j1n6) (version source revid:jonas@mysql.com-20081101082305-qx5a1bj0z7i8ueys) (pib:5)
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.071 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: When executing a non-concurrent workload involving creating partitioned tables and stored procedures and triggers that operate on them, mysqld asserted as follows: #8 0x003df57e in __assert_fail () from /lib/libc.so.6 #9 0x082a91bb in open_table (thd=0xa33d808, table_list=0xa383848, mem_root=0xb2a4c14c, refresh=0xb2a4c18f, flags=0) at sql_base.cc:2964 #10 0x082a9cc3 in open_tables (thd=0xa33d808, start=0xb2a4c204, counter=0xb2a4c1f0, flags=0) at sql_base.cc:4515 #11 0x082aa4b4 in open_and_lock_tables_derived (thd=0xa33d808, tables=0xa383848, derived=true) at sql_base.cc:4915 #12 0x08266e2b in open_and_lock_tables (thd=0xa33d808, tables=0xa383848) at mysql_priv.h:1531 #13 0x08259702 in execute_sqlcom_select (thd=0xa33d808, all_tables=0xa383848) at sql_parse.cc:4730 #14 0x0825b655 in mysql_execute_command (thd=0xa33d808) at sql_parse.cc:2073 #15 0x083fcc47 in sp_instr_stmt::exec_core (this=0xa383a30, thd=0xa33d808, nextp=0xb2a4d1dc) at sp_head.cc:2892 #16 0x083fce9b in sp_lex_keeper::reset_lex_and_exec_core (this=0xa383a58, ---Type <return> to continue, or q <return> to quit--- thd=0xa33d808, nextp=0xb2a4d1dc, open_tables=false, instr=0xa383a30) at sp_head.cc:2721 #17 0x08402d35 in sp_instr_stmt::execute (this=0xa383a30, thd=0xa33d808, nextp=0xb2a4d1dc) at sp_head.cc:2835 #18 0x083ff0cf in sp_head::execute (this=0xa382888, thd=0xa33d808) at sp_head.cc:1245 #19 0x083ffd71 in sp_head::execute_procedure (this=0xa382888, thd=0xa33d808, args=0xa33ee3c) at sp_head.cc:1970 #20 0x08262198 in mysql_execute_command (thd=0xa33d808) at sql_parse.cc:4119 #21 0x08264375 in mysql_parse (thd=0xa33d808, inBuf=0xa33f660 "CALL r", length=6, found_semicolon=0xb2a4e25c) at sql_parse.cc:5656 #22 0x08264f70 in dispatch_command (command=COM_QUERY, thd=0xa33d808, packet=0xa34f749 "CALL r", packet_length=6) at sql_parse.cc:1137 #23 0x0826612e in do_command (thd=0xa33d808) at sql_parse.cc:794 #24 0x082535ae in handle_one_connection (arg=0xa33d808) at sql_connect.cc:1115 #25 0x0057d32f in start_thread () from /lib/libpthread.so.0 #26 0x0049a27e in clone () from /lib/libc.so.6 The assertion is here: 2959 table->status=STATUS_NO_RECORD; 2960 table->insert_values= 0; 2961 table->fulltext_searched= 0; 2962 table->file->ft_handler= 0; 2963 /* Catch wrong handling of the auto_increment_field_not_null. */ 2964 DBUG_ASSERT(!table->auto_increment_field_not_null); <<<<<<<<< HERE 2965 table->auto_increment_field_not_null= FALSE; 2966 if (table->timestamp_field) 2967 table->timestamp_field_type= table->timestamp_field->get_auto_set_type(); 2968 table->pos_in_table_list= table_list; (gdb) print table->auto_increment_field_not_null $2 = 1 '\001' How to repeat: A simplifed test case will follow shortly.