[CALCITE-1333] JdbcAggregate should check SqlKind instead SqlAggFunction (Minji Kim)
diff --git a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcRules.java b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcRules.java
index a1a786d..03c36c1 100644
--- a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcRules.java
+++ b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcRules.java
@@ -69,7 +69,7 @@
import org.apache.calcite.schema.ModifiableTable;
import org.apache.calcite.sql.SqlAggFunction;
import org.apache.calcite.sql.SqlDialect;
-import org.apache.calcite.sql.fun.SqlStdOperatorTable;
+import org.apache.calcite.sql.SqlKind;
import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.Util;
import org.apache.calcite.util.trace.CalciteTrace;
@@ -109,18 +109,18 @@
new JdbcValuesRule(out));
}
- static final ImmutableList<SqlAggFunction> AGG_FUNCS;
- static final ImmutableList<SqlAggFunction> MYSQL_AGG_FUNCS;
+ static final ImmutableList<SqlKind> AGG_FUNCS;
+ static final ImmutableList<SqlKind> MYSQL_AGG_FUNCS;
static {
- ImmutableList.Builder<SqlAggFunction> builder = ImmutableList.builder();
- builder.add(SqlStdOperatorTable.COUNT);
- builder.add(SqlStdOperatorTable.SUM);
- builder.add(SqlStdOperatorTable.SUM0);
- builder.add(SqlStdOperatorTable.MIN);
- builder.add(SqlStdOperatorTable.MAX);
+ ImmutableList.Builder<SqlKind> builder = ImmutableList.builder();
+ builder.add(SqlKind.COUNT);
+ builder.add(SqlKind.SUM);
+ builder.add(SqlKind.SUM0);
+ builder.add(SqlKind.MIN);
+ builder.add(SqlKind.MAX);
AGG_FUNCS = builder.build();
- builder.add(SqlStdOperatorTable.SINGLE_VALUE);
+ builder.add(SqlKind.SINGLE_VALUE);
MYSQL_AGG_FUNCS = builder.build();
}
@@ -476,13 +476,12 @@
/** Returns whether this JDBC data source can implement a given aggregate
* function. */
- private static boolean canImplement(SqlAggFunction aggregation,
- SqlDialect sqlDialect) {
+ private static boolean canImplement(SqlAggFunction aggregation, SqlDialect sqlDialect) {
switch (sqlDialect.getDatabaseProduct()) {
case MYSQL:
- return MYSQL_AGG_FUNCS.contains(aggregation);
+ return MYSQL_AGG_FUNCS.contains(aggregation.getKind());
default:
- return AGG_FUNCS.contains(aggregation);
+ return AGG_FUNCS.contains(aggregation.getKind());
}
}