Bug #17687 Alter NDB table with range partition to different SE causes mysqld to core
Submitted: 24 Feb 2006 3:04 Modified: 27 Feb 2006 15:09
Reporter: Jonathan Miller Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S1 (Critical)
Version:5.1.8 OS:Linux (Linux 32 Bit OS)
Assigned to: Assigned Account CPU Architecture:Any

[24 Feb 2006 3:04] Jonathan Miller
Description:
So altering an NDB table with range partition to myisam, innodb or memory storage engines causes the mysqld process to core. I will attach the mysqld and the core file to this report.

Core Back Trace:

#0  0x00f75402 in __kernel_vsyscall ()
#1  0x00a2855f in pthread_kill () from /lib/libpthread.so.0
#2  0x082f20db in write_core (sig=17618) at stacktrace.c:220
#3  0x081d27e2 in handle_segfault (sig=11) at mysqld.cc:2196
#4  <signal handler called>
#5  NdbScanOperation::executeCursor (this=0x9a09610, nodeId=1) at NdbScanOperation.cpp:371
#6  0x0852418a in NdbTransaction::executeAsynchPrepare (this=0x9a08688, aTypeOfExec=Commit,
    aCallback=0, anyObject=0x0, abortOption=AbortOnError) at NdbTransaction.cpp:518
#7  0x08524417 in NdbTransaction::executeNoBlobs (this=0x9a08688, aTypeOfExec=Prepare,
    abortOption=AbortOnError, forceSend=1) at NdbTransaction.cpp:438
#8  0x0852495c in NdbTransaction::execute (this=0x9a08688, aTypeOfExec=Commit,
    abortOption=AbortOnError, forceSend=1) at NdbTransaction.cpp:273
#9  0x0834b58c in ndbcluster_commit (thd=0x1, all=false) at ha_ndbcluster.cc:299
#10 0x082a5c12 in ha_commit_one_phase (thd=0xb763ba98, all=false) at handler.cc:743
#11 0x082a69a5 in ha_commit_trans (thd=0xb763ba98, all=false) at handler.cc:713
#12 0x082a6b51 in ha_enable_transaction (thd=0xb763ba98, on=true) at handler.cc:2266
#13 0x082bbd66 in mysql_alter_table (thd=0xb763ba98, new_db=0x99ccee8 "test",
    new_name=0x99df1c0 "t1", create_info=0xb763c03c, table_list=0x99df1e8, fields=@0xb763bf54,
    keys=@0xb763bf48, order_num=0, order=0x0, handle_duplicates=DUP_ERROR, ignore=false,
    alter_info=0xb763c180, do_send_ok=true) at sql_table.cc:5238
#14 0x081f103d in mysql_execute_command (thd=0xb763ba98) at sql_parse.cc:3040
#15 0x081f65f4 in mysql_parse (thd=0xb763ba98, inBuf=0x99df168 "ALTER TABLE t1 ENGINE=MyISAM",
    length=28) at sql_parse.cc:5772
#16 0x081f6bbd in dispatch_command (command=COM_QUERY, thd=0xb763ba98, packet=Variable "packet" is not available.
)
    at sql_parse.cc:1769
#17 0x081f8947 in handle_one_connection (arg=0xb763ba98) at sql_parse.cc:1536
#18 0x00a25b80 in start_thread () from /lib/libpthread.so.0
#19 0x001dc9ce in clone () from /lib/libc.so.6

How to repeat:
Take your pick:

CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255), bc CHAR(255), d DECIMAL(10,4) DEFAULT 0, f FLOAT DEFAULT 0, total BIGINT UNSIGNED, y YEAR, t DATE)ENGINE=NDB PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901), PARTITION p1 VALUES LESS THAN (1946),  PARTITION p2 VALUES LESS THAN (1966), PARTITION p3 VALUES LESS THAN (1986), PARTITION p4 VALUES LESS THAN (2005), PARTITION p5 VALUES LESS THAN MAXVALUE);

