Example #1
0
        virtual public void TestConfig()
        {
            testName = "TestConfig";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName = testHome + "/" + testName;

            Configuration.ClearDir(testHome);

            XmlElement xmlElem = Configuration.TestSetUp(
                testFixtureName, testName);


            // Open a primary btree database.
            BTreeDatabaseConfig btreeDBConfig =
                new BTreeDatabaseConfig();

            btreeDBConfig.Creation = CreatePolicy.IF_NEEDED;
            BTreeDatabase btreeDB = BTreeDatabase.Open(
                dbFileName, btreeDBConfig);

            SecondaryDatabaseConfig secDBConfig =
                new SecondaryDatabaseConfig(btreeDB, null);

            Config(xmlElem, ref secDBConfig, true);
            Confirm(xmlElem, secDBConfig, true);
            btreeDB.Close();
        }
Example #2
0
        public void TestOpenNewQueueDB()
        {
            testName = "TestOpenNewQueueDB";
            testHome = testFixtureHome + "/" + testName;
            string queueDBFileName = testHome + "/" + testName + ".db";

            Configuration.ClearDir(testHome);

            // Configure all fields/properties in queue database.
            XmlElement xmlElem = Configuration.TestSetUp(
                testFixtureName, testName);
            QueueDatabaseConfig queueConfig = new QueueDatabaseConfig();

            QueueDatabaseConfigTest.Config(xmlElem, ref queueConfig, true);
            queueConfig.Feedback = new DatabaseFeedbackDelegate(DbFeedback);

            // Open the queue database with above configuration.
            QueueDatabase queueDB = QueueDatabase.Open(
                queueDBFileName, queueConfig);

            // Check the fields/properties in opened queue database.
            Confirm(xmlElem, queueDB, true);

            queueDB.Close();
        }
Example #3
0
        public void TestStats()
        {
            testName = "TestStats";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName = testHome + "/" +
                                testName + ".db";

            Configuration.ClearDir(testHome);

            QueueDatabaseConfig dbConfig =
                new QueueDatabaseConfig();

            ConfigCase1(dbConfig);
            QueueDatabase db = QueueDatabase.Open(dbFileName, dbConfig);

            QueueStats stats = db.Stats();

            ConfirmStatsPart1Case1(stats);
            db.PrintFastStats(true);

            // Put 500 records into the database.
            PutRecordCase1(db, null);

            stats = db.Stats();
            ConfirmStatsPart2Case1(stats);
            db.PrintFastStats();

            db.Close();
        }
Example #4
0
        public void RunBeforeTests()
        {
            testFixtureName = "LockingConfigTest";
            testFixtureHome = "./TestOut/" + testFixtureName;

            Configuration.ClearDir(testFixtureHome);
        }
Example #5
0
        public void RunBeforeTests()
        {
            testFixtureName = "QueueDatabaseTest";
            testFixtureHome = "./TestOut/" + testFixtureName;

            Configuration.ClearDir(testFixtureHome);
        }
Example #6
0
        public void TestPutNoDuplicate()
        {
            testName = "TestPutNoDuplicate";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName = testHome + "/" + testName + ".db";

            Configuration.ClearDir(testHome);

            HashDatabaseConfig hashConfig =
                new HashDatabaseConfig();

            hashConfig.Creation   = CreatePolicy.ALWAYS;
            hashConfig.Duplicates = DuplicatesPolicy.SORTED;
            hashConfig.TableSize  = 20;
            HashDatabase hashDB = HashDatabase.Open(dbFileName, hashConfig);

            DatabaseEntry key, data;

            for (int i = 1; i <= 10; i++)
            {
                key  = new DatabaseEntry(BitConverter.GetBytes(i));
                data = new DatabaseEntry(BitConverter.GetBytes(i));
                hashDB.PutNoDuplicate(key, data);
            }

            Assert.IsTrue(hashDB.Exists(
                              new DatabaseEntry(BitConverter.GetBytes((int)5))));

            hashDB.Close();
        }
