Bug #28046 Falcon crash on update of non PK column, if PK is auto_increment
Submitted: 23 Apr 2007 21:12
Reporter: Hakan Küçükyılmaz Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S3 (Non-critical)
Version:6.0.0-alpha OS:Any
Assigned to: CPU Architecture:Any

[23 Apr 2007 21:12] Hakan Küçükyılmaz
Description:
Assertion is:

Program received signal SIGABRT, Aborted.
0xffffe410 in ?? ()
(gdb) where
0 0xffffe410 in ?? ()
1 0x4229138c in ?? ()
0000002 0x00000006 in ?? ()
0000003 0x40158b75 in abort () from /lib/tls/libc.so.6
0000004 0x40150903 in __assert_fail () from /lib/tls/libc.so.6
0000005 0x0824abdb in Field_longlong::val_int (this=0x9491ec0) at field.cc:3792
0000006 0x086b225b in NfsStorageTable::update_row (this=0x9491d60,
    oldData=0x9491e98 "&65533;030", newData=0x9491e80 "&65533;030") at ha_falcon.cpp:544
0000007 0x0835c4c9 in handler::ha_update_row (this=0x9491d60,
    old_data=0x9491e98 "&65533;030", new_data=0x9491e80 "&65533;030") at handler.cc:3359
0000008 0x082fe811 in mysql_update (thd=0x93fff98, table_list=0x9431448,
    fields=@0x94002f4, values=@0x94004c8, conds=0x0, order_num=0, order=0x0,
    limit=18446744073709551615, handle_duplicates=DUP_ERROR, ignore=false)
    at sql_update.cc:528
0000009 0x0828f47d in mysql_execute_command (thd=0x93fff98) at sql_parse.cc:3260
0000010 0x08296072 in mysql_parse (thd=0x93fff98,
    inBuf=0x94313c0 "update t1 set parent_id=parent_id+100", length=37)
    at sql_parse.cc:5947
0000011 0x0828bbfd in dispatch_command (command=COM_QUERY, thd=0x93fff98,
    packet=0x9429361 "update t1 set parent_id=parent_id+100", packet_length=38)
    at sql_parse.cc:1764
0000012 0x0828b46c in do_command (thd=0x93fff98) at sql_parse.cc:1550
0000013 0x0828a5ea in handle_one_connection (arg=0x93fff98) at sql_parse.cc:1190
---Type <return> to continue, or q <return> to quit---
0000014 0x40253aa7 in start_thread () from /lib/tls/libpthread.so.0
0000015 0x401e9c2e in clone () from /lib/tls/libc.so.6
(gdb)

How to repeat:
drop table if exists t1;
# If I remove the auto_increment, the crash on the update disappers
CREATE TABLE t1 (
id BIGINT NOT NULL auto_increment,
parent_id BIGINT,
PRIMARY KEY (id)
) engine=Falcon;
INSERT INTO t1 VALUES (9,2),(24,4);
# This UPDATE gets a crash
update t1 set parent_id=parent_id+100;
---> crash
mysqld: field.cc:3792: virtual longlong Field_longlong::val_int(): Assertion `!t
able || (!table->read_set || bitmap_is_set(table->read_set, field_index))' failed.
[23 Apr 2007 21:12] Hakan Küçükyılmaz
Test case is falcon_bug_28046.test.