public static ArrayMapBytecodeExpression map(Scope scope, CachedInstanceBinder cachedInstanceBinder, Type fromElementType, Type toElementType, Variable array, String elementFunctionName, ScalarFunctionImplementation elementFunction) { return map( scope, cachedInstanceBinder.getCallSiteBinder(), fromElementType, toElementType, array, element -> invokeFunction(scope, cachedInstanceBinder, elementFunctionName, elementFunction, element)); }
public static ArrayMapBytecodeExpression map( Scope scope, CallSiteBinder binder, BytecodeExpression array, Type fromElementType, Type toElementType, Function<BytecodeExpression, BytecodeExpression> mapper) { return new ArrayMapBytecodeExpression(scope, binder, array, fromElementType, toElementType, mapper); } }
private JoinFilterFunctionFactory internalCompileFilterFunctionFactory(RowExpression filterExpression, int leftBlocksSize) { Class<? extends InternalJoinFilterFunction> internalJoinFilterFunction = compileInternalJoinFilterFunction(filterExpression, leftBlocksSize); return new IsolatedJoinFilterFunctionFactory(internalJoinFilterFunction); }
static BytecodeNode generateWrite(BytecodeGeneratorContext context, Type returnType, Variable outputBlock) { return BytecodeUtils.generateWrite( context.getCallSiteBinder(), context.getScope(), context.getScope().getVariable("wasNull"), returnType, outputBlock); } }
public static SqlTypeBytecodeExpression constantType(CallSiteBinder callSiteBinder, Type type) { requireNonNull(callSiteBinder, "callSiteBinder is null"); requireNonNull(type, "type is null"); Binding binding = callSiteBinder.bind(type, Type.class); return new SqlTypeBytecodeExpression(type, binding, BOOTSTRAP_METHOD); }
public static BytecodeExpression loadConstant(CallSiteBinder callSiteBinder, Object constant, Class<?> type) { Binding binding = callSiteBinder.bind(MethodHandles.constant(type, constant)); return loadConstant(binding); }
private List<String> generateExpression(String expressionPattern, Long value) { return formatExpression(expressionPattern, value, "bigint"); }
private void assertFilter(String filter, boolean expected) { addCallable(new AssertFilterTask(functionAssertions, filter, expected, false)); }
private void assertExecute(String expression, Type expectedType, Object expected) { addCallable(new AssertExecuteTask(functionAssertions, expression, expectedType, expected)); }
public BytecodeNode generate(RowExpression expression, Optional<Variable> outputBlockVariable, Optional<Class> lambdaInterface) { return rowExpressionCompiler.compile(expression, scope, outputBlockVariable, lambdaInterface); }
private List<String> generateExpression(String expressionPattern, Integer value) { return formatExpression(expressionPattern, value, "integer"); }
private void assertFilterWithNoInputColumns(String filter, boolean expected) { addCallable(new AssertFilterTask(functionAssertions, filter, expected, true)); }
private List<String> generateExpression(String expressionPattern, String value) { return formatExpression(expressionPattern, value, "varchar"); }
private List<String> generateExpression(String expressionPattern, Integer left, Double right) { return formatExpression(expressionPattern, left, "integer", right, "double"); }
private List<String> generateExpression(String expressionPattern, Integer first, Double second, Integer third) { return formatExpression(expressionPattern, first, "integer", second, "double", third, "integer"); }
private List<String> generateExpression(String expressionPattern, Double first, Double second, Integer third) { return formatExpression(expressionPattern, first, "double", second, "double", third, "integer"); }
private List<String> generateExpression(String expressionPattern, Integer left, Integer right) { return formatExpression(expressionPattern, left, "integer", right, "integer"); }
private List<String> generateExpression(String expressionPattern, Double left, Double right) { return formatExpression(expressionPattern, left, "double", right, "double"); }
private List<String> generateExpression(String expressionPattern, Double first, Long second, Double third) { return formatExpression(expressionPattern, first, "double", second, "bigint", third, "double"); }