| Bug #41305 | server crashes when inserting duplicate row into a merge table | ||
|---|---|---|---|
| Submitted: | 8 Dec 2008 18:52 | Modified: | 15 Apr 3:44 |
| Reporter: | Balint Toth | ||
| Status: | Closed | ||
| Category: | Server: Merge | Severity: | S2 (Serious) |
| Version: | 5.0/5.1/6.0 | OS: | Linux (x86_64) |
| Assigned to: | Anurag Shekhar | Target Version: | 5.1+ |
| Tags: | regression, merge unique key | ||
| Triage: | Triaged: D1 (Critical) | ||
[8 Dec 2008 20:51]
Miguel Solorzano
Verified on 5.0 bzr tree. I will test 5.1/6.0
081208 17:49:46 [Note] /home/miguel/dbs/5.0/libexec/mysqld: ready for connections.
Version: '5.0.76-debug' socket: '/tmp/mysql.sock' port: 3306 Source distribution
[New Thread 0x40b8f950 (LWP 28860)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x40b8f950 (LWP 28860)]
0x0000000000599ec3 in Field::val_str (this=0xb318db, str=0x40b8c620) at field.h:117
117 inline String *val_str(String *str) { return val_str(str, str); }
(gdb)
[8 Dec 2008 21:04]
Miguel Solorzano
Thank you for the bug report. Verified on 5.1 and 6.0 too. Older release 5.0.22 don't crash.
[15 Dec 2008 23:18]
Omer BarNir
setting a PK on the merge table prevents the crash in the above scenario
[24 Feb 13:52]
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/67364 2810 Anurag Shekhar 2009-02-24 Bug#41305 server crashes when inserting duplicate row into a merge table This problem comes while inserting a duplicate row in merge table without key but the child table has a primary key. While forming the error message handler tries to locate the key field which is creating this problem but as there is no key on the merge table there is a segmentation fault. An additional check to ensure that the key fields are present fixes this problem.
[26 Feb 11:10]
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/67657 2824 Anurag Shekhar 2009-02-26 Bug#41305 server crashes when inserting duplicate row into a merge table This problem comes while inserting a duplicate row in merge table without key but the child table has a primary key. While forming the error message handler tries to locate the key field which is creating this problem but as there is no key on the merge table there is a segmentation fault.
[4 Mar 10:18]
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/68182 2832 Anurag Shekhar 2009-03-04 Bug#41305 server crashes when inserting duplicate row into a merge table This problem comes while inserting a duplicate row in merge table without key but the child table has a primary key. While forming the error message handler tries to locate the key field which is creating this problem but as there is no key on the merge table there is a segmentation fault.
[6 Mar 15:18]
Ingo Strüwing
Approved. All looks good. No comments.
[9 Mar 9:43]
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/68591 2837 He Zhenxing 2009-03-09 [merge] Auto merge
[13 Mar 20:03]
Bugs System
Pushed into 5.1.33 (revid:joro@sun.com-20090313111355-7bsi1hgkvrg8pdds) (version source revid:zhou.li@sun.com-20090311061050-ihp0g77znonq1tuq) (merge vers: 5.1.33) (pib:6)
[18 Mar 14:21]
Bugs System
Pushed into 6.0.11-alpha (revid:joro@sun.com-20090318122208-1b5kvg6zeb4hxwp9) (version source revid:matthias.leich@sun.com-20090310140952-gwtoq87wykhji3zi) (merge vers: 6.0.11-alpha) (pib:6)
[15 Apr 3:44]
Paul DuBois
Noted in 5.1.33, 6.0.11 changelogs. If the tables underlying a MERGE table had a primary key but the MERGE table itself did not, inserting a duplicate row into the MERGE table caused a server crash.
[9 May 18:41]
Bugs System
Pushed into 5.1.34-ndb-6.2.18 (revid:jonas@mysql.com-20090508185236-p9b3as7qyauybefl) (version source revid:jonas@mysql.com-20090508100057-30ote4xggi4nq14v) (merge vers: 5.1.33-ndb-6.2.18) (pib:6)
[9 May 19:38]
Bugs System
Pushed into 5.1.34-ndb-6.3.25 (revid:jonas@mysql.com-20090509063138-1u3q3v09wnn2txyt) (version source revid:jonas@mysql.com-20090508175813-s6yele2z3oh6o99z) (merge vers: 5.1.33-ndb-6.3.25) (pib:6)
[9 May 20:35]
Bugs System
Pushed into 5.1.34-ndb-7.0.6 (revid:jonas@mysql.com-20090509154927-im9a7g846c6u1hzc) (version source revid:jonas@mysql.com-20090509073226-09bljakh9eppogec) (merge vers: 5.1.33-ndb-7.0.6) (pib:6)

Description: Server crashes when trying to insert a duplicate row into a merge table. Inserting directly into the merged table works, specifying "IGNORE" keyword also eliminates the crash. How to repeat: DROP TABLE IF EXISTS `m`; DROP TABLE IF EXISTS `m1`; CREATE TABLE `m1` ( `dt` datetime NOT NULL default '0000-00-00 00:00:00', `i` int(10) unsigned NOT NULL, PRIMARY KEY (`dt`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; DROP TABLE IF EXISTS `m2`; CREATE TABLE `m2` ( `dt` datetime NOT NULL default '0000-00-00 00:00:00', `i` int(10) unsigned NOT NULL, PRIMARY KEY (`dt`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE `m` ( `dt` datetime NOT NULL, `i` int(10) unsigned NOT NULL ) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`m1`,`m2`); insert into m (dt,i) values ("2008-12-08 10:00:00",1); insert into m (dt,i) values ("2008-12-08 10:00:00",1);