Skip to content

Commit a8be094

Browse files
ihuzenkoamaliujia
authored andcommitted
[CALCITE-4207] Validation fails for positional aggregate with current_date in 'case' expression
1 parent 1b43091 commit a8be094

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
@@ -11684,6 +11684,19 @@ private void checkCustomColumnResolving(String table) {
1168411684
+ "MYFUN\\(<NUMERIC>, <NUMERIC>\\).*");
1168511685
}
1168611686

11687+
@Test void testPositionalAggregateWithExpandedCurrentDateFunction() {
11688+
SqlConformance defaultPlusOrdinalGroupBy =
11689+
new SqlDelegatingConformance(SqlConformanceEnum.DEFAULT) {
11690+
@Override public boolean isGroupByOrdinal() {
11691+
return true;
11692+
}
11693+
};
11694+
sql("SELECT HIREDATE >= CURRENT_DATE, COUNT(*) "
11695+
+ "FROM EMP GROUP BY 1")
11696+
.withConformance(defaultPlusOrdinalGroupBy)
11697+
.ok();
11698+
}
11699+
1168711700
@Test void testValidatorReportsOriginalQueryUsingReader()
1168811701
throws Exception {
1168911702
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)