private AlgebraNode PushOverConcat(FilterAlgebraNode node) { ConcatAlgebraNode inputNode = (ConcatAlgebraNode)node.Input; for (int i = 0; i < inputNode.Inputs.Length; i++) { ExpressionNode predicate = (ExpressionNode)node.Predicate.Clone(); ConcatRowBufferEntryReplacer concatRowBufferEntryReplacer = new ConcatRowBufferEntryReplacer(inputNode.DefinedValues, i); predicate = concatRowBufferEntryReplacer.VisitExpression(predicate); FilterAlgebraNode filterAlgebraNode = new FilterAlgebraNode(); filterAlgebraNode.Input = inputNode.Inputs[i]; filterAlgebraNode.Predicate = predicate; inputNode.Inputs[i] = VisitAlgebraNode(filterAlgebraNode); } return(inputNode); }
private AlgebraNode PushOverConcat(FilterAlgebraNode node) { ConcatAlgebraNode inputNode = (ConcatAlgebraNode) node.Input; for (int i = 0; i < inputNode.Inputs.Length; i++) { ExpressionNode predicate = (ExpressionNode)node.Predicate.Clone(); ConcatRowBufferEntryReplacer concatRowBufferEntryReplacer = new ConcatRowBufferEntryReplacer(inputNode.DefinedValues, i); predicate = concatRowBufferEntryReplacer.VisitExpression(predicate); FilterAlgebraNode filterAlgebraNode = new FilterAlgebraNode(); filterAlgebraNode.Input = inputNode.Inputs[i]; filterAlgebraNode.Predicate = predicate; inputNode.Inputs[i] = VisitAlgebraNode(filterAlgebraNode); } return inputNode; }