Пример #1
0
        public void SetTransactionControl(Session session, int mode)
        {
            lock (base.Lock)
            {
                TransactionManagerMvcc mvcc;
                if (mode != 1)
                {
                    if (mode == 2)
                    {
                        goto Label_005B;
                    }
                }
                else
                {
                    TransactionManagerMV2PL rmvpl = new TransactionManagerMV2PL(base.database);
                    Interlocked.Exchange(ref rmvpl.GlobalChangeTimestamp, Interlocked.Read(ref this.GlobalChangeTimestamp));
                    rmvpl.LiveTransactionTimestamps.AddLast(session.TransactionTimestamp);
                    base.database.TxManager = rmvpl;
                }
                goto Label_00AA;
Label_005B:
                mvcc = new TransactionManagerMvcc(base.database);
                Interlocked.Exchange(ref mvcc.GlobalChangeTimestamp, Interlocked.Read(ref this.GlobalChangeTimestamp));
                mvcc.LiveTransactionTimestamps.AddLast(session.TransactionTimestamp);
                base.database.TxManager = mvcc;
                Label_00AA :;
            }
        }
Пример #2
0
        public void SetTransactionControl(Session session, int mode)
        {
            lock (base.Lock)
            {
                TransactionManagerMvcc mvcc;
                if (base.LiveTransactionTimestamps.Size() != 1)
                {
                    goto Label_00AA;
                }
                if (mode != 0)
                {
                    if (mode == 2)
                    {
                        goto Label_0059;
                    }
                }
                else
                {
                    TransactionManager2PL managerpl = new TransactionManager2PL(base.database);
                    Interlocked.Exchange(ref managerpl.GlobalChangeTimestamp, Interlocked.Read(ref this.GlobalChangeTimestamp));
                    base.database.TxManager = managerpl;
                }
                return;

Label_0059:
                mvcc = new TransactionManagerMvcc(base.database);
                Interlocked.Exchange(ref mvcc.GlobalChangeTimestamp, Interlocked.Read(ref this.GlobalChangeTimestamp));
                mvcc.LiveTransactionTimestamps.AddLast(session.TransactionTimestamp);
                base.database.TxManager = mvcc;
                return;

                Label_00AA :;
            }
            throw Error.GetError(0xe75);
        }