/** * Creates a name for a new variable, unique within this block, controlling * whether the variable can be inlined later. */ private String newName(String suggestion, boolean optimize) { if (!optimize && !suggestion.startsWith("_")) { // "_" prefix reminds us not to consider the variable for inlining suggestion = '_' + suggestion; } return newName(suggestion); }
private Expression append_(String name, Expression expression, boolean optimize) { if (isSimpleExpression(expression)) { // already simple; no need to declare a variable or // even to evaluate the expression return expression; } if (optimizing && optimize) { DeclarationStatement decl = getComputedExpression(expression); if (decl != null) { return decl.parameter; } } DeclarationStatement declare = Expressions.declare(Modifier.FINAL, newName(name, optimize), expression); add(declare); return declare.parameter; }
list.newName(unboxVarName)); list.add(Expressions.declare(Modifier.FINAL, unboxed, nullHandled));
list.newName(unboxVarName)); list.add(Expressions.declare(Modifier.FINAL, unboxed, nullHandled));
: (result.accumulator().get(0) + "$Res"); ParameterExpression res = Expressions.parameter(0, info.returnType(), result.currentBlock().newName(tmpName));
result.currentBlock().newName(isLead ? "lead" : "lag"));
result.currentBlock().newName(isLead ? "lead" : "lag"));
: (result.accumulator().get(0) + "$Res"); ParameterExpression res = Expressions.parameter(0, info.returnType(), result.currentBlock().newName(tmpName));
if (hasOrderedCall) { ParameterExpression pe = Expressions.parameter(List.class, builder.newName("sourceSorters")); builder.add( Expressions.declare(0, pe, Expressions.new_(LinkedList.class))); builder.newName("accumulatorAdders")); builder.add( Expressions.declare(0, pe, Expressions.new_(LinkedList.class)));
public Expression implementResult(AggContext info, AggResultContext result) { WinAggResultContext winResult = (WinAggResultContext) result; List<RexNode> rexArgs = winResult.rexArguments(); ParameterExpression res = Expressions.parameter(0, info.returnType(), result.currentBlock().newName("nth")); RexToLixTranslator currentRowTranslator = winResult.rowTranslator( winResult.computeIndex(Expressions.constant(0), SeekType.START)); Expression dstIndex = winResult.computeIndex( Expressions.subtract( currentRowTranslator.translate(rexArgs.get(1), int.class), Expressions.constant(1)), SeekType.START); Expression rowInRange = winResult.rowInPartition(dstIndex); BlockBuilder thenBlock = result.nestBlock(); Expression nthValue = winResult.rowTranslator(dstIndex) .translate(rexArgs.get(0), res.type); thenBlock.add(Expressions.statement(Expressions.assign(res, nthValue))); result.exitBlock(); BlockStatement thenBranch = thenBlock.toBlock(); Expression defaultValue = getDefaultValue(res.type); result.currentBlock().add(Expressions.declare(0, res, null)); result.currentBlock().add( Expressions.ifThenElse(rowInRange, thenBranch, Expressions.statement(Expressions.assign(res, defaultValue)))); return res; } }
public Expression implementResult(AggContext info, AggResultContext result) { WinAggResultContext winResult = (WinAggResultContext) result; List<RexNode> rexArgs = winResult.rexArguments(); ParameterExpression res = Expressions.parameter(0, info.returnType(), result.currentBlock().newName("nth")); RexToLixTranslator currentRowTranslator = winResult.rowTranslator( winResult.computeIndex(Expressions.constant(0), SeekType.START)); Expression dstIndex = winResult.computeIndex( Expressions.subtract( currentRowTranslator.translate(rexArgs.get(1), int.class), Expressions.constant(1)), SeekType.START); Expression rowInRange = winResult.rowInPartition(dstIndex); BlockBuilder thenBlock = result.nestBlock(); Expression nthValue = winResult.rowTranslator(dstIndex) .translate(rexArgs.get(0), res.type); thenBlock.add(Expressions.statement(Expressions.assign(res, nthValue))); result.exitBlock(); BlockStatement thenBranch = thenBlock.toBlock(); Expression defaultValue = getDefaultValue(res.type); result.currentBlock().add(Expressions.declare(0, res, null)); result.currentBlock().add( Expressions.ifThenElse(rowInRange, thenBranch, Expressions.statement(Expressions.assign(res, defaultValue)))); return res; } }
final ParameterExpression v_ = Expressions.parameter(inputPhysType.getJavaRowType(), builder2.newName("v"));
final ParameterExpression resultSet_ = Expressions.parameter(Modifier.FINAL, ResultSet.class, builder.newName("resultSet")); final SqlDialect.CalendarPolicy calendarPolicy = jdbcConvention.dialect.getCalendarPolicy(); Expressions.parameter(Object.class, builder.newName("value")); builder.add(Expressions.declare(Modifier.FINAL, value_, null)); generateGet(implementor, physType, builder, resultSet_, 0, value_, Expressions.parameter(SQLException.class, builder.newName("e")); final Expression rowBuilderFactory_ = builder0.append("rowBuilderFactory",
final ParameterExpression v_ = Expressions.parameter(inputPhysType.getJavaRowType(), builder2.newName("v"));
final ParameterExpression collectionParameter = Expressions.parameter(Collection.class, builder.newName("collection")); final Expression expression = table.getExpression(ModifiableTable.class); assert expression != null; // TODO: user error in validator
final ParameterExpression collectionParameter = Expressions.parameter(Collection.class, builder.newName("collection")); final Expression expression = table.getExpression(ModifiableTable.class); assert expression != null; // TODO: user error in validator
final ParameterExpression resultSet_ = Expressions.parameter(Modifier.FINAL, ResultSet.class, builder.newName("resultSet")); final SqlDialect.CalendarPolicy calendarPolicy = jdbcConvention.dialect.getCalendarPolicy(); Expressions.parameter(Object.class, builder.newName("value")); builder.add(Expressions.declare(Modifier.FINAL, value_, null)); generateGet(implementor, physType, builder, resultSet_, 0, value_, Expressions.parameter(SQLException.class, builder.newName("e")); final Expression rowBuilderFactory_ = builder0.append("rowBuilderFactory",