diff --git a/mysql-test/r/ndb_dd_ddl.result b/mysql-test/r/ndb_dd_ddl.result index 4f3354b18594ee7239da908716375541516dce1e..f406230a354aff5e2c0e71fb748e0b0ca3402b96 100644 --- a/mysql-test/r/ndb_dd_ddl.result +++ b/mysql-test/r/ndb_dd_ddl.result @@ -7,6 +7,16 @@ ADD UNDOFILE 'undofile.dat' INITIAL_SIZE 16M UNDO_BUFFER_SIZE = 1M ENGINE=NDB; +CREATE LOGFILE GROUP lg2 +ADD UNDOFILE 'undofile2.dat' +INITIAL_SIZE 16M +UNDO_BUFFER_SIZE 1M +ENGINE NDB; +ERROR HY000: Failed to create LOGFILE GROUP +SHOW WARNINGS; +Level Code Message +Error 1296 Got error 1514 'Currently there is a limit of one logfile group' from NDB +Error 1506 Failed to create LOGFILE GROUP CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' INITIAL_SIZE 16M diff --git a/mysql-test/r/ndb_dd_dump.result b/mysql-test/r/ndb_dd_dump.result index d3c1cba8d5e683453dd55675af251326aa565996..6572f0228d0c28972fad6b487d0c4a98e10cc574 100644 --- a/mysql-test/r/ndb_dd_dump.result +++ b/mysql-test/r/ndb_dd_dump.result @@ -8,15 +8,6 @@ ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile_lg1_02.dat' INITIAL_SIZE = 4M ENGINE NDB; -CREATE LOGFILE GROUP lg2 -ADD UNDOFILE 'undofile_lg2_01.dat' -UNDO_BUFFER_SIZE = 1M -INITIAL_SIZE 2M -ENGINE NDB; -ALTER LOGFILE GROUP lg2 -ADD UNDOFILE 'undofile_lg2_02.dat' -INITIAL_SIZE = 4M -ENGINE NDB; CREATE TABLESPACE ts1 ADD DATAFILE 'datafile_ts1_01.dat' USE LOGFILE GROUP lg1 @@ -34,7 +25,7 @@ INITIAL_SIZE 2M ENGINE NDB; CREATE TABLESPACE ts3 ADD DATAFILE 'datafile_ts3_01.dat' -USE LOGFILE GROUP lg2 +USE LOGFILE GROUP lg1 INITIAL_SIZE 4M ENGINE NDB; CREATE TABLE t1 @@ -173,7 +164,6 @@ DROP TABLESPACE ts1 ENGINE = NDB; DROP TABLESPACE ts2 ENGINE = NDB; DROP TABLESPACE ts3 ENGINE = NDB; DROP LOGFILE GROUP lg1 ENGINE = NDB; -DROP LOGFILE GROUP lg2 ENGINE = NDB; SELECT DISTINCT LOGFILE_GROUP_NAME, FILE_NAME, @@ -184,8 +174,6 @@ FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE="UNDO LOG" ORDER BY FILE_NAME; LOGFILE_GROUP_NAME FILE_NAME TOTAL_EXTENTS INITIAL_SIZE ENGINE lg1 undofile_lg1_01.dat 1048576 2097152 ndbcluster lg1 undofile_lg1_02.dat 1048576 4194304 ndbcluster -lg2 undofile_lg2_01.dat 1048576 2097152 ndbcluster -lg2 undofile_lg2_02.dat 1048576 4194304 ndbcluster SELECT DISTINCT TABLESPACE_NAME, LOGFILE_GROUP_NAME, @@ -198,7 +186,7 @@ TABLESPACE_NAME LOGFILE_GROUP_NAME FILE_NAME EXTENT_SIZE INITIAL_SIZE ENGINE ts1 lg1 datafile_ts1_01.dat 1048576 2097152 ndbcluster ts1 lg1 datafile_ts1_02.dat 1048576 1048576 ndbcluster ts2 lg1 datafile_ts2_01.dat 1048576 2097152 ndbcluster -ts3 lg2 datafile_ts3_01.dat 1048576 4194304 ndbcluster +ts3 lg1 datafile_ts3_01.dat 1048576 4194304 ndbcluster SELECT COUNT(*) FROM t1; COUNT(*) 500 @@ -227,4 +215,3 @@ DROP TABLESPACE ts1 ENGINE = NDB; DROP TABLESPACE ts2 ENGINE = NDB; DROP TABLESPACE ts3 ENGINE = NDB; DROP LOGFILE GROUP lg1 ENGINE = NDB; -DROP LOGFILE GROUP lg2 ENGINE = NDB; diff --git a/mysql-test/t/ndb_dd_ddl.test b/mysql-test/t/ndb_dd_ddl.test index ff1532ec1de94a582ba961ba535add1920bbd938..339f7bc2f2286ae7131919e54d08fef68da52d2c 100644 --- a/mysql-test/t/ndb_dd_ddl.test +++ b/mysql-test/t/ndb_dd_ddl.test @@ -20,7 +20,10 @@ # the file name. I know this is not an issue for *nix systems but # will be when we expand to Windows and Mac. Better put it in now. ############################################ - +# +# Jonas 2006-03-10 +# Add verification that ndb currently is limited to 1 logfile group +# -- source include/have_ndb.inc @@ -41,6 +44,15 @@ INITIAL_SIZE 16M UNDO_BUFFER_SIZE = 1M ENGINE=NDB; +# Verify that one currently can create only 1 logfile group +--error ER_CREATE_FILEGROUP_FAILED +CREATE LOGFILE GROUP lg2 +ADD UNDOFILE 'undofile2.dat' +INITIAL_SIZE 16M +UNDO_BUFFER_SIZE 1M +ENGINE NDB; +SHOW WARNINGS; + --error ER_CREATE_FILEGROUP_FAILED CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' diff --git a/mysql-test/t/ndb_dd_dump.test b/mysql-test/t/ndb_dd_dump.test index 13d4fd86396a71bf05c41db94d8066845dc536b7..3f16f7fb28b0b49d401d691e222089927939c97f 100644 --- a/mysql-test/t/ndb_dd_dump.test +++ b/mysql-test/t/ndb_dd_dump.test @@ -15,17 +15,6 @@ ADD UNDOFILE 'undofile_lg1_02.dat' INITIAL_SIZE = 4M ENGINE NDB; -CREATE LOGFILE GROUP lg2 -ADD UNDOFILE 'undofile_lg2_01.dat' -UNDO_BUFFER_SIZE = 1M -INITIAL_SIZE 2M -ENGINE NDB; - -ALTER LOGFILE GROUP lg2 -ADD UNDOFILE 'undofile_lg2_02.dat' -INITIAL_SIZE = 4M -ENGINE NDB; - CREATE TABLESPACE ts1 ADD DATAFILE 'datafile_ts1_01.dat' USE LOGFILE GROUP lg1 @@ -46,7 +35,7 @@ ENGINE NDB; CREATE TABLESPACE ts3 ADD DATAFILE 'datafile_ts3_01.dat' -USE LOGFILE GROUP lg2 +USE LOGFILE GROUP lg1 INITIAL_SIZE 4M ENGINE NDB; @@ -204,7 +193,6 @@ DROP TABLESPACE ts2 ENGINE = NDB; DROP TABLESPACE ts3 ENGINE = NDB; DROP LOGFILE GROUP lg1 ENGINE = NDB; -DROP LOGFILE GROUP lg2 ENGINE = NDB; --exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ndb_dd_dump.sql @@ -254,6 +242,5 @@ DROP TABLESPACE ts2 ENGINE = NDB; DROP TABLESPACE ts3 ENGINE = NDB; DROP LOGFILE GROUP lg1 ENGINE = NDB; -DROP LOGFILE GROUP lg2 ENGINE = NDB; #End 5.1 test case diff --git a/storage/ndb/include/kernel/signaldata/CreateFilegroupImpl.hpp b/storage/ndb/include/kernel/signaldata/CreateFilegroupImpl.hpp index cca77fec924e31f1505d2c3140c4c3e9410da433..fe660e770f7ed1813fbad2cd11f50f855f1dd44e 100644 --- a/storage/ndb/include/kernel/signaldata/CreateFilegroupImpl.hpp +++ b/storage/ndb/include/kernel/signaldata/CreateFilegroupImpl.hpp @@ -70,7 +70,8 @@ struct CreateFilegroupImplRef { NoError = 0, FilegroupAlreadyExists = 1502, OutOfFilegroupRecords = 1503, - OutOfLogBufferMemory = 1504 + OutOfLogBufferMemory = 1504, + OneLogfileGroupLimit = 1514 }; Uint32 senderData; diff --git a/storage/ndb/src/kernel/blocks/lgman.cpp b/storage/ndb/src/kernel/blocks/lgman.cpp index b626605b0d9c0d1a0d940b752d2d4c46d2c89b2a..d4cc0cb89e802c0acc1bb542118f380f571a5e0c 100644 --- a/storage/ndb/src/kernel/blocks/lgman.cpp +++ b/storage/ndb/src/kernel/blocks/lgman.cpp @@ -326,6 +326,13 @@ Lgman::execCREATE_FILEGROUP_REQ(Signal* signal){ break; } + if (!m_logfile_group_list.isEmpty()) + { + jam(); + err = CreateFilegroupImplRef::OneLogfileGroupLimit; + break; + } + if (!m_logfile_group_pool.seize(ptr)) { jam(); @@ -1035,10 +1042,8 @@ int Logfile_client::sync_lsn(Signal* signal, Uint64 lsn, Request* req, Uint32 flags) { - Lgman::Logfile_group key; - key.m_logfile_group_id= m_logfile_group_id; Ptr<Lgman::Logfile_group> ptr; - if(m_lgman->m_logfile_group_hash.find(ptr, key)) + if(m_lgman->m_logfile_group_list.first(ptr)) { if(ptr.p->m_last_synced_lsn >= lsn) { diff --git a/storage/ndb/src/ndbapi/ndberror.c b/storage/ndb/src/ndbapi/ndberror.c index bb4616a9ee2895823a6822a9dc935e17adabbe6c..06a2f0de10513c54514a95294ae960f1773ee7c1 100644 --- a/storage/ndb/src/ndbapi/ndberror.c +++ b/storage/ndb/src/ndbapi/ndberror.c @@ -413,6 +413,7 @@ ErrorBundle ErrorCodes[] = { { 1511, DMEC, IE, "Out of memory" }, { 1512, DMEC, SE, "File read error" }, { 1513, DMEC, IE, "Filegroup not online" }, + { 1514, DMEC, SE, "Currently there is a limit of one logfile group" }, { 773, DMEC, SE, "Out of string memory, please modify StringMemory config parameter" },