示例#1
0
        private RuntimeExpression CreateRuntimeExpression(ExpressionNode expression, params BoundRowBufferEntrySet[] boundRowBufferEntrySets)
        {
            // Update row buffer references

            List <BoundRowBufferEntrySet> boundRowBufferEntrySetList = new List <BoundRowBufferEntrySet>();

            boundRowBufferEntrySetList.AddRange(boundRowBufferEntrySets);
            foreach (BoundRowBufferEntrySet outerreferenceBoundRowBufferEntrySet in _outerReferenceStack)
            {
                boundRowBufferEntrySetList.Add(outerreferenceBoundRowBufferEntrySet);
            }
            boundRowBufferEntrySets = boundRowBufferEntrySetList.ToArray();

            RowBufferEntryExpressionUpdater rowBufferEntryExpressionUpdater = new RowBufferEntryExpressionUpdater(boundRowBufferEntrySets);

            expression = rowBufferEntryExpressionUpdater.VisitExpression(expression);

#if COMPILE_IL
            return(ExpressionCompiler.CreateCompiled(expression));
#else
            return(ExpressionCompiler.CreateInterpreded(expression));
#endif
        }