Example #7
0
        public void TestLocalSite()
        {
            testName = "TestLocalSite";
            SetUpTest(true);
            Configuration.ClearDir(testHome);
            DatabaseEnvironmentConfig envConfig =
                new DatabaseEnvironmentConfig();

            envConfig.Create         = true;
            envConfig.UseLocking     = true;
            envConfig.UseLogging     = true;
            envConfig.UseMPool       = true;
            envConfig.UseReplication = true;
            envConfig.UseTxns        = true;
            ReplicationHostAddress addr =
                new ReplicationHostAddress("localhost:6060");
            ReplicationConfig repCfg       = new ReplicationConfig();
            DbSiteConfig      dbSiteConfig = new DbSiteConfig();

            dbSiteConfig.Host      = addr.Host;
            dbSiteConfig.Port      = addr.Port;
            dbSiteConfig.LocalSite = true;
            repCfg.RepmgrSitesConfig.Add(dbSiteConfig);
            envConfig.RepSystemCfg = repCfg;
            DatabaseEnvironment env =
                DatabaseEnvironment.Open(testHome, envConfig);
            ReplicationHostAddress testAddr =
                env.RepMgrLocalSite.Address;

            Assert.AreEqual(addr.Host, testAddr.Host);
            Assert.AreEqual(addr.Port, testAddr.Port);
            env.Close();
        }
Example #8
0
        public void RunBeforeTests()
        {
            testFixtureName = "JoinCursorTest";
            testFixtureHome = "./TestOut/" + testFixtureName;

            Configuration.ClearDir(testFixtureHome);
        }
        public void RunBeforeTests()
        {
            testFixtureName = "DatabaseEnvironmentConfigTest";
            testFixtureHome = "./TestOut/" + testFixtureName;

            Configuration.ClearDir(testFixtureHome);
        }
Example #10
0
        public void TestMoveNextUnique()
        {
            testName = "TestMoveNextUnique";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName    = testHome + "/" + testName + ".db";
            string dbSecFileName = testHome + "/" + testName +
                                   "_sec.db";

            Configuration.ClearDir(testHome);

            BTreeDatabase          db;
            SecondaryBTreeDatabase secDB;

            OpenSecDB(dbFileName, dbSecFileName, out db,
                      out secDB);
            WriteRecords(db);

            /*
             * Move cursor to duplicate record. Since the duplicate
             * record has the largest key, moving to the next
             * unique record should fail.
             */
            SecondaryCursor cursor = secDB.SecondaryCursor();

            cursor.Move(new DatabaseEntry(
                            BitConverter.GetBytes((int)10)), true);
            Assert.IsFalse(cursor.MoveNextUnique());

            cursor.Close();
            secDB.Close();
            db.Close();
        }
Example #11
0
        public void TestMovePrev()
        {
            testName = "TestMovePrev";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName    = testHome + "/" + testName + ".db";
            string dbSecFileName = testHome + "/" + testName +
                                   "_sec.db";

            Configuration.ClearDir(testHome);

            BTreeDatabase          db;
            SecondaryBTreeDatabase secDB;

            OpenSecDB(dbFileName, dbSecFileName, out db,
                      out secDB);
            WriteRecords(db);

            SecondaryCursor cursor = secDB.SecondaryCursor();

            cursor.MoveLast();
            for (int i = 0; i < 5; i++)
            {
                Assert.IsTrue(cursor.MovePrev());
            }

            cursor.Close();
            secDB.Close();
            db.Close();
        }
Example #12
0
        public void TestMoveNextDuplicate()
        {
            testName = "TestMoveNextDuplicate";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName    = testHome + "/" + testName + ".db";
            string dbSecFileName = testHome + "/" + testName +
                                   "_sec.db";

            Configuration.ClearDir(testHome);

            BTreeDatabase          db;
            SecondaryBTreeDatabase secDB;

            OpenSecDB(dbFileName, dbSecFileName, out db,
                      out secDB);
            WriteRecords(db);

            // Create a cursor and move the cursor to duplicate record.
            SecondaryCursor cursor = secDB.SecondaryCursor();

            cursor.Move(new DatabaseEntry(
                            BitConverter.GetBytes((int)10)), true);
            Assert.IsTrue(cursor.MoveNextDuplicate());
            Assert.AreEqual(BitConverter.GetBytes((int)10),
                            cursor.Current.Key.Data);

            cursor.Close();
            secDB.Close();
            db.Close();
        }
