示例#1
0
        public override void Defrag(ClassMetadata classMetadata, ClassAspect aspect, LatinStringIO
                                    sio, DefragmentContextImpl context)
        {
            base.Defrag(classMetadata, aspect, sio, context);
            if (!(aspect is FieldMetadata))
            {
                return;
            }
            var field = (FieldMetadata)aspect;

            if (field.IsVirtual())
            {
                return;
            }
            if (field.HasIndex())
            {
                var index         = field.GetIndex(context.SystemTrans());
                var targetIndexID = context.CopyID();
                if (targetIndexID != 0)
                {
                    index.DefragBTree(context.Services());
                }
            }
            else
            {
                context.WriteInt(0);
            }
        }
示例#2
0
 public static ObjectHeader Defrag(DefragmentContextImpl
     context)
 {
     var source = context.SourceBuffer();
     var target = context.TargetBuffer();
     var header = new ObjectHeader
         (context.Services().SystemTrans().Container(), null, source);
     var newID = context.Mapping().StrictMappedID(header.ClassMetadata().GetID());
     var slotFormat = header.SlotFormat();
     slotFormat.WriteObjectClassID(target, newID);
     slotFormat.SkipMarshallerInfo(target);
     slotFormat.ReadHeaderAttributes(target);
     return header;
 }
示例#3
0
        public static ObjectHeader Defrag(DefragmentContextImpl
                                          context)
        {
            var source = context.SourceBuffer();
            var target = context.TargetBuffer();
            var header = new ObjectHeader
                             (context.Services().SystemTrans().Container(), null, source);
            var newID      = context.Mapping().StrictMappedID(header.ClassMetadata().GetID());
            var slotFormat = header.SlotFormat();

            slotFormat.WriteObjectClassID(target, newID);
            slotFormat.SkipMarshallerInfo(target);
            slotFormat.ReadHeaderAttributes(target);
            return(header);
        }
示例#4
0
 public override void Defrag(ClassMetadata classMetadata, ClassAspect aspect, LatinStringIO
     sio, DefragmentContextImpl context)
 {
     base.Defrag(classMetadata, aspect, sio, context);
     if (!(aspect is FieldMetadata))
     {
         return;
     }
     var field = (FieldMetadata) aspect;
     if (field.IsVirtual())
     {
         return;
     }
     if (field.HasIndex())
     {
         var index = field.GetIndex(context.SystemTrans());
         var targetIndexID = context.CopyID();
         if (targetIndexID != 0)
         {
             index.DefragBTree(context.Services());
         }
     }
     else
     {
         context.WriteInt(0);
     }
 }