/// <exception cref="System.Exception"></exception> private BTree CycleIntKeys(BTree btree) { AddKeys(btree); ExpectKeys(btree, _sortedKeys); btree.Commit(Trans()); ExpectKeys(btree, _sortedKeys); RemoveKeys(btree); ExpectKeys(btree, _keysOnRemoval); btree.Rollback(Trans()); ExpectKeys(btree, _sortedKeys); var id = btree.GetID(); Reopen(); btree = BTreeAssert.CreateIntKeyBTree(Container(), id, BtreeNodeSize); ExpectKeys(btree, _sortedKeys); RemoveKeys(btree); ExpectKeys(btree, _keysOnRemoval); btree.Commit(Trans()); ExpectKeys(btree, _keysOnRemoval); // remove all but 1 for (var i = 1; i < _keysOnRemoval.Length; i++) { btree.Remove(Trans(), _keysOnRemoval[i]); } ExpectKeys(btree, _one); btree.Commit(Trans()); ExpectKeys(btree, _one); btree.Remove(Trans(), 1); btree.Rollback(Trans()); ExpectKeys(btree, _one); btree.Remove(Trans(), 1); btree.Commit(Trans()); ExpectKeys(btree, _none); return btree; }
private void AssertCurrentBTreeId(int id) { if (id != _bTree.GetID()) { throw new InvalidOperationException(); } }
private void Initialize() { int idToTimestampIndexId = _container.SystemData().IdToTimestampIndexId(); int timestampToIdIndexId = _container.SystemData().TimestampToIdIndexId(); _idToTimestamp = new BTree(_container.SystemTransaction(), idToTimestampIndexId, new CommitTimestampSupport.TimestampEntryById()); _timestampToId = new BTree(_container.SystemTransaction(), timestampToIdIndexId, new CommitTimestampSupport.IdEntryByTimestamp()); if (idToTimestampIndexId != _idToTimestamp.GetID()) { StoreBtreesIds(); } EventRegistryFactory.ForObjectContainer(_container).Committing += new System.EventHandler<Db4objects.Db4o.Events.CommitEventArgs> (new _IEventListener4_69(this).OnEvent); }
/// <exception cref="System.Exception"></exception> private BTree CycleIntKeys(BTree btree, int[] values) { for (int i = 0; i < values.Length; i++) { btree.Add(Trans(), values[i]); } ExpectKeysSearch(Trans(), btree, values); btree.Commit(Trans()); int id = btree.GetID(); Container().Commit(Trans()); Reopen(); btree = BTreeAssert.CreateIntKeyBTree(Container(), id, BtreeNodeSize); ExpectKeysSearch(Trans(), btree, values); for (int i = 0; i < values.Length; i++) { btree.Remove(Trans(), values[i]); } BTreeAssert.AssertEmpty(Trans(), btree); btree.Commit(Trans()); BTreeAssert.AssertEmpty(Trans(), btree); return btree; }
private void RegisterBTreeInTransaction(BTree tree) { AssertValidBTreeId(tree.GetID()); BTreesIn(_transaction)[tree.GetID()] = tree; }
/// <exception cref="System.Exception"></exception> public static void AssertAllSlotsFreed(LocalTransaction trans, BTree bTree, ICodeBlock block) { LocalObjectContainer container = (LocalObjectContainer)trans.Container(); ITransactionalIdSystem idSystem = trans.IdSystem(); IEnumerator allSlotIDs = bTree.AllNodeIds(trans.SystemTransaction()); Collection4 allSlots = new Collection4(); while (allSlotIDs.MoveNext()) { int slotID = ((int)allSlotIDs.Current); Slot slot = idSystem.CurrentSlot(slotID); allSlots.Add(slot); } Slot bTreeSlot = idSystem.CurrentSlot(bTree.GetID()); allSlots.Add(bTreeSlot); Collection4 freedSlots = new Collection4(); IFreespaceManager freespaceManager = container.FreespaceManager(); container.InstallDebugFreespaceManager(new FreespaceManagerForDebug(new _ISlotListener_99 (freedSlots))); block.Run(); container.InstallDebugFreespaceManager(freespaceManager); Assert.IsTrue(freedSlots.ContainsAll(allSlots.GetEnumerator())); }
private void InitializeNew() { _bTree = new BTree(Transaction(), BTreeConfiguration(), new BTreeIdSystem.IdSlotMappingHandler ()); int idGeneratorValue = _container.Handlers.LowestValidId() - 1; _persistentState = new PersistentIntegerArray(SlotChangeFactory.IdSystem, _transactionalIdSystem , new int[] { _bTree.GetID(), idGeneratorValue, 0 }); _persistentState.Write(Transaction()); _parentIdSystem.ChildId(_persistentState.GetID()); }
public virtual void RegisterBTreeIDs(BTree btree, IDMappingCollector collector) { collector.CreateIDMapping(this, btree.GetID(), false); TraverseAllIndexSlots(btree, new _IVisitor4_244(this, collector)); }
private void Initialize() { var idToTimestampIndexId = _container.SystemData().IdToTimestampIndexId(); var timestampToIdIndexId = _container.SystemData().TimestampToIdIndexId(); if (_container.Config().IsReadOnly()) { if (idToTimestampIndexId == 0) { return; } } _idToTimestamp = new BTree(_container.SystemTransaction(), idToTimestampIndexId, new TimestampEntryById()); _timestampToId = new BTree(_container.SystemTransaction(), timestampToIdIndexId, new IdEntryByTimestamp()); if (idToTimestampIndexId != _idToTimestamp.GetID()) { StoreBtreesIds(); } EventRegistryFactory.ForObjectContainer(_container).Committing += new _IEventListener4_65(this).OnEvent; }
private static long BTreeUsage(Transaction transaction, IIdSystem idSystem, BTree btree, ISlotMap slotMap) { IEnumerator nodeIter = btree.AllNodeIds(transaction); Db4objects.Db4o.Internal.Slots.Slot btreeSlot = idSystem.CommittedSlot(btree.GetID ()); slotMap.Add(btreeSlot); long usage = btreeSlot.Length(); while (nodeIter.MoveNext()) { int curNodeId = ((int)nodeIter.Current); Db4objects.Db4o.Internal.Slots.Slot slot = idSystem.CommittedSlot(curNodeId); slotMap.Add(slot); usage += slot.Length(); } return usage; }
private static long BTreeUsage(Transaction transaction, IIdSystem idSystem, BTree btree, ISlotMap slotMap) { var nodeIter = btree.AllNodeIds(transaction); var btreeSlot = idSystem.CommittedSlot(btree.GetID ()); slotMap.Add(btreeSlot); long usage = btreeSlot.Length(); while (nodeIter.MoveNext()) { var curNodeId = ((int) nodeIter.Current); var slot = idSystem.CommittedSlot(curNodeId); slotMap.Add(slot); usage += slot.Length(); } return usage; }