| Bug #34048 | Falcon: after error with tablespace, I can't create table | ||
|---|---|---|---|
| Submitted: | 24 Jan 2008 23:17 | Modified: | 16 Apr 2008 10:04 |
| Reporter: | Peter Gulutzan | Email Updates: | |
| Status: | Duplicate | Impact on me: | |
| Category: | MySQL Server: Falcon storage engine | Severity: | S3 (Non-critical) |
| Version: | 6.0.5-alpha-debug | OS: | Linux (SUSE 10 / 64-bit) |
| Assigned to: | Assigned Account | CPU Architecture: | Any |
[24 Jan 2008 23:17]
Peter Gulutzan
[25 Jan 2008 9:04]
Sveta Smirnova
Thank you for the report. Verified as described.
[30 Jan 2008 22:16]
Hakan Küçükyılmaz
Latest mysql-6.0-falcon-team tree shows following assertion:
[23:12] root@(none)>create schema test; use test;
Query OK, 1 row affected (0.00 sec)
Database changed
[23:12] root@test>create table t (s1 int) engine=falcon tablespace nonexistent;
ERROR 1005 (HY000): Can't create table 'test.t' (errno: 156)
[23:12] root@test>create table t (s1 int) engine=falcon;
-- Assertion
(gdb) bt
#0 0x00002b7d40ab969b in raise () from /lib/libpthread.so.0
#1 0x000000000082cc5e in Error::debugBreak () at Error.cpp:92
#2 0x000000000082cd46 in Error::error (string=<value optimized out>) at Error.cpp:69
#3 0x000000000082cda6 in Error::assertionFailed (fileName=0x4 <Address 0x4 out of bounds>,
line=1232) at Error.cpp:76
#4 0x00000000007f0e6d in StorageHandler::addTable (this=0x2aaaaf10c048, table=0x2aaaaf3439c0)
at StorageHandler.cpp:621
#5 0x00000000007f2426 in StorageHandler::createTable (this=0x2aaaaf10c048,
pathname=0x40880a40 "./test/t", tableSpaceName=0x0, tempTable=<value optimized out>)
at StorageHandler.cpp:607
#6 0x00000000007ea418 in StorageInterface::create (this=0x12166a8,
mySqlName=0x40880a40 "./test/t", form=0x4087f8e0, info=0x40880de0) at ha_falcon.cpp:694
#7 0x0000000000737b38 in ha_create_table (thd=0x123ed48, path=<value optimized out>,
db=0x127dc38 "test", table_name=0x127d8b8 "t", create_info=0x40880de0,
update_create_info=false) at handler.cc:2706
#8 0x00000000006ff583 in rea_create_table (thd=0x123ed48, path=0x40880a40 "./test/t",
db=0x127dc38 "test", table_name=0x127d8b8 "t", create_info=0x40880de0,
create_fields=@0x40881708, keys=0, key_info=0x127e060, file=0x127ddc0) at unireg.cc:473
#9 0x000000000074e40a in mysql_create_table_no_lock (thd=0x123ed48, db=0x127dc38 "test",
table_name=0x127d8b8 "t", create_info=0x40880de0, alter_info=0x408816c0,
internal_tmp_table=false, select_field_count=0) at sql_table.cc:3474
#10 0x000000000074e7f9 in mysql_create_table (thd=0x123ed48, db=0x127dc38 "test",
table_name=0x127d8b8 "t", create_info=0x40880de0, alter_info=0x408816c0,
internal_tmp_table=false, select_field_count=0) at sql_table.cc:3581
#11 0x00000000006560af in mysql_execute_command (thd=0x123ed48) at sql_parse.cc:2231
(gdb) f 4
#4 0x00000000007f0e6d in StorageHandler::addTable (this=0x2aaaaf10c048, table=0x2aaaaf3439c0)
at StorageHandler.cpp:621
621 ASSERT(table->collision != table);
(gdb) p table->collision
$1 = (StorageTableShare *) 0x2aaaaf3439c0
(gdb) p table
$2 = (class StorageTableShare *) 0x2aaaaf3439c0
(gdb)
After restart, we get a inconsitent state:
[23:15] root@test>create table t (s1 int) engine=falcon;
ERROR 1050 (42S01): Table 't' already exists
[23:15] root@test>insert into t values (1);
ERROR 1146 (42S02): Table 'test.t' doesn't exist
[1 Feb 2008 0:56]
zuo jianhua
Maybe registerTable called led to in StorageHandler::createTable( ). move line 606 tableShare->registerTable() to below storageTable->create( ) line 715 in StorageInterface::create( );
[16 Apr 2008 10:04]
Sergey Vojtovich
Will be fixed by patch for BUG#33723.
[19 Jun 2008 14:03]
John Embretsen
Added a separate test case for this bug, see http://lists.mysql.com/commits/48170
