protected override void Process(FieldMetadata field) { if (!field.IsVirtual() && field.HasIndex()) { this._enclosing.ProcessBTree(context, field.GetIndex(context.SystemTrans())); } }
public override void Defrag(ClassMetadata classMetadata, ClassAspect aspect, LatinStringIO sio, DefragmentContextImpl context) { base.Defrag(classMetadata, aspect, sio, context); if (!(aspect is FieldMetadata)) { return; } FieldMetadata field = (FieldMetadata)aspect; if (field.IsVirtual()) { return; } if (field.HasIndex()) { BTree index = field.GetIndex(context.SystemTrans()); int targetIndexID = context.CopyID(); if (targetIndexID != 0) { index.DefragBTree(context.Services()); } } else { context.WriteInt(0); } }
public void TestIndexingLowLevel() { LocalObjectContainer container = Fixture().FileSession(); ClassMetadata classMetadata = container.ClassMetadataForReflectClass(container.Reflector().ForClass(typeof(Item))); FieldMetadata fieldMetadata = classMetadata.FieldMetadataForName("_asByte"); Assert.IsTrue(fieldMetadata.CanLoadByIndex(), "EnumTypeHandler should be indexable."); BTree index = fieldMetadata.GetIndex(container.SystemTransaction()); Assert.IsNotNull(index, "No btree index found for enum field."); }
public void TestIndexingLowLevel() { LocalObjectContainer container = Fixture().FileSession(); ClassMetadata classMetadata = container.ClassMetadataForReflectClass(container.Reflector().ForClass(typeof(ValueTypeHolder))); FieldMetadata fieldMetadata = classMetadata.FieldMetadataForName("Value"); Assert.IsTrue(fieldMetadata.CanLoadByIndex(), WithTypeName("Typehandler for type {0} should be indexable.")); BTree index = fieldMetadata.GetIndex(container.SystemTransaction()); Assert.IsNotNull(index, WithTypeName("No btree index found for field of type {0} .")); }
public override void Write(Transaction trans, ClassMetadata clazz, ClassAspect aspect , ByteArrayBuffer writer) { base.Write(trans, clazz, aspect, writer); if (!(aspect is FieldMetadata)) { return; } FieldMetadata field = (FieldMetadata)aspect; if (!HasBTreeIndex(field)) { return; } writer.WriteIDOf(trans, field.GetIndex(trans)); }