Bug #16351 DD: Invaild Table Space locked in memory

Submitted: 10 Jan 2006 19:34 Modified: 11 Jan 2006 7:19
Reporter: Jonathan Miller Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S2 (Serious)
Version:5.1.5-alpha OS:Linux (Linux)
Assigned to: Jonas Oreland CPU Architecture:Any

[10 Jan 2006 19:34] Jonathan Miller
Description:
Consider the following test case:

mysql> CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' INITIAL_SIZE 16M UNDO_BUFFER_SIZE = 1M ENGINE=NDB;
Query OK, 0 rows affected (1.65 sec)

mysql> CREATE TABLESPACE ts2 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 INITIAL_SIZE 12M ENGINE NDB;
Query OK, 0 rows affected (1.72 sec)

mysql> create database mysqltest;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE TABLE mysqltest.t1 (c1 INT, c2 DOUBLE, c3 FLOAT, c4 TIMESTAMP, c5 TEXT, c6 LONGBLOB, c7 CHAR, c8 MEDIUMINT AUTO_INCREMENT, c9 BIT(8), c10 DECIMAL(10,2), c11 char(10), c12 VARCHAR(150), PRIMARY KEY (c8)) TABLESPACE ts2 STORAGE DISK ENGINE=NDB;
Query OK, 0 rows affected (1.04 sec)

mysql> drop tablespace ts2 engine = ndb;
ERROR 1503 (HY000): Failed to drop TABLESPACE

mysql> alter tablespace ts2 drop datafile 'datafile.dat' engine = ndb;
Query OK, 0 rows affected (0.14 sec)

mysql> drop tablespace ts2 engine = ndb;
ERROR 1503 (HY000): Failed to drop TABLESPACE
mysql> CREATE TABLESPACE ts2 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 INITIAL_SIZE 12M ENGINE NDB; ERROR 1502 (HY000): Failed to create TABLESPACE

*** 
So now it won't let me drop the table space . But if we look at the file system we see that the file is gone.

/space/run/ndb_4_fs> ls
D1  D10  D11  D2  D8  D9  LCP  undofile.dat
/space/run/ndb_5_fs> ls
D1  D10  D11  D2  D8  D9  LCP  undofile.dat

And I can still drop my table (GOOD)

mysql> use mysqltest
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------+
| Tables_in_mysqltest |
+---------------------+
| t1                  |
+---------------------+
1 row in set (0.01 sec)

mysql> drop table t1;
Query OK, 0 rows affected (0.69 sec)

But I still can not drop the table space:

mysql> drop tablespace ts2 engine = ndb;
ERROR 1503 (HY000): Failed to drop TABLESPACE

Yet if I restart the whole cluster, then it will allow the drop.

mysql> drop tablespace ts2 engine = ndb; Query OK, 0 rows affected (0.13 sec)

How to repeat:
See Above

Suggested fix:
Should not have to restart cluster to drop invalid Table Space.
[11 Jan 2006 7:19] Jonas Oreland
All but the very last "drop tablespace" should fail.
You cant drop a tablespace that has datafiles using it, or tables using it.

BUT...I cant reproduce the error...it works like a charm for me...
Can you make a mysqltest script?

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.037 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.