Example #13
0
        public void TestMoveLast()
        {
            testName = "TestMoveLast";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName    = testHome + "/" + testName + ".db";
            string dbSecFileName = testHome + "/" + testName +
                                   "_sec.db";

            Configuration.ClearDir(testHome);

            BTreeDatabase          db;
            SecondaryBTreeDatabase secDB;

            OpenSecDB(dbFileName, dbSecFileName, out db,
                      out secDB);
            WriteRecords(db);

            SecondaryCursor cursor = secDB.SecondaryCursor();

            Assert.IsTrue(cursor.MoveLast());
            Assert.AreEqual(BitConverter.GetBytes((int)10),
                            cursor.Current.Key.Data);

            cursor.Close();
            secDB.Close();
            db.Close();
        }
Example #14
0
        public void TestMoveFirst()
        {
            testName = "TestMoveFirst";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName    = testHome + "/" + testName + ".db";
            string dbSecFileName = testHome + "/" + testName +
                                   "_sec.db";

            Configuration.ClearDir(testHome);

            // Open primary and secondary database.
            BTreeDatabase          db;
            SecondaryBTreeDatabase secDB;

            OpenSecDB(dbFileName, dbSecFileName, out db,
                      out secDB);


            // Write ten records into the database.
            WriteRecords(db);

            // Move the cursor to the first record(0,0).
            SecondaryCursor cursor = secDB.SecondaryCursor();

            Assert.IsTrue(cursor.MoveFirst());
            Assert.AreEqual(BitConverter.GetBytes((int)0),
                            cursor.Current.Key.Data);

            // Close all.
            cursor.Close();
            secDB.Close();
            db.Close();
        }
Example #15
0
        public void TestPutNoDuplicateWithUnsortedDuplicate()
        {
            testName = "TestPutNoDuplicateWithUnsortedDuplicate";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName = testHome + "/" + testName + ".db";

            Configuration.ClearDir(testHome);

            HashDatabaseConfig hashConfig = new HashDatabaseConfig();

            hashConfig.Creation    = CreatePolicy.ALWAYS;
            hashConfig.Duplicates  = DuplicatesPolicy.UNSORTED;
            hashConfig.ErrorPrefix = testName;

            HashDatabase  hashDB = HashDatabase.Open(dbFileName, hashConfig);
            DatabaseEntry key, data;

            key  = new DatabaseEntry(ASCIIEncoding.ASCII.GetBytes("1"));
            data = new DatabaseEntry(ASCIIEncoding.ASCII.GetBytes("1"));

            try
            {
                hashDB.PutNoDuplicate(key, data);
            }
            catch (DatabaseException)
            {
                throw new ExpectedTestException();
            }
            finally
            {
                hashDB.Close();
            }
        }
        public void TestStats()
        {
            testName = "TestStats";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName = testHome + "/" +
                                testName + ".db";

            Configuration.ClearDir(testHome);

            RecnoDatabaseConfig dbConfig =
                new RecnoDatabaseConfig();

            ConfigCase1(dbConfig);
            RecnoDatabase db = RecnoDatabase.Open(dbFileName,
                                                  dbConfig);
            RecnoStats stats = db.Stats();

            ConfirmStatsPart1Case1(stats);

            // Put 1000 records into the database.
            PutRecordCase1(db, null);
            stats = db.Stats();
            ConfirmStatsPart2Case1(stats);

            // Delete 500 records.
            for (int i = 250; i <= 750; i++)
            {
                db.Delete(new DatabaseEntry(BitConverter.GetBytes(i)));
            }
            stats = db.Stats();
            ConfirmStatsPart3Case1(stats);

            db.Close();
        }
