@Override public void validateCall(SqlCall call, SqlValidator validator, SqlValidatorScope scope, SqlValidatorScope operandScope) { super.validateCall(call, validator, scope, operandScope); final SelectScope selectScope = SqlValidatorUtil.getEnclosingSelectScope(scope); assert selectScope != null; final SqlSelect select = selectScope.getNode(); if (!validator.isAggregate(select)) { throw validator.newValidationError(call, Static.RESOURCE.groupingInAggregate(getName())); } final AggregatingSelectScope aggregatingSelectScope = SqlValidatorUtil.getEnclosingAggregateSelectScope(scope); if (aggregatingSelectScope == null) { // We're probably in the GROUP BY clause throw validator.newValidationError(call, Static.RESOURCE.groupingInWrongClause(getName())); } for (SqlNode operand : call.getOperandList()) { if (scope instanceof OrderByScope) { operand = validator.expandOrderExpr(select, operand); } else { operand = validator.expand(operand, scope); } if (!aggregatingSelectScope.resolved.get().isGroupingExpr(operand)) { throw validator.newValidationError(operand, Static.RESOURCE.groupingArgument(getName())); } } }
SqlNode groupExpr) { final SqlNode expandedGroupExpr = scope.getValidator().expand(groupExpr, scope);
@Override public void validateCall(SqlCall call, SqlValidator validator, SqlValidatorScope scope, SqlValidatorScope operandScope) { super.validateCall(call, validator, scope, operandScope); final SelectScope selectScope = SqlValidatorUtil.getEnclosingSelectScope(scope); assert selectScope != null; final SqlSelect select = selectScope.getNode(); if (!validator.isAggregate(select)) { throw validator.newValidationError(call, Static.RESOURCE.groupingInAggregate(getName())); } final AggregatingSelectScope aggregatingSelectScope = SqlValidatorUtil.getEnclosingAggregateSelectScope(scope); if (aggregatingSelectScope == null) { // We're probably in the GROUP BY clause throw validator.newValidationError(call, Static.RESOURCE.groupingInWrongClause(getName())); } for (SqlNode operand : call.getOperandList()) { if (scope instanceof OrderByScope) { operand = validator.expandOrderExpr(select, operand); } else { operand = validator.expand(operand, scope); } if (!aggregatingSelectScope.resolved.get().isGroupingExpr(operand)) { throw validator.newValidationError(operand, Static.RESOURCE.groupingArgument(getName())); } } }
SqlNode groupExpr) { final SqlNode expandedGroupExpr = scope.getValidator().expand(groupExpr, scope);
final SqlNode expandedGroupExpr = validator.expand(expr, scope); final int ref = agg.lookupGroupExpr(expandedGroupExpr); if (ref >= 0) {
final SqlNode expandedGroupExpr = validator.expand(expr, scope); final int ref = agg.lookupGroupExpr(expandedGroupExpr); if (ref >= 0) {
final SqlNode expandedGroupExpr = validator.expand(expr, scope); final int ref = agg.lookupGroupExpr(expandedGroupExpr); if (ref >= 0) {
final SqlNode expandedGroupExpr = validator.expand(expr, scope); final int ref = agg.lookupGroupExpr(expandedGroupExpr); if (ref >= 0) {