示例#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 void DefragIndex(DefragmentContextImpl context, IIndexable4 keyHandler
                                       )
        {
            // count
            int count = context.ReadInt();
            // leafByte
            byte leafByte = context.ReadByte();
            bool isLeaf   = (leafByte == 1);

            context.CopyID();
            // parent ID
            context.CopyID();
            // previous ID
            context.CopyID();
            // next ID
            for (int i = 0; i < count; i++)
            {
                keyHandler.DefragIndexEntry(context);
                if (!isLeaf)
                {
                    context.CopyID();
                }
            }
        }
示例#3
0
 public override void Defrag(ClassMetadata classMetadata, ClassAspect aspect, LatinStringIO
                             sio, DefragmentContextImpl context)
 {
     context.IncrementStringOffset(sio);
     if (!(aspect is FieldMetadata))
     {
         return;
     }
     if (((FieldMetadata)aspect).IsVirtual())
     {
         return;
     }
     // handler ID
     context.CopyID();
     // skip primitive/array/narray attributes
     context.IncrementOffset(1);
 }
示例#4
0
        public virtual void Defrag(ClassMetadata classMetadata, LatinStringIO sio, DefragmentContextImpl
                                   context, int classIndexID)
        {
            ReadName(sio, context.SourceBuffer());
            ReadName(sio, context.TargetBuffer());
            int metaClassID = 0;

            context.WriteInt(metaClassID);
            // ancestor ID
            context.CopyID();
            context.WriteInt((classMetadata.HasClassIndex() ? IndexIDForWriting(classIndexID)
                                 : 0));
            int aspectCount = context.ReadInt();

            if (aspectCount > classMetadata.DeclaredAspectCount())
            {
                throw new InvalidOperationException();
            }
            IntByRef processedAspectCount = new IntByRef(0);

            classMetadata.TraverseDeclaredAspects(new _IProcedure4_136(this, processedAspectCount
                                                                       , aspectCount, classMetadata, sio, context));
        }
 public void DefragIndexEntry(DefragmentContextImpl context)
 {
     context.CopyID();
 }
 public void DefragIndexEntry(DefragmentContextImpl context)
 {
     context.CopyID();
 }
示例#7
0
文件: BTree.cs 项目: masroore/db4o
 public virtual void DefragIndex(DefragmentContextImpl context)
 {
     context.IncrementOffset(DefragmentIncrementOffset);
     context.CopyID();
 }
示例#8
0
 public virtual void DefragIndex(DefragmentContextImpl context)
 {
     context.IncrementOffset(DefragmentIncrementOffset);
     context.CopyID();
 }
示例#9
0
 public static void DefragIndex(DefragmentContextImpl context, IIndexable4 keyHandler
     )
 {
     // count
     var count = context.ReadInt();
     // leafByte
     var leafByte = context.ReadByte();
     var isLeaf = (leafByte == 1);
     context.CopyID();
     // parent ID
     context.CopyID();
     // previous ID
     context.CopyID();
     // next ID
     for (var i = 0; i < count; i++)
     {
         keyHandler.DefragIndexEntry(context);
         if (!isLeaf)
         {
             context.CopyID();
         }
     }
 }
示例#10
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);
     }
 }
示例#11
0
 public override void Defrag(ClassMetadata classMetadata, ClassAspect aspect, LatinStringIO
     sio, DefragmentContextImpl context)
 {
     context.IncrementStringOffset(sio);
     if (!(aspect is FieldMetadata))
     {
         return;
     }
     if (((FieldMetadata) aspect).IsVirtual())
     {
         return;
     }
     // handler ID
     context.CopyID();
     // skip primitive/array/narray attributes
     context.IncrementOffset(1);
 }
示例#12
0
 public virtual void Defrag(ClassMetadata classMetadata, LatinStringIO sio, DefragmentContextImpl
     context, int classIndexID)
 {
     ReadName(sio, context.SourceBuffer());
     ReadName(sio, context.TargetBuffer());
     var metaClassID = 0;
     context.WriteInt(metaClassID);
     // ancestor ID
     context.CopyID();
     context.WriteInt((classMetadata.HasClassIndex()
         ? IndexIDForWriting(classIndexID)
         : 0));
     var aspectCount = context.ReadInt();
     if (aspectCount > classMetadata.DeclaredAspectCount())
     {
         throw new InvalidOperationException();
     }
     var processedAspectCount = new IntByRef(0);
     classMetadata.TraverseDeclaredAspects(new _IProcedure4_136(this, processedAspectCount
         , aspectCount, classMetadata, sio, context));
 }