Example #17
0
        public void TestKeyExistException()
        {
            testName = "TestKeyExistException";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName = testHome + "/" + testName + ".db";

            Configuration.ClearDir(testHome);

            HashDatabaseConfig hashConfig = new HashDatabaseConfig();

            hashConfig.Creation   = CreatePolicy.ALWAYS;
            hashConfig.Duplicates = DuplicatesPolicy.SORTED;
            HashDatabase hashDB = HashDatabase.Open(dbFileName, hashConfig);

            // Put the same record into db twice.
            DatabaseEntry key, data;

            key  = new DatabaseEntry(ASCIIEncoding.ASCII.GetBytes("1"));
            data = new DatabaseEntry(ASCIIEncoding.ASCII.GetBytes("1"));
            try
            {
                hashDB.PutNoDuplicate(key, data);
                hashDB.PutNoDuplicate(key, data);
            }
            catch (KeyExistException)
            {
                throw new ExpectedTestException();
            }
            finally
            {
                hashDB.Close();
            }
        }
        public void TestOpenExistingRecnoDB()
        {
            testName = "TestOpenExistingRecnoDB";
            testHome = testFixtureHome + "/" + testName;
            string recnoDBFileName = testHome + "/" +
                                     testName + ".db";

            Configuration.ClearDir(testHome);

            RecnoDatabaseConfig recConfig =
                new RecnoDatabaseConfig();

            recConfig.Creation = CreatePolicy.ALWAYS;
            RecnoDatabase recDB = RecnoDatabase.Open(
                recnoDBFileName, recConfig);

            recDB.Close();

            RecnoDatabaseConfig dbConfig = new RecnoDatabaseConfig();
            string backingFile           = testHome + "/backingFile";

            File.Copy(recnoDBFileName, backingFile);
            dbConfig.BackingFile = backingFile;
            RecnoDatabase db = RecnoDatabase.Open(recnoDBFileName, dbConfig);

            Assert.AreEqual(db.Type, DatabaseType.RECNO);
            db.Close();
        }
Example #19
0
        public void TestStats()
        {
            testName = "TestStats";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName = testHome + "/" + testName + ".db";

            Configuration.ClearDir(testHome);

            HashDatabaseConfig dbConfig = new HashDatabaseConfig();

            ConfigCase1(dbConfig);
            HashDatabase db = HashDatabase.Open(dbFileName, dbConfig);

            HashStats stats     = db.Stats();
            HashStats fastStats = db.FastStats();

            ConfirmStatsPart1Case1(stats);
            ConfirmStatsPart1Case1(fastStats);

            // Put 100 records into the database.
            PutRecordCase1(db, null);

            stats = db.Stats();
            ConfirmStatsPart2Case1(stats);

            // Delete some data to get some free pages.
            byte[] bigArray = new byte[262144];
            db.Delete(new DatabaseEntry(bigArray));
            stats = db.Stats();
            ConfirmStatsPart3Case1(stats);

            db.Close();
        }
        public void TestTruncateUnusedPages()
        {
            testName = "TestTruncateUnusedPages";
            testHome = testFixtureHome + "/" + testName;

            Configuration.ClearDir(testHome);

            DatabaseEnvironmentConfig envConfig =
                new DatabaseEnvironmentConfig();

            envConfig.Create   = true;
            envConfig.UseCDB   = true;
            envConfig.UseMPool = true;
            DatabaseEnvironment env = DatabaseEnvironment.Open(
                testHome, envConfig);

            RecnoDatabaseConfig dbConfig =
                new RecnoDatabaseConfig();

            dbConfig.Creation = CreatePolicy.IF_NEEDED;
            dbConfig.Env      = env;
            dbConfig.PageSize = 512;
            RecnoDatabase db = RecnoDatabase.Open(
                testName + ".db", dbConfig);

            ModifyRecordsInDB(db, null);
            Assert.Less(0, db.TruncateUnusedPages());

            db.Close();
            env.Close();
        }
        public void TestConfig()
        {
            testName = "TestConfig";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName = testHome + "/" + testName + ".db";

            Configuration.ClearDir(testHome);
            XmlElement xmlElem = Configuration.TestSetUp(
                testFixtureName, testName);
            // Open a primary btree database.
            HashDatabaseConfig hashDBConfig =
                new HashDatabaseConfig();

            hashDBConfig.Creation = CreatePolicy.IF_NEEDED;
            HashDatabase hashDB = HashDatabase.Open(
                dbFileName, hashDBConfig);

            SecondaryHashDatabaseConfig secDBConfig =
                new SecondaryHashDatabaseConfig(hashDB, null);

            Config(xmlElem, ref secDBConfig, true);
            Confirm(xmlElem, secDBConfig, true);

            // Close the primary btree database.
            hashDB.Close();
        }
        public void TestAppendWithoutTxn()
        {
            testName = "TestAppendWithoutTxn";
            testHome = testFixtureHome + "/" + testName;
            string recnoDBFileName = testHome + "/" +
                                     testName + ".db";

            Configuration.ClearDir(testHome);

            RecnoDatabaseConfig recnoConfig =
                new RecnoDatabaseConfig();

            recnoConfig.Creation = CreatePolicy.ALWAYS;
            RecnoDatabase recnoDB = RecnoDatabase.Open(
                recnoDBFileName, recnoConfig);

            DatabaseEntry data = new DatabaseEntry(
                ASCIIEncoding.ASCII.GetBytes("data"));
            uint          num = recnoDB.Append(data);
            DatabaseEntry key = new DatabaseEntry(
                BitConverter.GetBytes(num));

            Assert.IsTrue(recnoDB.Exists(key));
            KeyValuePair <DatabaseEntry, DatabaseEntry> record =
                recnoDB.Get(key);

            Assert.IsTrue(data.Data.Length ==
                          record.Value.Data.Length);
            for (int i = 0; i < data.Data.Length; i++)
            {
                Assert.IsTrue(data.Data[i] ==
                              record.Value.Data[i]);
            }
            recnoDB.Close();
        }