CREATE TABLE t2 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255), bc CHAR(255), d DECIMAL(10,4) DEFAULT 0, f FLOAT DEFAULT 0, total BIGINT UNSIGNED, y YEAR, t DATE)ENGINE=NDB PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901), PARTITION p1 VALUES LESS THAN (1946),  PARTITION p2 VALUES LESS THAN (1966), PARTITION p3 VALUES LESS THAN (1986), PARTITION p4 VALUES LESS THAN (2005), PARTITION p5 VALUES LESS THAN MAXVALUE);

CREATE TABLE t3 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255), bc CHAR(255), d DECIMAL(10,4) DEFAULT 0, f FLOAT DEFAULT 0, total BIGINT UNSIGNED, y YEAR, t DATE)ENGINE=NDB PARTITION BY RANGE (YEAR(t)) (PARTITION p0 VALUES LESS THAN (1901), PARTITION p1 VALUES LESS THAN (1946),  PARTITION p2 VALUES LESS THAN (1966), PARTITION p3 VALUES LESS THAN (1986), PARTITION p4 VALUES LESS THAN (2005), PARTITION p5 VALUES LESS THAN MAXVALUE);

ALTER TABLE t1 ENGINE=MyISAM;
ALTER TABLE t2 ENGINE=InnoDB;
ALTER TABLE t3 ENGINE=MEMORY;
[24 Feb 2006 14:31] Jonathan Miller
Might be duplicate of http://bugs.mysql.com/bug.php?id=17499, but this one will produce core for you each time.
[24 Feb 2006 17:16] Jonathan Miller
Another way to hit it.

(gdb) bt
#0  0x00285402 in __kernel_vsyscall ()
#1  0x00a2855f in pthread_kill () from /lib/libpthread.so.0
#2  0x082f20db in write_core (sig=17612) at stacktrace.c:220
#3  0x081d27e2 in handle_segfault (sig=11) at mysqld.cc:2196
#4  <signal handler called>
#5  NdbScanOperation::executeCursor (this=0x93ae6c8, nodeId=1) at NdbScanOperation.cpp:371
#6  0x0852418a in NdbTransaction::executeAsynchPrepare (this=0x93ad6b0, aTypeOfExec=Commit,
    aCallback=0, anyObject=0x0, abortOption=AbortOnError) at NdbTransaction.cpp:518
#7  0x08524417 in NdbTransaction::executeNoBlobs (this=0x93ad6b0, aTypeOfExec=Prepare,
    abortOption=AbortOnError, forceSend=1) at NdbTransaction.cpp:438
#8  0x0852495c in NdbTransaction::execute (this=0x93ad6b0, aTypeOfExec=Commit,
    abortOption=AbortOnError, forceSend=1) at NdbTransaction.cpp:273
#9  0x0834b58c in ndbcluster_commit (thd=0x1, all=false) at ha_ndbcluster.cc:299
#10 0x082a5c12 in ha_commit_one_phase (thd=0x9356308, all=false) at handler.cc:743
#11 0x082a69a5 in ha_commit_trans (thd=0x9356308, all=false) at handler.cc:713
#12 0x082a6b51 in ha_enable_transaction (thd=0x9356308, on=true) at handler.cc:2266
#13 0x082bbd66 in mysql_alter_table (thd=0x9356308, new_db=0x8b677b0 "test",
    new_name=0x9380728 "t1", create_info=0x93568ac, table_list=0x9380750, fields=@0x93567c4,
    keys=@0x93567b8, order_num=0, order=0x0, handle_duplicates=DUP_ERROR, ignore=false,
    alter_info=0x93569f0, do_send_ok=true) at sql_table.cc:5238
#14 0x081f103d in mysql_execute_command (thd=0x9356308) at sql_parse.cc:3040
#15 0x081f65f4 in mysql_parse (thd=0x9356308, inBuf=0x93806d0 "ALTER TABLE t1 ENGINE=MyISAM",
    length=28) at sql_parse.cc:5772
