/** * Validates an item in the GROUP BY clause of a SELECT statement. * * @param select Select statement * @param groupByItem GROUP BY clause item */ private void validateGroupByItem(SqlSelect select, SqlNode groupByItem) { final SqlValidatorScope groupByScope = getGroupScope(select); groupByScope.validateExpr(groupByItem); }
/** * Validates an expression. * * @param expr Expression * @param scope Scope in which expression occurs */ private void validateExpr(SqlNode expr, SqlValidatorScope scope) { if (expr instanceof SqlCall) { final SqlOperator op = ((SqlCall) expr).getOperator(); if (op.isAggregator() && op.requiresOver()) { throw newValidationError(expr, RESOURCE.absentOverClause()); } } // Call on the expression to validate itself. expr.validateExpr(this, scope); // Perform any validation specific to the scope. For example, an // aggregating scope requires that expressions are valid aggregations. scope.validateExpr(expr); }
public void validateExpr(SqlNode expr) { SqlNode expanded = validator.expandOrderExpr(select, expr); // expression needs to be valid in parent scope too parent.validateExpr(expanded); } }
public void validateExpr(SqlNode expr) { SqlNode expanded = validator.expandGroupByOrHavingExpr(expr, this, select, false); // expression needs to be valid in parent scope too parent.validateExpr(expanded); } }
public void validateExpr(SqlNode expr) { SqlNode expanded = validator.expandOrderExpr(select, expr); // expression needs to be valid in parent scope too parent.validateExpr(expanded); } }
/** * Validates an item in the GROUP BY clause of a SELECT statement. * * @param select Select statement * @param groupByItem GROUP BY clause item */ private void validateGroupByItem(SqlSelect select, SqlNode groupByItem) { final SqlValidatorScope groupByScope = getGroupScope(select); groupByScope.validateExpr(groupByItem); }
/** * Validates an item in the GROUP BY clause of a SELECT statement. * * @param select Select statement * @param groupByItem GROUP BY clause item */ private void validateGroupByItem(SqlSelect select, SqlNode groupByItem) { final SqlValidatorScope groupByScope = getGroupScope(select); groupByScope.validateExpr(groupByItem); }
public void validateExpr(SqlNode expr) { SqlNode expanded = validator.expandGroupByOrHavingExpr(expr, this, select, false); // expression needs to be valid in parent scope too parent.validateExpr(expanded); } }
/** * Validates an expression. * * @param expr Expression * @param scope Scope in which expression occurs */ private void validateExpr(SqlNode expr, SqlValidatorScope scope) { if (expr instanceof SqlCall) { final SqlOperator op = ((SqlCall) expr).getOperator(); if (op.isAggregator() && op.requiresOver()) { throw newValidationError(expr, RESOURCE.absentOverClause()); } } // Call on the expression to validate itself. expr.validateExpr(this, scope); // Perform any validation specific to the scope. For example, an // aggregating scope requires that expressions are valid aggregations. scope.validateExpr(expr); }
/** * Validates an expression. * * @param expr Expression * @param scope Scope in which expression occurs */ private void validateExpr(SqlNode expr, SqlValidatorScope scope) { if (expr instanceof SqlCall) { final SqlOperator op = ((SqlCall) expr).getOperator(); if (op.isAggregator() && op.requiresOver()) { throw newValidationError(expr, RESOURCE.absentOverClause()); } } // Call on the expression to validate itself. expr.validateExpr(this, scope); // Perform any validation specific to the scope. For example, an // aggregating scope requires that expressions are valid aggregations. scope.validateExpr(expr); }