/** * Creates a NewExpression that represents calling the * parameterless constructor of the specified type. */ public static NewExpression new_(Type type) { return new_(type, ImmutableList.of()); }
/** * Creates a NewExpression that represents calling the specified * constructor that takes no arguments. */ public static NewExpression new_(Constructor constructor) { return new_(constructor.getDeclaringClass(), ImmutableList.of()); }
public Expression visit(NewExpression newExpression, List<Expression> arguments, List<MemberDeclaration> memberDeclarations) { return arguments.equals(newExpression.arguments) && Objects.equals(memberDeclarations, newExpression.memberDeclarations) ? newExpression : Expressions.new_(newExpression.type, arguments, memberDeclarations); }
public Expression record( Type javaRowClass, List<Expression> expressions) { switch (expressions.size()) { case 0: assert javaRowClass == Unit.class; return Expressions.field(null, javaRowClass, "INSTANCE"); default: return Expressions.new_(javaRowClass, expressions); } }
public Expression record( Type javaRowClass, List<Expression> expressions) { switch (expressions.size()) { case 0: assert javaRowClass == Unit.class; return Expressions.field(null, javaRowClass, "INSTANCE"); default: return Expressions.new_(javaRowClass, expressions); } }
/** * Creates a NewExpression that represents calling the specified * constructor with the specified arguments. * * <p>The members that access the constructor initialized fields are * specified. */ public static NewExpression new_(Constructor constructor, Iterable<? extends Expression> expressions, Iterable<? extends MemberDeclaration> memberDeclarations) { return new_(constructor.getDeclaringClass(), toList(expressions), toList(memberDeclarations)); }
/** * Creates a NewExpression that represents calling the specified * constructor with the specified arguments, using varargs. * * <p>The members that access the constructor initialized fields are * specified. */ public static NewExpression new_(Constructor constructor, Iterable<? extends Expression> expressions, MemberDeclaration... memberDeclarations) { return new_(constructor.getDeclaringClass(), toList(expressions), toList(memberDeclarations)); }
public Expression implement(RexToLixTranslator translator, RexCall call, List<Expression> translatedOperands) { translatedOperands = EnumUtils.fromInternal(method.getParameterTypes(), translatedOperands); if ((method.getModifiers() & Modifier.STATIC) != 0) { return Expressions.call(method, translatedOperands); } else { // The UDF class must have a public zero-args constructor. // Assume that the validator checked already. final Expression target = Expressions.new_(method.getDeclaringClass()); return Expressions.call(target, method, translatedOperands); } }
public Expression implement(RexToLixTranslator translator, RexCall call, List<Expression> translatedOperands) { translatedOperands = EnumUtils.fromInternal(method.getParameterTypes(), translatedOperands); if ((method.getModifiers() & Modifier.STATIC) != 0) { return Expressions.call(method, translatedOperands); } else { // The UDF class must have a public zero-args constructor. // Assume that the validator checked already. final Expression target = Expressions.new_(method.getDeclaringClass()); return Expressions.call(target, method, translatedOperands); } }
@Override public void implementReset(AggContext info, AggResetContext reset) { reset.currentBlock().add( Expressions.statement( Expressions.assign(reset.accumulator().get(0), Expressions.new_(HashMap.class)))); }
@Override public void implementReset(AggContext info, AggResetContext reset) { reset.currentBlock().add( Expressions.statement( Expressions.assign(reset.accumulator().get(0), Expressions.new_(ArrayList.class)))); }
@Override protected void implementNotNullReset(AggContext info, AggResetContext reset) { // acc[0] = new ArrayList(); reset.currentBlock().add( Expressions.statement( Expressions.assign(reset.accumulator().get(0), Expressions.new_(ArrayList.class)))); }
@Override protected void implementNotNullReset(AggContext info, AggResetContext reset) { // acc[0] = new ArrayList(); reset.currentBlock().add( Expressions.statement( Expressions.assign(reset.accumulator().get(0), Expressions.new_(ArrayList.class)))); }
@Override protected void implementNotNullReset(AggContext info, AggResetContext reset) { // acc[0] = new ArrayList(); reset.currentBlock().add( Expressions.statement( Expressions.assign(reset.accumulator().get(0), Expressions.new_(ArrayList.class)))); }
@Override protected void implementNotNullReset(AggContext info, AggResetContext reset) { // acc[0] = new ArrayList(); reset.currentBlock().add( Expressions.statement( Expressions.assign(reset.accumulator().get(0), Expressions.new_(ArrayList.class)))); }
@Override protected void implementNotNullReset(AggContext info, AggResetContext reset) { List<Expression> acc = reset.accumulator(); if (!afi.isStatic) { reset.currentBlock().add( Expressions.statement( Expressions.assign(acc.get(1), Expressions.new_(afi.declaringClass)))); } reset.currentBlock().add( Expressions.statement( Expressions.assign(acc.get(0), Expressions.call(afi.isStatic ? null : acc.get(1), afi.initMethod)))); }
@Override protected void implementNotNullReset(AggContext info, AggResetContext reset) { List<Expression> acc = reset.accumulator(); if (!afi.isStatic) { reset.currentBlock().add( Expressions.statement( Expressions.assign(acc.get(1), Expressions.new_(afi.declaringClass)))); } reset.currentBlock().add( Expressions.statement( Expressions.assign(acc.get(0), Expressions.call(afi.isStatic ? null : acc.get(1), afi.initMethod)))); }
public void implementAdd(AggContext info, AggAddContext add) { List<Expression> acc = add.accumulator(); Expression flag = acc.get(0); add.currentBlock().add( Expressions.ifThen(flag, Expressions.throw_( Expressions.new_(IllegalStateException.class, Expressions.constant("more than one value in agg " + info.aggregation()))))); add.currentBlock().add( Expressions.statement( Expressions.assign(flag, Expressions.constant(true)))); add.currentBlock().add( Expressions.statement( Expressions.assign(acc.get(1), add.arguments().get(0)))); }
public void implementAdd(AggContext info, AggAddContext add) { List<Expression> acc = add.accumulator(); Expression flag = acc.get(0); add.currentBlock().add( Expressions.ifThen(flag, Expressions.throw_( Expressions.new_(IllegalStateException.class, Expressions.constant("more than one value in agg " + info.aggregation()))))); add.currentBlock().add( Expressions.statement( Expressions.assign(flag, Expressions.constant(true)))); add.currentBlock().add( Expressions.statement( Expressions.assign(acc.get(1), add.arguments().get(0)))); }
public Result implement(EnumerableRelImplementor implementor, Prefer pref) { final JavaTypeFactory typeFactory = implementor.getTypeFactory(); final BlockBuilder builder = new BlockBuilder(); final PhysType physType = PhysTypeImpl.of(typeFactory, getRowType(), JavaRowFormat.ARRAY); final Expression interpreter_ = builder.append("interpreter", Expressions.new_(Interpreter.class, implementor.getRootExpression(), implementor.stash(getInput(), RelNode.class))); final Expression sliced_ = getRowType().getFieldCount() == 1 ? Expressions.call(BuiltInMethod.SLICE0.method, interpreter_) : interpreter_; builder.add(sliced_); return implementor.result(physType, builder.toBlock()); } }