public void Clear() { BTreeCursor cursor = db.Cursor(); while (cursor.MoveNext()) { db.Delete(cursor.Current.Key); } cursor.Close(); }
public void TestBadSecondaryException() { testName = "TestBadSecondaryException"; SetUpTest(true); string dbFileName = testHome + "/" + testName + ".db"; string secDBFileName = testHome + "/" + testName + "_sec.db"; // Open primary database. BTreeDatabaseConfig btreeDBConfig = new BTreeDatabaseConfig(); btreeDBConfig.Creation = CreatePolicy.IF_NEEDED; BTreeDatabase btreeDB = BTreeDatabase.Open(dbFileName, btreeDBConfig); // Open secondary database. SecondaryBTreeDatabaseConfig secBtDbConfig = new SecondaryBTreeDatabaseConfig(btreeDB, new SecondaryKeyGenDelegate(SecondaryKeyGen)); secBtDbConfig.Creation = CreatePolicy.IF_NEEDED; SecondaryBTreeDatabase secBtDb = SecondaryBTreeDatabase.Open(secDBFileName, secBtDbConfig); // Put some data into primary database. for (int i = 0; i < 10; i++) { btreeDB.Put(new DatabaseEntry( BitConverter.GetBytes(i)), new DatabaseEntry(BitConverter.GetBytes(i))); } // Close the secondary database. secBtDb.Close(); // Delete record(5, 5) in primary database. btreeDB.Delete(new DatabaseEntry( BitConverter.GetBytes((int)5))); // Reopen the secondary database. SecondaryDatabase secDB = SecondaryDatabase.Open( secDBFileName, new SecondaryDatabaseConfig(btreeDB, new SecondaryKeyGenDelegate(SecondaryKeyGen))); /* * Getting record(5, 5) by secondary database should * throw BadSecondaryException since it has been * deleted in the primary database. */ try { secDB.Exists(new DatabaseEntry( BitConverter.GetBytes((int)5))); } catch (BadSecondaryException) { throw new ExpectedTestException(); } finally { secDB.Close(); btreeDB.Close(); } }