public InterpretedPageFilter( Expression expression, TypeProvider symbolTypes, Map<Symbol, Integer> symbolToInputMappings, Metadata metadata, SqlParser sqlParser, Session session) { SymbolToInputParameterRewriter rewriter = new SymbolToInputParameterRewriter(symbolTypes, symbolToInputMappings); Expression rewritten = rewriter.rewrite(expression); this.inputChannels = new InputChannels(rewriter.getInputChannels()); this.deterministic = DeterminismEvaluator.isDeterministic(expression); // analyze rewritten expression so we can know the type of every expression in the tree List<Type> inputTypes = rewriter.getInputTypes(); ImmutableMap.Builder<Integer, Type> parameterTypes = ImmutableMap.builder(); for (int parameter = 0; parameter < inputTypes.size(); parameter++) { Type type = inputTypes.get(parameter); parameterTypes.put(parameter, type); } Map<NodeRef<Expression>, Type> expressionTypes = getExpressionTypesFromInput(session, metadata, sqlParser, parameterTypes.build(), rewritten, emptyList(), WarningCollector.NOOP); this.evaluator = ExpressionInterpreter.expressionInterpreter(rewritten, metadata, session, expressionTypes); }
public InterpretedPageProjection( Expression expression, TypeProvider symbolTypes, Map<Symbol, Integer> symbolToInputMappings, Metadata metadata, SqlParser sqlParser, Session session) { SymbolToInputParameterRewriter rewriter = new SymbolToInputParameterRewriter(symbolTypes, symbolToInputMappings); Expression rewritten = rewriter.rewrite(expression); this.inputChannels = new InputChannels(rewriter.getInputChannels()); this.deterministic = DeterminismEvaluator.isDeterministic(expression); // analyze rewritten expression so we can know the type of every expression in the tree List<Type> inputTypes = rewriter.getInputTypes(); ImmutableMap.Builder<Integer, Type> parameterTypes = ImmutableMap.builder(); for (int parameter = 0; parameter < inputTypes.size(); parameter++) { Type type = inputTypes.get(parameter); parameterTypes.put(parameter, type); } Map<NodeRef<Expression>, Type> expressionTypes = getExpressionTypesFromInput(session, metadata, sqlParser, parameterTypes.build(), rewritten, emptyList(), WarningCollector.NOOP); this.evaluator = ExpressionInterpreter.expressionInterpreter(rewritten, metadata, session, expressionTypes); blockBuilder = evaluator.getType().createBlockBuilder(null, 1); }
private static Object evaluate(Expression expression) { Map<NodeRef<Expression>, Type> expressionTypes = getExpressionTypes(TEST_SESSION, METADATA, SQL_PARSER, SYMBOL_TYPES, expression, emptyList(), WarningCollector.NOOP); ExpressionInterpreter interpreter = expressionInterpreter(expression, METADATA, TEST_SESSION, expressionTypes); return interpreter.evaluate(); }
for (int i = 0; i < row.size(); i++) { Object result = ExpressionInterpreter.expressionInterpreter(row.get(i), metadata, context.getSession(), expressionTypes).evaluate(); writeNativeValue(outputTypes.get(i), pageBuilder.getBlockBuilder(i), result);
Object result = expressionInterpreter(canonicalized, metadata, session, analyzer.getExpressionTypes()).evaluate(); verify(!(result instanceof Expression), "Expression interpreter returned an unresolved expression"); return result;
public InterpretedFilterFunction( Expression predicate, Map<Symbol, Type> symbolTypes, Map<Symbol, Integer> symbolToInputMappings, Metadata metadata, SqlParser sqlParser, Session session) { // pre-compute symbol -> input mappings and replace the corresponding nodes in the tree Expression rewritten = ExpressionTreeRewriter.rewriteWith(new SymbolToInputRewriter(symbolToInputMappings), predicate); // analyze expression so we can know the type of every expression in the tree ImmutableMap.Builder<Integer, Type> inputTypes = ImmutableMap.builder(); for (Map.Entry<Symbol, Integer> entry : symbolToInputMappings.entrySet()) { inputTypes.put(entry.getValue(), symbolTypes.get(entry.getKey())); } IdentityHashMap<Expression, Type> expressionTypes = getExpressionTypesFromInput(session, metadata, sqlParser, inputTypes.build(), rewritten); evaluator = ExpressionInterpreter.expressionInterpreter(rewritten, metadata, session, expressionTypes); InputReferenceExtractor inputReferenceExtractor = new InputReferenceExtractor(); inputReferenceExtractor.process(rewritten, null); this.inputChannels = ImmutableSet.copyOf(inputReferenceExtractor.getInputChannels()); }
public InterpretedProjectionFunction( Expression expression, Map<Symbol, Type> symbolTypes, Map<Symbol, Integer> symbolToInputMappings, Metadata metadata, SqlParser sqlParser, Session session) { // pre-compute symbol -> input mappings and replace the corresponding nodes in the tree Expression rewritten = ExpressionTreeRewriter.rewriteWith(new SymbolToInputRewriter(symbolToInputMappings), expression); // analyze expression so we can know the type of every expression in the tree ImmutableMap.Builder<Integer, Type> inputTypes = ImmutableMap.builder(); for (Map.Entry<Symbol, Integer> entry : symbolToInputMappings.entrySet()) { inputTypes.put(entry.getValue(), symbolTypes.get(entry.getKey())); } IdentityHashMap<Expression, Type> expressionTypes = getExpressionTypesFromInput(session, metadata, sqlParser, inputTypes.build(), rewritten); this.type = requireNonNull(expressionTypes.get(rewritten), "type is null"); evaluator = ExpressionInterpreter.expressionInterpreter(rewritten, metadata, session, expressionTypes); InputReferenceExtractor inputReferenceExtractor = new InputReferenceExtractor(); inputReferenceExtractor.process(rewritten, null); this.inputChannels = inputReferenceExtractor.getInputChannels(); this.deterministic = DeterminismEvaluator.isDeterministic(expression); }
private static Object evaluate(Expression expression) { IdentityHashMap<Expression, Type> expressionTypes = getExpressionTypes(TEST_SESSION, METADATA, SQL_PARSER, SYMBOL_TYPES, expression); ExpressionInterpreter interpreter = expressionInterpreter(expression, METADATA, TEST_SESSION, expressionTypes); return interpreter.evaluate((RecordCursor) null); }
@Override public PhysicalOperation visitValues(ValuesNode node, LocalExecutionPlanContext context) { List<Type> outputTypes = new ArrayList<>(); for (Symbol symbol : node.getOutputSymbols()) { Type type = requireNonNull(context.getTypes().get(symbol), format("No type for symbol %s", symbol)); outputTypes.add(type); } if (node.getRows().isEmpty()) { OperatorFactory operatorFactory = new ValuesOperatorFactory(context.getNextOperatorId(), node.getId(), outputTypes, ImmutableList.of()); return new PhysicalOperation(operatorFactory, makeLayout(node)); } PageBuilder pageBuilder = new PageBuilder(outputTypes); for (List<Expression> row : node.getRows()) { pageBuilder.declarePosition(); IdentityHashMap<Expression, Type> expressionTypes = getExpressionTypes( context.getSession(), metadata, sqlParser, ImmutableMap.<Symbol, Type>of(), ImmutableList.copyOf(row)); for (int i = 0; i < row.size(); i++) { // evaluate the literal value Object result = ExpressionInterpreter.expressionInterpreter(row.get(i), metadata, context.getSession(), expressionTypes).evaluate(0); writeNativeValue(outputTypes.get(i), pageBuilder.getBlockBuilder(i), result); } } OperatorFactory operatorFactory = new ValuesOperatorFactory(context.getNextOperatorId(), node.getId(), outputTypes, ImmutableList.of(pageBuilder.build())); return new PhysicalOperation(operatorFactory, makeLayout(node)); }
Object result = expressionInterpreter(canonicalized, metadata, session, analyzer.getExpressionTypes()).evaluate(0); verify(!(result instanceof Expression), "Expression interpreter returned an unresolved expression"); return result;