Example #23
0
        public void TestMaxLock()
        {
            testName = "TestMaxLock";
            testHome = testFixtureHome + "/" + testName;
            Configuration.ClearDir(testHome);

            DatabaseEnvironment env;
            uint          maxLocks;
            DatabaseEntry obj;

            maxLocks = 1;
            obj      = new DatabaseEntry();

            /*
             * Initialize environment using locking subsystem. The max number
             * of locks should be larger than environment's partitions. So in
             * order to make the MaxLock work, the environment paritition is
             * set to be the same value as MaxLock.
             */
            LockTest.LockingEnvSetUp(testHome, testName, out env,
                                     maxLocks, 0, 0, maxLocks);
            Assert.AreEqual(maxLocks, env.MaxLocks);

            env.Close();
        }
Example #24
0
        public void TestGet()
        {
            testName = "TestGet";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName = testHome + "/" + testName + ".db";

            Configuration.ClearDir(testHome);

            // Open a database and an increase sequence.
            BTreeDatabase db;
            Sequence      seq;

            OpenNewSequence(dbFileName, out db, out seq);

            /*
             * Check the delta of two sequence number get
             * from sequence.
             */
            int  delta   = 100;
            long seqNum1 = seq.Get(delta);
            long seqNum2 = seq.Get(delta);

            Assert.AreEqual(delta, seqNum2 - seqNum1);

            // Close all.
            seq.Close();
            db.Close();
        }
Example #25
0
        public void TestAppendWithoutTxn()
        {
            testName = "TestAppendWithoutTxn";
            testHome = testFixtureHome + "/" + testName;
            string queueDBFileName = testHome + "/" + testName + ".db";

            Configuration.ClearDir(testHome);

            QueueDatabaseConfig queueConfig = new QueueDatabaseConfig();

            queueConfig.Creation = CreatePolicy.ALWAYS;
            queueConfig.Length   = 1000;
            QueueDatabase queueDB = QueueDatabase.Open(
                queueDBFileName, queueConfig);

            byte[] byteArr = new byte[4];
            byteArr = BitConverter.GetBytes((int)1);
            DatabaseEntry data  = new DatabaseEntry(byteArr);
            uint          recno = queueDB.Append(data);

            // Confirm that the recno is larger than 0.
            Assert.AreNotEqual(0, recno);

            // Confirm that the record exists in the database.
            byteArr = BitConverter.GetBytes(recno);
            DatabaseEntry key = new DatabaseEntry();

            key.Data = byteArr;
            Assert.IsTrue(queueDB.Exists(key));
            queueDB.Close();
        }
