private static AlgebraNode PadLeftWithNullsOnRightSide(JoinAlgebraNode node, RowBufferCreationMode rowBufferCreationMode) { ComputeScalarAlgebraNode computeScalarAlgebraNode = new ComputeScalarAlgebraNode(); computeScalarAlgebraNode.Input = node.Left; List<RowBufferEntry> outputList = new List<RowBufferEntry>(); outputList.AddRange(node.Left.OutputList); List<ComputedValueDefinition> definedValues = new List<ComputedValueDefinition>(); foreach (RowBufferEntry rowBufferEntry in node.Right.OutputList) { ComputedValueDefinition definedValue = new ComputedValueDefinition(); if (rowBufferCreationMode == RowBufferCreationMode.KeepExisting) { definedValue.Target = rowBufferEntry; } else { definedValue.Target = new RowBufferEntry(rowBufferEntry.DataType); } definedValue.Expression = LiteralExpression.FromTypedNull(rowBufferEntry.DataType); definedValues.Add(definedValue); outputList.Add(definedValue.Target); } computeScalarAlgebraNode.DefinedValues = definedValues.ToArray(); computeScalarAlgebraNode.OutputList = outputList.ToArray(); return computeScalarAlgebraNode; }
private static AlgebraNode PadLeftWithNullsOnRightSide(JoinAlgebraNode node, RowBufferCreationMode rowBufferCreationMode) { ComputeScalarAlgebraNode computeScalarAlgebraNode = new ComputeScalarAlgebraNode(); computeScalarAlgebraNode.Input = node.Left; List <RowBufferEntry> outputList = new List <RowBufferEntry>(); outputList.AddRange(node.Left.OutputList); List <ComputedValueDefinition> definedValues = new List <ComputedValueDefinition>(); foreach (RowBufferEntry rowBufferEntry in node.Right.OutputList) { ComputedValueDefinition definedValue = new ComputedValueDefinition(); if (rowBufferCreationMode == RowBufferCreationMode.KeepExisting) { definedValue.Target = rowBufferEntry; } else { definedValue.Target = new RowBufferEntry(rowBufferEntry.DataType); } definedValue.Expression = LiteralExpression.FromTypedNull(rowBufferEntry.DataType); definedValues.Add(definedValue); outputList.Add(definedValue.Target); } computeScalarAlgebraNode.DefinedValues = definedValues.ToArray(); computeScalarAlgebraNode.OutputList = outputList.ToArray(); return(computeScalarAlgebraNode); }