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 :; } }
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); }