Example #26
0
        public void TestGetWithinTxn()
        {
            testName = "TestGetWithinTxn";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName = testHome + "/" + testName + ".db";

            Configuration.ClearDir(testHome);

            // Open a database and an increase sequence.
            BTreeDatabase       db;
            DatabaseEnvironment env;
            Sequence            seq;

            OpenNewSequenceInEnv(testHome, testName, out env,
                                 out db, out seq);

            /*
             * Check the delta of two sequence number get
             * from sequence.
             */
            int         delta   = 100;
            Transaction txn     = env.BeginTransaction();
            long        seqNum1 = seq.Get(delta, txn);
            long        seqNum2 = seq.Get(delta, txn);

            Assert.AreEqual(delta, seqNum2 - seqNum1);
            txn.Commit();

            // Close all.
            seq.Close();
            db.Close();
            env.Close();
        }
Example #27
0
        public void TestPutToQueue()
        {
            KeyValuePair <DatabaseEntry, DatabaseEntry> pair;

            testName = "TestPutQueue";
            testHome = testFixtureHome + "/" + testName;
            string queueDBFileName = testHome + "/" +
                                     testName + ".db";

            Configuration.ClearDir(testHome);

            QueueDatabaseConfig queueConfig =
                new QueueDatabaseConfig();

            queueConfig.Length   = 512;
            queueConfig.Creation = CreatePolicy.ALWAYS;
            using (QueueDatabase queueDB = QueueDatabase.Open(
                       queueDBFileName, queueConfig))
            {
                DatabaseEntry key = new DatabaseEntry();
                key.Data = BitConverter.GetBytes((int)100);
                DatabaseEntry data = new DatabaseEntry(
                    BitConverter.GetBytes((int)1));
                queueDB.Put(key, data);
                pair = queueDB.GetBoth(key, data);
            }
        }
Example #28
0
        public void TestHashComparison()
        {
            testName = "TestHashComparison";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName = testHome + "/" + testName + ".db";

            Configuration.ClearDir(testHome);

            HashDatabaseConfig dbConfig = new HashDatabaseConfig();

            dbConfig.Creation       = CreatePolicy.IF_NEEDED;
            dbConfig.HashComparison = new EntryComparisonDelegate(EntryComparison);
            HashDatabase db = HashDatabase.Open(dbFileName, dbConfig);
            int          ret;

            /*
             * Comparison gets the value that lowest byte of the
             * former dbt minus that of the latter one.
             */
            ret = db.Compare(new DatabaseEntry(BitConverter.GetBytes(2)),
                             new DatabaseEntry(BitConverter.GetBytes(2)));
            Assert.AreEqual(0, ret);

            ret = db.Compare(new DatabaseEntry(BitConverter.GetBytes(256)),
                             new DatabaseEntry(BitConverter.GetBytes(1)));
            Assert.Greater(0, ret);

            db.Close();
        }
        public void RunBeforeTests()
        {
            testFixtureName = "SecondaryRecnoDatabaseConfigTest";
            testFixtureHome = "./TestOut/" + testFixtureName;

            Configuration.ClearDir(testFixtureHome);
        }
Example #30
0
        public void TestDuplicates()
        {
            testName = "TestDuplicates";
            testHome = testFixtureHome + "/" + testName;
            string dbFileName    = testHome + "/" + testName + ".db";
            string dbSecFileName = testHome + "/" + testName
                                   + "_sec.db";

            Configuration.ClearDir(testHome);

            // Open a primary btree database.
            BTreeDatabaseConfig btreeDBConfig =
                new BTreeDatabaseConfig();

            btreeDBConfig.Creation = CreatePolicy.IF_NEEDED;
            BTreeDatabase btreeDB = BTreeDatabase.Open(
                dbFileName, btreeDBConfig);

            // Open a secondary btree database.
            SecondaryBTreeDatabaseConfig secBtreeDBConfig =
                new SecondaryBTreeDatabaseConfig(btreeDB, null);

            secBtreeDBConfig.Creation   = CreatePolicy.IF_NEEDED;
            secBtreeDBConfig.Duplicates = DuplicatesPolicy.SORTED;
            SecondaryBTreeDatabase secDB =
                SecondaryBTreeDatabase.Open(dbSecFileName,
                                            secBtreeDBConfig);

            secDB.Close();
            btreeDB.Close();
        }