public void TestMovePrevDuplicate() { testName = "TestMovePrevDuplicate"; SetUpTest(true); string dbFileName = testHome + "/" + testName + ".db"; string dbSecFileName = testHome + "/" + testName + "_sec.db"; BTreeDatabase db; SecondaryBTreeDatabase secDB; OpenSecDB(dbFileName, dbSecFileName, out db, out secDB); WriteRecords(db); SecondaryCursor cursor = secDB.SecondaryCursor(); KeyValuePair <DatabaseEntry, KeyValuePair < DatabaseEntry, DatabaseEntry> > pair; DatabaseEntry pKey, pData; pKey = new DatabaseEntry(BitConverter.GetBytes((int)6)); pData = new DatabaseEntry(BitConverter.GetBytes((int)10)); pair = new KeyValuePair <DatabaseEntry, KeyValuePair < DatabaseEntry, DatabaseEntry> >(pData, new KeyValuePair <DatabaseEntry, DatabaseEntry>( pKey, pData)); cursor.Move(pair, true); Assert.IsTrue(cursor.MovePrevDuplicate()); Assert.AreEqual(BitConverter.GetBytes((int)10), cursor.Current.Key.Data); cursor.Close(); secDB.Close(); db.Close(); }
public void TestMovePrevDuplicateWithLockingInfo() { testName = "TestMovePrevDuplicateWithLockingInfo"; testHome = testFixtureHome + "/" + testName; string dbFileName = testName + ".db"; string dbSecFileName = testName + "_sec.db"; Configuration.ClearDir(testHome); /* * Open environment, primary database and * secondary database. */ BTreeDatabase db; DatabaseEnvironment env; SecondaryBTreeDatabase secDB; OpenSecDBInTxn(testHome, dbFileName, dbSecFileName, out env, out db, out secDB); // Write ten records into the database. WriteRecordsInTxn(db, env); Transaction cursorTxn = env.BeginTransaction(); SecondaryCursor cursor = secDB.SecondaryCursor(cursorTxn); LockingInfo lockingInfo = new LockingInfo(); lockingInfo.IsolationDegree = Isolation.DEGREE_TWO; lockingInfo.ReadModifyWrite = true; /* * Move the cursor to the record(10,6), that is the * record(6, 10) in the primary database. Move to * its previous duplicate record, that is (10,5). */ KeyValuePair <DatabaseEntry, KeyValuePair < DatabaseEntry, DatabaseEntry> > pair; DatabaseEntry pKey, pData; pKey = new DatabaseEntry(BitConverter.GetBytes((int)6)); pData = new DatabaseEntry(BitConverter.GetBytes((int)10)); pair = new KeyValuePair <DatabaseEntry, KeyValuePair < DatabaseEntry, DatabaseEntry> >(pData, new KeyValuePair <DatabaseEntry, DatabaseEntry>( pKey, pData)); cursor.Move(pair, true, lockingInfo); Assert.IsTrue(cursor.MovePrevDuplicate(lockingInfo)); Assert.AreEqual(BitConverter.GetBytes((int)10), cursor.Current.Key.Data); cursor.Close(); cursorTxn.Commit(); // Close all. secDB.Close(); db.Close(); env.Close(); }