BUG#21699 DROP last DATAFILE from TABLESPACE even though there are still table...

BUG#21699 DROP last DATAFILE from TABLESPACE even though there are still table in it. And it gives the cofusing error message.
parent 1bcac85f
...@@ -186,6 +186,34 @@ INITIAL_SIZE 1000000000000K ...@@ -186,6 +186,34 @@ INITIAL_SIZE 1000000000000K
ENGINE = NDB; ENGINE = NDB;
ERROR HY000: The size number was correct but we don't allow the digit part to be more than 2 billion ERROR HY000: The size number was correct but we don't allow the digit part to be more than 2 billion
DROP TABLE t1; DROP TABLE t1;
create tablespace ts2
add datafile 'datafile2_1.dat'
use logfile group lg1
initial_size 12M
engine ndb;
CREATE TABLE City (
ID int(11) NOT NULL AUTO_INCREMENT,
Name char(35) NOT NULL,
CountryCode char(3) NOT NULL,
District char(20) NOT NULL,
Population int(11) NOT NULL,
PRIMARY KEY (ID)
) ENGINE=ndbcluster
tablespace ts2
storage disk;
alter tablespace ts2
drop datafile 'datafile2_1.dat'
engine ndb;
insert
into City (Name,CountryCode,District,Population)
values ('BeiJing','CN','Beijing',2000);
ERROR HY000: Got error 1602 'No datafile in tablespace' from NDBCLUSTER
drop tablespace ts2
engine ndb;
ERROR HY000: Failed to drop TABLESPACE
drop table City;
drop tablespace ts2
engine ndb;
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(4) NOT NULL, c CHAR(4) NOT NULL, KEY(b)) TABLESPACE ts1 STORAGE DISK ENGINE = NDB; CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(4) NOT NULL, c CHAR(4) NOT NULL, KEY(b)) TABLESPACE ts1 STORAGE DISK ENGINE = NDB;
INSERT INTO t1 VALUES (1,'1','1'), (2,'2','2'), (3,'3','3'); INSERT INTO t1 VALUES (1,'1','1'), (2,'2','2'), (3,'3','3');
BEGIN; BEGIN;
......
...@@ -7,6 +7,10 @@ ...@@ -7,6 +7,10 @@
# Change Date: 2006-01-11 # Change Date: 2006-01-11
# Change: Cleanup and test rename # Change: Cleanup and test rename
################################# #################################
# Change Author: Guangbao Ni
# Change Date: 2007-03-20
# Change: Test insert data when no datafile in spacetable
#################################
-- source include/have_ndb.inc -- source include/have_ndb.inc
...@@ -216,6 +220,42 @@ ENGINE = NDB; ...@@ -216,6 +220,42 @@ ENGINE = NDB;
DROP TABLE t1; DROP TABLE t1;
create tablespace ts2
add datafile 'datafile2_1.dat'
use logfile group lg1
initial_size 12M
engine ndb;
CREATE TABLE City (
ID int(11) NOT NULL AUTO_INCREMENT,
Name char(35) NOT NULL,
CountryCode char(3) NOT NULL,
District char(20) NOT NULL,
Population int(11) NOT NULL,
PRIMARY KEY (ID)
) ENGINE=ndbcluster
tablespace ts2
storage disk;
alter tablespace ts2
drop datafile 'datafile2_1.dat'
engine ndb;
#It will give error messages: NoDatafile in tablespace
--error ER_GET_ERRMSG
insert
into City (Name,CountryCode,District,Population)
values ('BeiJing','CN','Beijing',2000);
--error ER_DROP_FILEGROUP_FAILED
drop tablespace ts2
engine ndb;
drop table City;
drop tablespace ts2
engine ndb;
############################ ############################
# Test update of mm/dd part # Test update of mm/dd part
############################ ############################
......
...@@ -31,7 +31,8 @@ struct AllocExtentReq { ...@@ -31,7 +31,8 @@ struct AllocExtentReq {
enum ErrorCode { enum ErrorCode {
UnmappedExtentPageIsNotImplemented = 1, UnmappedExtentPageIsNotImplemented = 1,
NoExtentAvailable = 1601 NoExtentAvailable = 1601,
NoDatafile = 1602
}; };
union union
......
...@@ -1483,6 +1483,12 @@ Tsman::execALLOC_EXTENT_REQ(Signal* signal) ...@@ -1483,6 +1483,12 @@ Tsman::execALLOC_EXTENT_REQ(Signal* signal)
{ {
jam(); jam();
err = AllocExtentReq::NoExtentAvailable; err = AllocExtentReq::NoExtentAvailable;
Local_datafile_list full_tmp(m_file_pool, ts_ptr.p->m_full_files);
if (tmp.isEmpty() && full_tmp.isEmpty())
{
jam();
err = AllocExtentReq::NoDatafile;
}
} }
/** /**
......
...@@ -201,6 +201,7 @@ ErrorBundle ErrorCodes[] = { ...@@ -201,6 +201,7 @@ ErrorBundle ErrorCodes[] = {
{ 904, HA_ERR_INDEX_FILE_FULL, IS, "Out of fragment records (increase MaxNoOfOrderedIndexes)" }, { 904, HA_ERR_INDEX_FILE_FULL, IS, "Out of fragment records (increase MaxNoOfOrderedIndexes)" },
{ 905, DMEC, IS, "Out of attribute records (increase MaxNoOfAttributes)" }, { 905, DMEC, IS, "Out of attribute records (increase MaxNoOfAttributes)" },
{ 1601, HA_ERR_RECORD_FILE_FULL, IS, "Out extents, tablespace full" }, { 1601, HA_ERR_RECORD_FILE_FULL, IS, "Out extents, tablespace full" },
{ 1602, DMEC, IS,"No datafile in tablespace" },
/** /**
* TimeoutExpired * TimeoutExpired
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment