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); }
public virtual void AssertSingleEntry(LocalObjectContainer container, long id) { var called = new BooleanByRef(); Index(container).TraverseKeys(container.SystemTransaction(), new _IVisitor4_24(id , called)); Assert.IsTrue(called.value); }
protected virtual void RebuildIndexForWriter(LocalObjectContainer stream, StatefulBuffer writer, int objectId) { ObjectHeader oh = new ObjectHeader(stream, writer); object obj = ReadIndexEntryForRebuild(writer, oh); AddIndexEntry(stream.SystemTransaction(), objectId, obj); }
private void Reindex(LocalObjectContainer container) { ClassMetadata clazz = ContainingClass(); if (RebuildIndexForClass(container, clazz)) { container.SystemTransaction().Commit(); } }
/// <exception cref="Db4objects.Db4o.Internal.FieldIndexException"></exception> protected virtual void RebuildIndexForObject(LocalObjectContainer container, int objectId) { StatefulBuffer writer = container.ReadStatefulBufferById(container.SystemTransaction (), objectId); if (writer != null) { RebuildIndexForWriter(container, writer, objectId); } }
/// <exception cref="Db4objects.Db4o.Internal.FieldIndexException"></exception> protected virtual void RebuildIndexForObject(LocalObjectContainer stream, ClassMetadata classMetadata, int objectId) { StatefulBuffer writer = stream.ReadStatefulBufferById(stream.SystemTransaction(), objectId); if (writer != null) { RebuildIndexForWriter(stream, writer, objectId); } }
/// <exception cref="Db4objects.Db4o.Internal.FieldIndexException"></exception> protected override void RebuildIndexForObject(LocalObjectContainer container, ClassMetadata classMetadata, int objectId) { Slot slot = container.SystemTransaction().IdSystem().CurrentSlot(objectId); UUIDFieldMetadata.DatabaseIdentityIDAndUUID data = ReadDatabaseIdentityIDAndUUID( container, classMetadata, slot, true); if (null == data) { return; } AddIndexEntry(container.LocalSystemTransaction(), objectId, data.uuid); }
protected virtual void RebuildIndexForWriter(LocalObjectContainer container, StatefulBuffer buffer, int objectId) { ObjectHeader objectHeader = new ObjectHeader(container, buffer); ObjectIdContextImpl context = new ObjectIdContextImpl(container.SystemTransaction (), buffer, objectHeader, objectId); ClassMetadata classMetadata = context.ClassMetadata(); if (classMetadata.IsStruct()) { // We don't keep version information for structs. return; } if (classMetadata.SeekToField(container.SystemTransaction(), buffer, versionFieldMetadata ) != HandlerVersion.Invalid) { long version = ((long)versionFieldMetadata.Read(context)); if (version != 0) { LocalTransaction t = (LocalTransaction)container.SystemTransaction(); t.CommitTimestampSupport().Put(container.SystemTransaction(), objectId, version); } } }
public static IDictionary TypesFor(LocalObjectContainer db, Sharpen.Util.ISet ids ) { IDictionary id2clazzes = new Hashtable(); ClassMetadataIterator iter = db.ClassCollection().Iterator(); while (iter.MoveNext()) { for (IEnumerator idIter = ids.GetEnumerator(); idIter.MoveNext(); ) { int id = ((int)idIter.Current); ClassMetadata clazz = iter.CurrentClass(); BTree btree = BTreeClassIndexStrategy.Btree(clazz); if (btree.Search(db.SystemTransaction(), id) != null) { Sharpen.Util.ISet clazzes = ((Sharpen.Util.ISet)id2clazzes[id]); if (clazzes == null) { clazzes = new HashSet(); id2clazzes[id] = clazzes; } clazzes.Add(clazz); } } } IDictionary id2clazz = new Hashtable(); for (IEnumerator idIter = id2clazzes.Keys.GetEnumerator(); idIter.MoveNext(); ) { int id = ((int)idIter.Current); Sharpen.Util.ISet clazzes = ((Sharpen.Util.ISet)id2clazzes[id]); ClassMetadata mostSpecific = null; for (IEnumerator curClazzIter = clazzes.GetEnumerator(); curClazzIter.MoveNext(); ) { ClassMetadata curClazz = ((ClassMetadata)curClazzIter.Current); for (IEnumerator cmpClazzIter = clazzes.GetEnumerator(); cmpClazzIter.MoveNext(); ) { ClassMetadata cmpClazz = ((ClassMetadata)cmpClazzIter.Current); if (curClazz.Equals(cmpClazz._ancestor)) { goto OUTER_continue; } } mostSpecific = curClazz; break; OUTER_continue: ; } OUTER_break: ; id2clazz[id] = mostSpecific; } return id2clazz; }
public virtual void Convert(LocalObjectContainer container, int classIndexId, BTree bTree) { Transaction trans = container.SystemTransaction(); ByteArrayBuffer reader = container.ReadBufferById(trans, classIndexId); if (reader == null) { return; } int entries = reader.ReadInt(); for (int i = 0; i < entries; i++) { bTree.Add(trans, reader.ReadInt()); } }
public virtual void CreateIndex() { if (HasIndex()) { return; } LocalObjectContainer container = (LocalObjectContainer)Container(); if (container.ConfigImpl.MessageLevel() > Const4.None) { container.Message("creating index " + ToString()); } InitIndex(container.SystemTransaction()); container.SetDirtyInSystemTransaction(ContainingClass()); Reindex(container); }
internal static void SlotEntryToZeroes(LocalObjectContainer file, int address) { StatefulBuffer writer = new StatefulBuffer(file.SystemTransaction(), address, SlotLength ()); for (int i = 0; i < IntsInSlot; i++) { writer.WriteInt(0); } writer.WriteEncrypt(); }
internal static long BTreeUsage(LocalObjectContainer db, BTree btree, ISlotMap slotMap ) { return BTreeUsage(db.SystemTransaction(), db.IdSystem(), btree, slotMap); }
public override void ReadIdentity(LocalObjectContainer container) { _variablePart.ReadIdentity((LocalTransaction)container.SystemTransaction()); }
/// <exception cref="Db4objects.Db4o.Internal.FieldIndexException"></exception> protected override void RebuildIndexForObject(LocalObjectContainer container, ClassMetadata classMetadata, int objectId) { var slot = container.SystemTransaction().IdSystem().CurrentSlot(objectId); var data = ReadDatabaseIdentityIDAndUUID( container, classMetadata, slot, true); if (null == data) { return; } AddIndexEntry(container.LocalSystemTransaction(), objectId, data.uuid); }