Skip to content

Commit bc13e00

Browse files
committed
[CALCITE-4207] Validation fails for positional aggregate with current_date in 'case' expression
1 parent 88d1818 commit bc13e00

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -846,7 +846,7 @@ private static ImmutableBitSet analyzeGroupExpr(SqlValidatorScope scope,
846846
}
847847
}
848848

849-
final int ref = lookupGroupExpr(groupAnalyzer, groupExpr);
849+
final int ref = lookupGroupExpr(groupAnalyzer, expandedGroupExpr);
850850
if (expandedGroupExpr instanceof SqlIdentifier) {
851851
// SQL 2003 does not allow expressions of column references
852852
SqlIdentifier expr = (SqlIdentifier) expandedGroupExpr;

core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11685,6 +11685,19 @@ private void checkCustomColumnResolving(String table) {
1168511685
+ "MYFUN\\(<NUMERIC>, <NUMERIC>\\).*");
1168611686
}
1168711687

11688+
@Test void testPositionalAggregateWithExpandedCurrentDateFunction() {
11689+
SqlConformance defaultPlusOrdinalGroupBy =
11690+
new SqlDelegatingConformance(SqlConformanceEnum.DEFAULT) {
11691+
@Override public boolean isGroupByOrdinal() {
11692+
return true;
11693+
}
11694+
};
11695+
sql("SELECT HIREDATE >= CURRENT_DATE, COUNT(*) "
11696+
+ "FROM EMP GROUP BY 1")
11697+
.withConformance(defaultPlusOrdinalGroupBy)
11698+
.ok();
11699+
}
11700+
1168811701
@Test void testValidatorReportsOriginalQueryUsingReader()
1168911702
throws Exception {
1169011703
final String sql = "select a from b";

core/src/test/java/org/apache/calcite/test/catalog/Fixture.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ final class Fixture extends AbstractFixture {
3535
final RelDataType bigintType = sqlType(SqlTypeName.BIGINT);
3636
final RelDataType decimalType = sqlType(SqlTypeName.DECIMAL);
3737
final RelDataType varcharType = sqlType(SqlTypeName.VARCHAR);
38-
final RelDataType varcharTypeNull = sqlType(SqlTypeName.VARCHAR);
38+
final RelDataType varcharTypeNull = nullable(varcharType);
3939
final RelDataType varchar5Type = sqlType(SqlTypeName.VARCHAR, 5);
4040
final RelDataType varchar10Type = sqlType(SqlTypeName.VARCHAR, 10);
4141
final RelDataType varchar10TypeNull = nullable(varchar10Type);

0 commit comments

Comments
 (0)