private boolean filter(Page page, int position) { return TRUE.equals(evaluator.evaluate(position, page)); } }
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(); }
@Override public boolean process() { checkState(result == null, "result has been generated"); int length = selectedPositions.getOffset() + selectedPositions.size(); if (selectedPositions.isList()) { int[] positions = selectedPositions.getPositions(); while (nextIndexOrPosition < length) { writeNativeValue(evaluator.getType(), blockBuilder, evaluator.evaluate(positions[nextIndexOrPosition], page)); nextIndexOrPosition++; if (yieldSignal.isSet()) { return false; } } } else { while (nextIndexOrPosition < length) { writeNativeValue(evaluator.getType(), blockBuilder, evaluator.evaluate(nextIndexOrPosition, page)); nextIndexOrPosition++; if (yieldSignal.isSet()) { return false; } } } result = blockBuilder.build(); blockBuilder = blockBuilder.newBlockBuilderLike(null); return true; }
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;
@Override public boolean filter(RecordCursor cursor) { return evaluator.evaluate(cursor) == TRUE; }
@Override public boolean filter(int position, Block... blocks) { return evaluator.evaluate(position, blocks) == TRUE; }
@Override public void project(RecordCursor cursor, BlockBuilder output) { Object value = evaluator.evaluate(cursor); append(output, value); }
@Override public void project(int position, Block[] blocks, BlockBuilder output) { Object value = evaluator.evaluate(position, blocks); append(output, value); }
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;