public static Expression convert(Expression operand, Type toType) { final Type fromType = operand.getType(); return convert(operand, fromType, toType); }
public static Expression convert(Expression operand, Type toType) { final Type fromType = operand.getType(); return convert(operand, fromType, toType); }
public Expression implementResult(AggContext info, AggResultContext result) { return RexToLixTranslator.convert(result.accumulator().get(1), info.returnType()); } }
public Expression implementResult(AggContext info, AggResultContext result) { return RexToLixTranslator.convert(result.accumulator().get(1), info.returnType()); } }
public Expression field(Expression expression, int field, Type fromType, Type fieldType) { final MethodCallExpression e = Expressions.call(expression, BuiltInMethod.LIST_GET.method, Expressions.constant(field)); if (fromType == null) { fromType = e.getType(); } return RexToLixTranslator.convert(e, fromType, fieldType); } },
public Expression field(Expression expression, int field, Type fromType, Type fieldType) { final Expression e = Expressions.call(expression, BuiltInMethod.ROW_VALUE.method, Expressions.constant(field)); if (fromType == null) { fromType = e.getType(); } return RexToLixTranslator.convert(e, fromType, fieldType); } },
public Expression field(Expression expression, int field, Type fromType, Type fieldType) { final Expression e = Expressions.call(expression, BuiltInMethod.ROW_VALUE.method, Expressions.constant(field)); if (fromType == null) { fromType = e.getType(); } return RexToLixTranslator.convert(e, fromType, fieldType); } },
public Expression field(Expression expression, int field, Type fromType, Type fieldType) { final IndexExpression e = Expressions.arrayIndex(expression, Expressions.constant(field)); if (fromType == null) { fromType = e.getType(); } return RexToLixTranslator.convert(e, fromType, fieldType); } };
public Expression field(Expression expression, int field, Type fromType, Type fieldType) { final MethodCallExpression e = Expressions.call(expression, BuiltInMethod.LIST_GET.method, Expressions.constant(field)); if (fromType == null) { fromType = e.getType(); } return RexToLixTranslator.convert(e, fromType, fieldType); } },
public Expression field(Expression expression, int field, Type fromType, Type fieldType) { final IndexExpression e = Expressions.arrayIndex(expression, Expressions.constant(field)); if (fromType == null) { fromType = e.getType(); } return RexToLixTranslator.convert(e, fromType, fieldType); } };
public Expression field(BlockBuilder list, int index, Type storageType) { MethodCallExpression recFromCtx = Expressions.call( DataContext.ROOT, BuiltInMethod.DATA_CONTEXT_GET.method, Expressions.constant("inputRecord")); Expression recFromCtxCasted = RexToLixTranslator.convert(recFromCtx, Object[].class); IndexExpression recordAccess = Expressions.arrayIndex(recFromCtxCasted, Expressions.constant(index)); if (storageType == null) { final RelDataType fieldType = rowType.getFieldList().get(index).getType(); storageType = ((JavaTypeFactory) typeFactory).getJavaClass(fieldType); } return RexToLixTranslator.convert(recordAccess, storageType); } }
public Expression field(BlockBuilder list, int index, Type storageType) { MethodCallExpression recFromCtx = Expressions.call( DataContext.ROOT, BuiltInMethod.DATA_CONTEXT_GET.method, Expressions.constant("inputRecord")); Expression recFromCtxCasted = RexToLixTranslator.convert(recFromCtx, Object[].class); IndexExpression recordAccess = Expressions.arrayIndex(recFromCtxCasted, Expressions.constant(index)); if (storageType == null) { final RelDataType fieldType = rowType.getFieldList().get(index).getType(); storageType = ((JavaTypeFactory) typeFactory).getJavaClass(fieldType); } return RexToLixTranslator.convert(recordAccess, storageType); } }
/** Translates a parameter. */ private Expression translateParameter(RexDynamicParam expr, RexImpTable.NullAs nullAs, Type storageType) { if (storageType == null) { storageType = typeFactory.getJavaClass(expr.getType()); } return nullAs.handle( convert( Expressions.call(root, BuiltInMethod.DATA_CONTEXT_GET.method, Expressions.constant("?" + expr.getIndex())), storageType)); }
/** Translates a parameter. */ private Expression translateParameter(RexDynamicParam expr, RexImpTable.NullAs nullAs, Type storageType) { if (storageType == null) { storageType = typeFactory.getJavaClass(expr.getType()); } return nullAs.handle( convert( Expressions.call(root, BuiltInMethod.DATA_CONTEXT_GET.method, Expressions.constant("?" + expr.getIndex())), storageType)); }
private static Object coerce(Object o, RelDataType type) { if (o == null) { return null; } if (!(type instanceof RelDataTypeFactoryImpl.JavaType)) { return null; } final RelDataTypeFactoryImpl.JavaType javaType = (RelDataTypeFactoryImpl.JavaType) type; final Class clazz = javaType.getJavaClass(); //noinspection unchecked if (clazz.isAssignableFrom(o.getClass())) { return o; } if (clazz == String.class && o instanceof NlsString) { return ((NlsString) o).getValue(); } // We need optimization here for constant folding. // Not all the expressions can be interpreted (e.g. ternary), so // we rely on optimization capabilities to fold non-interpretable // expressions. BlockBuilder bb = new BlockBuilder(); final Expression expr = RexToLixTranslator.convert(Expressions.constant(o), clazz); bb.add(Expressions.return_(null, expr)); final FunctionExpression convert = Expressions.lambda(bb.toBlock(), Collections.emptyList()); return convert.compile().dynamicInvoke(); }
RexToLixTranslator.convert(res, agg.result.getType())); builder.add( Expressions.statement(Expressions.assign(agg.result, aggRes)));
RexToLixTranslator.convert(res, agg.result.getType())); builder.add( Expressions.statement(Expressions.assign(agg.result, aggRes)));
private static Object coerce(Object o, RelDataType type) { if (o == null) { return null; } if (!(type instanceof RelDataTypeFactoryImpl.JavaType)) { return null; } final RelDataTypeFactoryImpl.JavaType javaType = (RelDataTypeFactoryImpl.JavaType) type; final Class clazz = javaType.getJavaClass(); //noinspection unchecked if (clazz.isAssignableFrom(o.getClass())) { return o; } if (clazz == String.class && o instanceof NlsString) { return ((NlsString) o).getValue(); } // We need optimization here for constant folding. // Not all the expressions can be interpreted (e.g. ternary), so // we rely on optimization capabilities to fold non-interpretable // expressions. BlockBuilder bb = new BlockBuilder(); final Expression expr = RexToLixTranslator.convert(Expressions.constant(o), clazz); bb.add(Expressions.return_(null, expr)); final FunctionExpression convert = Expressions.lambda(bb.toBlock(), Collections.emptyList()); return convert.compile().dynamicInvoke(); }
public final Expression implementResult(AggContext info, final AggResultContext result) { if (!needTrackEmptySet) { return RexToLixTranslator.convert( implementNotNullResult(info, result), info.returnType()); Expression nonNull = RexToLixTranslator.convert( implementNotNullResult(info, result), info.returnType()); result.exitBlock();
public final Expression implementResult(AggContext info, final AggResultContext result) { if (!needTrackEmptySet) { return RexToLixTranslator.convert( implementNotNullResult(info, result), info.returnType()); Expression nonNull = RexToLixTranslator.convert( implementNotNullResult(info, result), info.returnType()); result.exitBlock();