Exemplo n.º 1
0
        private static void CreateBufferedValue(ExpressionNode expression, ICollection <ComputedValueDefinition> computedColumnList, ICollection <RowBufferEntry> columnList, IEnumerable <ComputedValueDefinition> alreadyComputedBufferedValues)
        {
            if (alreadyComputedBufferedValues != null)
            {
                expression = ReplaceAlreadyComputedSubsequences(expression, alreadyComputedBufferedValues);
            }

            foreach (ComputedValueDefinition computedBufferedValue in computedColumnList)
            {
                if (expression.IsStructuralEqualTo(computedBufferedValue.Expression))
                {
                    columnList.Add(computedBufferedValue.Target);
                    return;
                }
            }

            RowBufferEntryExpression rowBufferExpression = expression as RowBufferEntryExpression;

            if (rowBufferExpression != null)
            {
                columnList.Add(rowBufferExpression.RowBufferEntry);
            }
            else
            {
                RowBufferEntry rowBufferEntry = new RowBufferEntry(expression.ExpressionType);
                columnList.Add(rowBufferEntry);

                ComputedValueDefinition computedValue = new ComputedValueDefinition();
                computedValue.Target     = rowBufferEntry;
                computedValue.Expression = expression;
                computedColumnList.Add(computedValue);
            }
        }
Exemplo n.º 2
0
        public static int FindStructuralEquivalentExpression(ExpressionNode[] expressions, ExpressionNode expr)
        {
            for (int i = 0; i < expressions.Length; i++)
            {
                ExpressionNode node = expressions[i];

                if (node.IsStructuralEqualTo(expr))
                {
                    return(i);
                }
            }

            return(-1);
        }
Exemplo n.º 3
0
            public override AstNode Visit(AstNode node)
            {
                ExpressionNode expression = node as ExpressionNode;

                if (expression != null)
                {
                    foreach (ComputedValueDefinition computedBufferedValue in _computedValues)
                    {
                        if (expression.IsStructuralEqualTo(computedBufferedValue.Expression))
                        {
                            RowBufferEntryExpression rowBufferExpression = new RowBufferEntryExpression();
                            rowBufferExpression.RowBufferEntry = computedBufferedValue.Target;
                            return(rowBufferExpression);
                        }
                    }
                }

                return(base.Visit(node));
            }
Exemplo n.º 4
0
        private static void CreateBufferedValue(ExpressionNode expression, ICollection<ComputedValueDefinition> computedColumnList, ICollection<RowBufferEntry> columnList, IEnumerable<ComputedValueDefinition> alreadyComputedBufferedValues)
        {
            if (alreadyComputedBufferedValues != null)
                expression = ReplaceAlreadyComputedSubsequences(expression, alreadyComputedBufferedValues);

            foreach (ComputedValueDefinition computedBufferedValue in computedColumnList)
            {
                if (expression.IsStructuralEqualTo(computedBufferedValue.Expression))
                {
                    columnList.Add(computedBufferedValue.Target);
                    return;
                }
            }

            RowBufferEntryExpression rowBufferExpression = expression as RowBufferEntryExpression;
            if (rowBufferExpression != null)
            {
                columnList.Add(rowBufferExpression.RowBufferEntry);
            }
            else
            {
                RowBufferEntry rowBufferEntry = new RowBufferEntry(expression.ExpressionType);
                columnList.Add(rowBufferEntry);

                ComputedValueDefinition computedValue = new ComputedValueDefinition();
                computedValue.Target = rowBufferEntry;
                computedValue.Expression = expression;
                computedColumnList.Add(computedValue);
            }
        }