Ejemplo n.º 1
0
 public RelationDBManipulator(IObjectDBTransaction transation, RelationInfo relationInfo)
 {
     _transaction         = (IInternalObjectDBTransaction)transation;
     _relationInfo        = relationInfo;
     _modificationCounter = _transaction.GetRelationModificationCounter(relationInfo.Id);
     _hasSecondaryIndexes = _relationInfo.ClientRelationVersionInfo.HasSecondaryIndexes;
 }
Ejemplo n.º 2
0
        public BenchmarkRelationPartialView()
        {
            _fc = new InMemoryFileCollection();
            var lowDb = new KeyValueDB(_fc);

            _db = new ObjectDB();
            _db.Open(lowDb, true);
            using var tr = _db.StartTransaction();
            var table = tr.GetRelation <IPersonTable>();

            for (var i = 0; i < 10000; i++)
            {
                var p = new Person
                {
                    ParentId = 1,
                    PersonId = i,
                    Age      = (ulong)(i / 128),
                    Name     = "Lorem ipsum " + i,
                    Children = Enumerable.Range(0, 100).Select(j => new Person {
                        ParentId = i, PersonId = i * 100 + j, Name = "Lorem ipsum child " + j, Age = (ulong)j
                    }).ToList()
                };
                table.Upsert(p);
            }
            tr.Commit();
            _tr    = _db.StartReadOnlyTransaction();
            _table = _tr.GetRelation <IPersonTable>();
        }
Ejemplo n.º 3
0
 public RelationDBManipulator(IObjectDBTransaction transaction, RelationInfo relationInfo)
 {
     _transaction         = (IInternalObjectDBTransaction)transaction;
     _kvtr                = _transaction.KeyValueDBTransaction;
     _relationInfo        = relationInfo;
     _hasSecondaryIndexes = _relationInfo.ClientRelationVersionInfo.HasSecondaryIndexes;
 }
        KeyValueDBTransactionWithCount GetCountingTransaction(IObjectDBTransaction tr)
        {
            var trimpl = tr as ObjectDBTransaction;
            var kvtr   = trimpl.KeyValueDBTransaction as KeyValueDBTransactionWithCount;

            return(kvtr);
        }
        void AssertCounts(IObjectDBTransaction tr, int eraseAll = -1, int eraseCurrent = -1)
        {
            var ctr = GetCountingTransaction(tr);

            Assert.Equal(eraseAll, ctr.EraseRangeCount);
            Assert.Equal(eraseCurrent, ctr.EraseCurrentCount);
        }
Ejemplo n.º 6
0
 public void ImportAllKeys(IObjectDBTransaction sourceDbTr)
 {
     var itr = (IInternalObjectDBTransaction)sourceDbTr;
     var sourceKvTr = itr.KeyValueDBTransaction;
     foreach (var prefix in SupportedKeySpaces())
         ImportKeysWithPrefix(prefix, sourceKvTr);
 }
Ejemplo n.º 7
0
 public void StartTransaction()
 {
     if (!IsEnabled)
     {
         return;
     }
     _tr = _odb.StartTransaction();
 }
Ejemplo n.º 8
0
 public void EndTransaction()
 {
     if (!IsEnabled)
     {
         return;
     }
     _tr.Commit();
     _tr.Dispose();
     _tr = null;
 }
Ejemplo n.º 9
0
 public void Iterate(IObjectDBTransaction tr)
 {
     var iterator = new ODBIterator(tr, new VisitorForFindUnused(this));
     using (_kvtr = _keyValueDb.StartWritingTransaction().Result)
     {
         iterator.Iterate();
         _kvtr.Commit();
     }
     _kvtr = null;
 }
Ejemplo n.º 10
0
        public void ImportAllKeys(IObjectDBTransaction sourceDbTr)
        {
            var itr        = (IInternalObjectDBTransaction)sourceDbTr;
            var sourceKvTr = itr.KeyValueDBTransaction;

            foreach (var prefix in SupportedKeySpaces())
            {
                ImportKeysWithPrefix(prefix, sourceKvTr);
            }
        }
Ejemplo n.º 11
0
        public void DeleteUnused(IObjectDBTransaction tr)
        {
            var itr  = (IInternalObjectDBTransaction)tr;
            var kvtr = itr.KeyValueDBTransaction;

            foreach (var unseen in UnseenKeys())
            {
                kvtr.EraseAll(unseen.Key);
            }
        }
Ejemplo n.º 12
0
        public void Iterate(IObjectDBTransaction tr)
        {
            var iterator = new ODBIterator(tr, new VisitorForFindUnused(this));

            using (_kvtr = _keyValueDb.StartWritingTransaction().Result)
            {
                iterator.Iterate();
                _kvtr.Commit();
            }
            _kvtr = null;
        }
Ejemplo n.º 13
0
        public ODBIterator(IObjectDBTransaction tr, IODBFastVisitor visitor)
        {
            _tr                = (IInternalObjectDBTransaction)tr;
            _trkv              = _tr.KeyValueDBTransaction;
            _fastVisitor       = visitor;
            _visitor           = visitor as IODBVisitor;
            _usedTableIds      = new HashSet <uint>();
            _visitedOids       = new HashSet <ulong>();
            _usedTableVersions = new HashSet <TableIdVersion>();
            _tableVersionInfos = new Dictionary <TableIdVersion, TableVersionInfo>();

            _skippers = new Dictionary <IFieldHandler, Action <AbstractBufferedReader> >(ReferenceEqualityComparer <IFieldHandler> .Instance);
            _loaders  = new Dictionary <IFieldHandler, Func <AbstractBufferedReader, object> >(ReferenceEqualityComparer <IFieldHandler> .Instance);
        }
Ejemplo n.º 14
0
 public RelationDBManipulator(IObjectDBTransaction transation, RelationInfo relationInfo)
 {
     _transaction         = (IInternalObjectDBTransaction)transation;
     _relationInfo        = relationInfo;
     _modificationCounter = _transaction.GetRelationModificationCounter(relationInfo.Id);
 }
        static KeyValueDBTransactionWithCount GetCountingTransaction(IObjectDBTransaction tr)
        {
            var trimpl = (ObjectDBTransaction)tr;

            return(((KeyValueDBTransactionWithCount)trimpl.KeyValueDBTransaction) !);
        }
Ejemplo n.º 16
0
 public void DeleteUnused(IObjectDBTransaction tr)
 {
     var itr = (IInternalObjectDBTransaction)tr;
     var kvtr = itr.KeyValueDBTransaction;
     foreach (var unseen in UnseenKeys())
     {
         kvtr.SetKeyPrefix(unseen.Key);
         kvtr.EraseAll();
     }
 }
Ejemplo n.º 17
0
 public void EndTransaction()
 {
     _tr.Commit();
     _tr.Dispose();
     _tr = null;
 }
Ejemplo n.º 18
0
 public RelationDBManipulator(IObjectDBTransaction transation, RelationInfo relationInfo)
 {
     _transaction  = (IInternalObjectDBTransaction)transation;
     _relationInfo = relationInfo;
 }
Ejemplo n.º 19
0
 public void StartTransaction()
 {
     _tr = _odb.StartTransaction();
 }
Ejemplo n.º 20
0
 internal DBIndirect(IObjectDBTransaction transaction, ulong oid)
 {
     _transaction = transaction;
     _oid         = oid;
 }