Beispiel #1
0
        public void RollbackPartial(Session session, int start, long timestamp)
        {
            object[] objArray = session.RowActionList.ToArray();
            int      count    = session.RowActionList.Count;

            if (start != count)
            {
                for (int i = count - 1; i >= start; i--)
                {
                    RowAction action = (RowAction)objArray[i];
                    if (((action != null) && (action.type != 0)) && (action.type != 3))
                    {
                        Row memoryRow = action.MemoryRow;
                        if (memoryRow == null)
                        {
                            memoryRow = (Row)action.Store.Get(action.GetPos(), false);
                        }
                        if (memoryRow != null)
                        {
                            action.Rollback(session, timestamp);
                            int changeAction = action.MergeRollback(session, timestamp, memoryRow);
                            action.Store.RollbackRow(session, memoryRow, changeAction, base.TxModel);
                        }
                    }
                }
                session.RowActionList.RemoveRange(start, session.RowActionList.Count - start);
            }
        }
Beispiel #2
0
        public void RollbackPartial(Session session, int start, long timestamp)
        {
            object[] list  = session.RowActionList.ToArray();
            int      count = session.RowActionList.Count;

            if (start != count)
            {
                for (int i = start; i < count; i++)
                {
                    RowAction action = (RowAction)list[i];
                    if (action != null)
                    {
                        action.Rollback(session, timestamp);
                    }
                }
                TransactionManagerCommon.MergeRolledBackTransaction(session, timestamp, list, start, count);
                base.FinaliseRows(session, list, start, count, false);
                session.RowActionList.RemoveRange(start, session.RowActionList.Count - start);
            }
        }