RexOver rexOverNode = (RexOver) r; for (RexNode operand : rexOverNode.getOperands()) { if (operand instanceof RexInputRef && ((RexInputRef)operand).getIndex() >= groupingFields) {
RexOver rexOverNode = (RexOver) r; for (RexNode operand : rexOverNode.getOperands()) { if (operand instanceof RexInputRef && ((RexInputRef)operand).getIndex() >= groupingFields) {
@Override public Boolean visitOver(RexOver over) { return list(over.getOperands()); }
RexOver rexOverNode = (RexOver) r; for (RexNode operand : rexOverNode.getOperands()) { if (operand instanceof RexInputRef && ((RexInputRef)operand).getIndex() >= groupingFields) {
private SqlCall toSql(RexProgram program, RexOver rexOver) { final RexWindow rexWindow = rexOver.getWindow(); final SqlNodeList partitionList = new SqlNodeList( toSql(program, rexWindow.partitionKeys), POS); ImmutableList.Builder<SqlNode> orderNodes = ImmutableList.builder(); if (rexWindow.orderKeys != null) { for (RexFieldCollation rfc : rexWindow.orderKeys) { orderNodes.add(toSql(program, rfc)); } } final SqlNodeList orderList = new SqlNodeList(orderNodes.build(), POS); final SqlLiteral isRows = SqlLiteral.createBoolean(rexWindow.isRows(), POS); final SqlNode lowerBound = createSqlWindowBound(rexWindow.getLowerBound()); final SqlNode upperBound = createSqlWindowBound(rexWindow.getUpperBound()); // null defaults to true. // During parsing the allowPartial == false (e.g. disallow partial) // is expand into CASE expression and is handled as a such. // Not sure if we can collapse this CASE expression back into // "disallow partial" and set the allowPartial = false. final SqlLiteral allowPartial = null; final SqlWindow sqlWindow = SqlWindow.create(null, null, partitionList, orderList, isRows, lowerBound, upperBound, allowPartial, POS); final List<SqlNode> nodeList = toSql(program, rexOver.getOperands()); return createOverCall(rexOver.getAggOperator(), nodeList, sqlWindow); }
orderList, isRows, lowerBound, upperBound, allowPartial, POS); final List<SqlNode> nodeList = toSql(program, rexOver.getOperands()); final SqlCall aggFunctionCall = rexOver.getAggOperator().createCall(POS, nodeList);