private static RexNode makeConstructorCall( SqlRexContext cx, SqlFunction constructor, List<RexNode> exprs) { final RexBuilder rexBuilder = cx.getRexBuilder(); RelDataType type = rexBuilder.deriveReturnType(constructor, exprs); int n = type.getFieldCount(); ImmutableList.Builder<RexNode> initializationExprs = ImmutableList.builder(); for (int i = 0; i < n; ++i) { initializationExprs.add( cx.getDefaultValueFactory().newAttributeInitializer( type, constructor, i, exprs)); } List<RexNode> defaultCasts = RexUtil.generateCastExpressions( rexBuilder, type, initializationExprs.build()); return rexBuilder.makeNewInvocation(type, defaultCasts); }
private static RexNode makeConstructorCall( SqlRexContext cx, SqlFunction constructor, List<RexNode> exprs) { final RexBuilder rexBuilder = cx.getRexBuilder(); final RelDataTypeFactory typeFactory = cx.getTypeFactory(); RelDataType type = rexBuilder.deriveReturnType( constructor, typeFactory, exprs); int n = type.getFieldCount(); ImmutableList.Builder<RexNode> initializationExprs = ImmutableList.builder(); for (int i = 0; i < n; ++i) { initializationExprs.add( cx.getDefaultValueFactory().newAttributeInitializer( type, constructor, i, exprs)); } List<RexNode> defaultCasts = RexUtil.generateCastExpressions( rexBuilder, type, initializationExprs.build()); return rexBuilder.makeNewInvocation(type, defaultCasts); }