#16 0x081f6bbd in dispatch_command (command=COM_QUERY, thd=0x9356308, packet=Variable "packet" is not available.
)
    at sql_parse.cc:1769
#17 0x081f8947 in handle_one_connection (arg=0x9356308) at sql_parse.cc:1536

CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255), bc CHAR(255), d DECIMAL(10,4) DEFAULT 0, f FLOAT DEFAULT 0, total BIGINT UNSIGNED, y YEAR, t DATE)ENGINE=NDB PARTITION BY HASH( YEAR(t) ) PARTITIONS 4;

ALTER TABLE t1 ENGINE=MyISAM;
[24 Feb 2006 22:11] Jonathan Miller
Replication (master)ndb -> (slave)MyISAM

#0  0x00bb8402 in __kernel_vsyscall ()
#1  0x00a2855f in pthread_kill () from /lib/libpthread.so.0
#2  0x082f20db in write_core (sig=22813) at stacktrace.c:220
#3  0x081d27e2 in handle_segfault (sig=11) at mysqld.cc:2196
#4  <signal handler called>
#5  NdbScanOperation::executeCursor (this=0xb7e3a5b8, nodeId=1) at NdbScanOperation.cpp:371
#6  0x0852418a in NdbTransaction::executeAsynchPrepare (this=0xa9a7908, aTypeOfExec=Commit,
    aCallback=0, anyObject=0x0, abortOption=AbortOnError) at NdbTransaction.cpp:518
#7  0x08524417 in NdbTransaction::executeNoBlobs (this=0xa9a7908, aTypeOfExec=Prepare,
    abortOption=AbortOnError, forceSend=1) at NdbTransaction.cpp:438
#8  0x0852495c in NdbTransaction::execute (this=0xa9a7908, aTypeOfExec=Commit,
    abortOption=AbortOnError, forceSend=1) at NdbTransaction.cpp:273
#9  0x0834b58c in ndbcluster_commit (thd=0x1, all=false) at ha_ndbcluster.cc:299
#10 0x082a5c12 in ha_commit_one_phase (thd=0xa97bae0, all=false) at handler.cc:743
#11 0x082a69a5 in ha_commit_trans (thd=0xa97bae0, all=false) at handler.cc:713
#12 0x082a6b51 in ha_enable_transaction (thd=0xa97bae0, on=true) at handler.cc:2266
#13 0x082bbd66 in mysql_alter_table (thd=0xa97bae0, new_db=0xa947e40 "test",
    new_name=0xa987150 "t1", create_info=0xa97c084, table_list=0xa987178, fields=@0xa97bf9c,
    keys=@0xa97bf90, order_num=0, order=0x0, handle_duplicates=DUP_ERROR, ignore=false,
    alter_info=0xa97c1c8, do_send_ok=true) at sql_table.cc:5238
#14 0x081f103d in mysql_execute_command (thd=0xa97bae0) at sql_parse.cc:3040
#15 0x081f65f4 in mysql_parse (thd=0xa97bae0, inBuf=0xa9870f8 "ALTER TABLE t1 MODIFY vc TEXT",
    length=29) at sql_parse.cc:5772
#16 0x081f6bbd in dispatch_command (command=COM_QUERY, thd=0xa97bae0, packet=Variable "packet" is not available.
)
    at sql_parse.cc:1769
#17 0x081f8947 in handle_one_connection (arg=0xa97bae0) at sql_parse.cc:1536
---Type <return> to continue, or q <return> to quit---
#18 0x00a25b80 in start_thread () from /lib/libpthread.so.0
#19 0x002e99ce in clone () from /lib/libc.so.6

CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255), bc CHAR(255), d DECIMAL(10,4) DEFAULT 0, f FLOAT DEFAULT 0, total BIGINT UNSIGNED, y YEAR, t DATE)PARTITION BY HASH( YEAR(t) ) PARTITIONS 4;
ALTER TABLE t1 MODIFY vc TEXT;
[27 Feb 2006 15:09] Tomas Ulin
duplicate with 17499