Below is the list of changes that have just been committed into a local
5.1 repository of root. When root does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-03-20 10:36:20+08:00, gni@stripped +5 -0
BUG#21699 DROP last DATAFILE from TABLESPACE even though there are still table in it.
And it gives the cofusing error message.
mysql-test/r/ndb_dd_basic.result@stripped, 2007-03-20 10:36:17+08:00,
gni@stripped +28 -0
adding some test result for increasing test codes.
mysql-test/t/ndb_dd_basic.test@stripped, 2007-03-20 10:36:17+08:00, gni@stripped
+40 -0
adding some test codes for nodatafile in tablespace.
storage/ndb/include/kernel/signaldata/Extent.hpp@stripped, 2007-03-20 10:36:17+08:00,
gni@stripped +2 -1
Add NoDatafile error code when allocating extent.
storage/ndb/src/kernel/blocks/tsman.cpp@stripped, 2007-03-20 10:36:17+08:00,
gni@stripped +6 -0
when there is no datafile in spacefile , it should return NoDatafile error code,
rather than NoExtentAvailable.
storage/ndb/src/ndbapi/ndberror.c@stripped, 2007-03-20 10:36:17+08:00,
gni@stripped +2 -1
add no datafile error code and corresponding error message for NoDatafile
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: gni
# Host: dev3-221.dev.cn.tlan
# Root: /home/ngb/mysql/mysql-5.1/mysql-5.1-bug21699
--- 1.14/mysql-test/r/ndb_dd_basic.result 2007-03-20 10:36:28 +08:00
+++ 1.15/mysql-test/r/ndb_dd_basic.result 2007-03-20 10:36:28 +08:00
@@ -186,6 +186,34 @@
ENGINE = NDB;
ERROR HY000: The size number was correct but we don't allow the digit part to be more
than 2 billion
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;
INSERT INTO t1 VALUES (1,'1','1'), (2,'2','2'), (3,'3','3');
BEGIN;
--- 1.8/mysql-test/t/ndb_dd_basic.test 2007-03-20 10:36:28 +08:00
+++ 1.9/mysql-test/t/ndb_dd_basic.test 2007-03-20 10:36:28 +08:00
@@ -7,6 +7,10 @@
# Change Date: 2006-01-11
# 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
@@ -215,6 +219,42 @@
ENGINE = NDB;
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
--- 1.4/storage/ndb/include/kernel/signaldata/Extent.hpp 2007-03-20 10:36:28 +08:00
+++ 1.5/storage/ndb/include/kernel/signaldata/Extent.hpp 2007-03-20 10:36:28 +08:00
@@ -31,7 +31,8 @@
enum ErrorCode {
UnmappedExtentPageIsNotImplemented = 1,
- NoExtentAvailable = 1601
+ NoExtentAvailable = 1601,
+ NoDatafile = 1602
};
union
--- 1.15/storage/ndb/src/kernel/blocks/tsman.cpp 2007-03-20 10:36:28 +08:00
+++ 1.16/storage/ndb/src/kernel/blocks/tsman.cpp 2007-03-20 10:36:28 +08:00
@@ -1483,6 +1483,12 @@
{
jam();
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;
+ }
}
/**
--- 1.86/storage/ndb/src/ndbapi/ndberror.c 2007-03-20 10:36:28 +08:00
+++ 1.87/storage/ndb/src/ndbapi/ndberror.c 2007-03-20 10:36:28 +08:00
@@ -201,7 +201,8 @@
{ 904, HA_ERR_INDEX_FILE_FULL, IS, "Out of fragment records (increase
MaxNoOfOrderedIndexes)" },
{ 905, DMEC, IS, "Out of attribute records (increase MaxNoOfAttributes)" },
{ 1601, HA_ERR_RECORD_FILE_FULL, IS, "Out extents, tablespace full" },
-
+ { 1602, DMEC, IS,"No datafile in tablespace" },
+
/**
* TimeoutExpired
*/
| Thread |
|---|
| • bk commit into 5.1 tree (gni:1.2486) BUG#21699 | gni | 20 Mar |