예제 #1
0
        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);
        }
예제 #2
0
        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;
        }