Exemple #1
0
        protected void InternalInsertRight(Program program, IRow oldRow, IRow newRow, BitArray valueFlags, bool uncheckedValue)
        {
            switch (PropagateInsertRight)
            {
            case PropagateAction.True:
                RightNode.Insert(program, oldRow, newRow, valueFlags, uncheckedValue);
                break;

            case PropagateAction.Ensure:
            case PropagateAction.Ignore:
                using (Row rightRow = new Row(program.ValueManager, RightNode.DataType.RowType))
                {
                    newRow.CopyTo(rightRow);
                    using (IRow currentRow = RightNode.Select(program, rightRow))
                    {
                        if (currentRow != null)
                        {
                            if (PropagateInsertRight == PropagateAction.Ensure)
                            {
                                RightNode.Update(program, currentRow, newRow, valueFlags, false, uncheckedValue);
                            }
                        }
                        else
                        {
                            RightNode.Insert(program, oldRow, newRow, valueFlags, uncheckedValue);
                        }
                    }
                }
                break;
            }
        }