示例#1
0
        public override void JoinApplicationTransaction(Program program, IRow row)
        {
            Schema.RowType rowType = new Schema.RowType();

            foreach (Schema.Column column in row.DataType.Columns)
            {
                rowType.Columns.Add(column.Copy());
            }
            foreach (Schema.Column column in SourceNode.DataType.Columns)
            {
                if (!DataType.Columns.ContainsName(column.Name))
                {
                    rowType.Columns.Add(column.Copy());
                }
            }
            Row localRow = new Row(program.ValueManager, rowType);

            try
            {
                row.CopyTo(localRow);

                // Get the SourceNode select set for this row, and join on each result
                foreach (var sourceRow in SourceNode.SelectAll(program, localRow))
                {
                    try
                    {
                        base.JoinApplicationTransaction(program, sourceRow);
                    }
                    finally
                    {
                        sourceRow.Dispose();
                    }
                }
            }
            finally
            {
                localRow.Dispose();
            }
        }