Exemple #1
0
        public void MoveData(Session session, IPersistentStore other, int colindex, int adjust)
        {
            object  defaultValue = null;
            SqlType type         = null;
            SqlType type2        = null;

            if ((adjust >= 0) && (colindex != -1))
            {
                defaultValue = ((Table)this.table).GetColumn(colindex).GetDefaultValue(session);
                type2        = this.table.GetColumnTypes()[colindex];
            }
            if ((adjust <= 0) && (colindex != -1))
            {
                type = other.GetTable().GetColumnTypes()[colindex];
            }
            IRowIterator rowIterator = other.GetRowIterator();
            Table        table       = (Table)this.table;

            try
            {
                while (rowIterator.HasNext())
                {
                    object[] rowData      = rowIterator.GetNextRow().RowData;
                    object[] emptyRowData = table.GetEmptyRowData();
                    object   a            = null;
                    if ((adjust == 0) && (colindex != -1))
                    {
                        a            = rowData[colindex];
                        defaultValue = type2.ConvertToType(session, a, type);
                    }
                    if ((defaultValue != null) && type2.IsLobType())
                    {
                        session.sessionData.AdjustLobUsageCount(defaultValue, 1);
                    }
                    if (((a != null) && (type != null)) && type.IsLobType())
                    {
                        session.sessionData.AdjustLobUsageCount(a, -1);
                    }
                    ArrayUtil.CopyAdjustArray <object>(rowData, emptyRowData, defaultValue, colindex, adjust);
                    table.SystemSetIdentityColumn(session, emptyRowData);
                    table.EnforceTypeLimits(session, emptyRowData);
                    table.EnforceRowConstraints(session, emptyRowData);
                    Row newCachedObject = this.GetNewCachedObject(null, emptyRowData);
                    this.IndexRow(null, newCachedObject);
                }
            }
            catch (OutOfMemoryException)
            {
                throw Error.GetError(460);
            }
        }
 private void SetInConditionsAsTables()
 {
     for (int i = this.RangeVariables.Length - 1; i >= 0; i--)
     {
         RangeVariable     range = this.RangeVariables[i];
         ExpressionLogical e     = (ExpressionLogical)this._inExpressions[i];
         if (e != null)
         {
             OrderedIntHashSet set = new OrderedIntHashSet();
             e.AddLeftColumnsForAllAny(range, set);
             Index index = range.RangeTable.GetIndexForColumns(this.session, set, false);
             int   num2  = 0;
             for (int j = 0; j < index.GetColumnCount(); j++)
             {
                 if (set.Contains(index.GetColumns()[j]))
                 {
                     num2++;
                 }
             }
             RangeVariable addition = new RangeVariable(e.GetRightNode().GetTable(), null, null, null, this._compileContext)
             {
                 IsGenerated = true
             };
             RangeVariable[] dest = new RangeVariable[this.RangeVariables.Length + 1];
             ArrayUtil.CopyAdjustArray <RangeVariable>(this.RangeVariables, dest, addition, i, 1);
             this.RangeVariables = dest;
             Expression[] exprList = new Expression[num2];
             for (int k = 0; k < num2; k++)
             {
                 int num5          = index.GetColumns()[k];
                 int colIndexRight = set.GetIndex(num5);
                 exprList[k] = new ExpressionLogical(range, num5, addition, colIndexRight);
             }
             bool flag = this.RangeVariables[i].IsLeftJoin || this.RangeVariables[i].IsRightJoin;
             RangeVariable.RangeVariableConditions conditions1 = (!this._inInJoin[i] & flag) ? range.WhereConditions[0] : range.JoinConditions[0];
             conditions1.AddIndexCondition(exprList, index, exprList.Length);
             conditions1.AddCondition(e);
         }
     }
 }