public void TestRefresh()
        {
            testName = "TestRefresh";
            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.Refresh());
            Assert.AreEqual(pData.Data, cursor.Current.Key.Data);
            Assert.AreEqual(pKey.Data, cursor.Current.Value.Key.Data);

            cursor.Close();
            secDB.Close();
            db.Close();
        }
Example #2
0
        public void TestRefreshWithLockingInfo()
        {
            testName = "TestRefreshWithLockingInfo";
            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 cursor to a record and refresh it.
            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.Refresh(lockingInfo));
            Assert.AreEqual(pData.Data, cursor.Current.Key.Data);
            Assert.AreEqual(pKey.Data, cursor.Current.Value.Key.Data);

            cursor.Close();
            cursorTxn.Commit();

            // Close all.
            secDB.Close();
            db.Close();
            env.Close();
        }