diff --git a/core/src/main/java/org/opensearch/sql/calcite/utils/OpenSearchTypeFactory.java b/core/src/main/java/org/opensearch/sql/calcite/utils/OpenSearchTypeFactory.java index eec5447cba..a60408ccda 100644 --- a/core/src/main/java/org/opensearch/sql/calcite/utils/OpenSearchTypeFactory.java +++ b/core/src/main/java/org/opensearch/sql/calcite/utils/OpenSearchTypeFactory.java @@ -33,12 +33,13 @@ import org.opensearch.sql.data.model.ExprValueUtils; import org.opensearch.sql.data.type.ExprCoreType; import org.opensearch.sql.data.type.ExprType; +import org.opensearch.sql.executor.OpenSearchTypeSystem; import org.opensearch.sql.storage.Table; /** This class is used to create RelDataType and map RelDataType to Java data type */ public class OpenSearchTypeFactory extends JavaTypeFactoryImpl { public static final OpenSearchTypeFactory TYPE_FACTORY = - new OpenSearchTypeFactory(RelDataTypeSystem.DEFAULT); + new OpenSearchTypeFactory(OpenSearchTypeSystem.INSTANCE); private OpenSearchTypeFactory(RelDataTypeSystem typeSystem) { super(typeSystem); diff --git a/core/src/main/java/org/opensearch/sql/executor/OpenSearchTypeSystem.java b/core/src/main/java/org/opensearch/sql/executor/OpenSearchTypeSystem.java index aba30bf2fc..1e92576543 100644 --- a/core/src/main/java/org/opensearch/sql/executor/OpenSearchTypeSystem.java +++ b/core/src/main/java/org/opensearch/sql/executor/OpenSearchTypeSystem.java @@ -16,14 +16,13 @@ public class OpenSearchTypeSystem extends RelDataTypeSystemImpl { private OpenSearchTypeSystem() {} + @Override public RelDataType deriveAvgAggType(RelDataTypeFactory typeFactory, RelDataType argumentType) { - switch (argumentType.getSqlTypeName()) { - case INTEGER: - case BIGINT: - return typeFactory.createSqlType(SqlTypeName.DOUBLE); - - default: - return super.deriveSumType(typeFactory, argumentType); + if (SqlTypeName.INT_TYPES.contains(argumentType.getSqlTypeName())) { + return typeFactory.createTypeWithNullability( + typeFactory.createSqlType(SqlTypeName.DOUBLE), false); + } else { + return argumentType; } } } diff --git a/integ-test/src/test/java/org/opensearch/sql/calcite/standalone/CalcitePPLSortIT.java b/integ-test/src/test/java/org/opensearch/sql/calcite/standalone/CalcitePPLSortIT.java index 6f82afe168..2100efaa3d 100644 --- a/integ-test/src/test/java/org/opensearch/sql/calcite/standalone/CalcitePPLSortIT.java +++ b/integ-test/src/test/java/org/opensearch/sql/calcite/standalone/CalcitePPLSortIT.java @@ -8,10 +8,11 @@ import static org.opensearch.sql.legacy.TestsConstants.TEST_INDEX_BANK; import java.io.IOException; +import org.junit.Ignore; import org.junit.jupiter.api.Test; /** testSortXXAndXX could fail. TODO Remove this @Ignore when the issue fixed. */ -// @Ignore +@Ignore public class CalcitePPLSortIT extends CalcitePPLIntegTestCase { @Override