This is an automated email from the ASF dual-hosted git repository.
Jackie-Jiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push:
new c35dee598c2 Move PinotDataType from pinot-common to pinot-spi (#18481)
c35dee598c2 is described below
commit c35dee598c2d312ed5fa9396e0ffe8ab99fd1e3b
Author: Xiaotian (Jackie) Jiang <[email protected]>
AuthorDate: Tue May 12 17:44:45 2026 -0700
Move PinotDataType from pinot-common to pinot-spi (#18481)
This makes PinotDataType reachable from pinot-spi-only modules (ColumnReader
etc.), so the SPI's value-type API can return a PinotDataType that already
encodes SV/MV + Java representation instead of pairing FieldSpec.DataType
with
a separate isSingleValue() flag.
The only pinot-common-specific coupling was the static helper
getPinotDataTypeForExecution(ColumnDataType) and its single caller
(PostAggregationFunction). The helper is moved onto ColumnDataType itself as
the instance method toPinotDataType(), so PinotDataType has no dependency on
pinot-common after the move.
22 import declarations across the codebase are updated to the new package;
two
checkstyle.xml entries that allow PinotDataType.* static imports are
updated to
the new path. PinotDataTypeTest moves alongside.
---
config/checkstyle.xml | 2 +-
.../pinot/common/function/FunctionInvoker.java | 2 +-
.../pinot/common/function/FunctionUtils.java | 2 +-
.../common/function/QueryFunctionInvoker.java | 3 +-
.../scalar/DataTypeConversionFunctions.java | 4 +-
.../common/request/context/LiteralContext.java | 2 +-
.../org/apache/pinot/common/utils/DataSchema.java | 60 ++++++++++++++++++--
.../evaluator/InbuiltFunctionEvaluatorTest.java | 2 +-
.../pinot/common/function/FunctionUtilsTest.java | 2 +-
.../function/ScalarTransformFunctionWrapper.java | 2 +-
.../postaggregation/PostAggregationFunction.java | 4 +-
.../FirstWithTimeAggregationFunctionTest.java | 2 +-
.../LastWithTimeAggregationFunctionTest.java | 2 +-
.../MinMaxRangeAggregationFunctionTest.java | 2 +-
.../function/ModeAggregationFunctionTest.java | 2 +-
.../org/apache/pinot/queries/FluentQueryTest.java | 2 +-
.../runtime/operator/operands/FunctionOperand.java | 2 +-
.../window/value/LagValueWindowFunction.java | 4 +-
.../window/value/LeadValueWindowFunction.java | 4 +-
.../DataTypeColumnTransformer.java | 2 +-
.../recordtransformer/DataTypeTransformer.java | 2 +-
.../stats/MapColumnPreIndexStatsCollector.java | 2 +-
.../defaultcolumn/BaseDefaultColumnHandler.java | 2 +-
.../local/utils/DataTypeTransformerUtils.java | 2 +-
.../org/apache/pinot/spi}/utils/PinotDataType.java | 64 ++--------------------
.../apache/pinot/spi}/utils/PinotDataTypeTest.java | 5 +-
26 files changed, 88 insertions(+), 96 deletions(-)
diff --git a/config/checkstyle.xml b/config/checkstyle.xml
index 98f215d0e3c..c7758c35eb8 100644
--- a/config/checkstyle.xml
+++ b/config/checkstyle.xml
@@ -140,7 +140,6 @@
org.apache.pinot.controller.recommender.rules.io.params.RecommenderConstants.RulesToExecute.*,
org.apache.pinot.controller.recommender.rules.utils.PredicateParseResult.*,
org.apache.pinot.client.utils.Constants.*,
- org.apache.pinot.common.utils.PinotDataType.*,
org.apache.pinot.segment.local.startree.StarTreeBuilderUtils.*,
org.apache.pinot.segment.local.startree.v2.store.StarTreeIndexMapUtils.*,
org.apache.pinot.segment.local.utils.GeometryType.*,
@@ -165,6 +164,7 @@
org.apache.pinot.spi.utils.CommonConstants.Server.*,
org.apache.pinot.spi.utils.CommonConstants.Server.SegmentCompletionProtocol.*,
org.apache.pinot.spi.utils.EqualityUtils.*,
+ org.apache.pinot.spi.utils.PinotDataType.*,
org.apache.pinot.tools.Quickstart.*"/>
</module>
<!-- Do not import 'sun' packages -->
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/FunctionInvoker.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/FunctionInvoker.java
index af0614df4b8..1a703baaa4f 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/FunctionInvoker.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/FunctionInvoker.java
@@ -25,7 +25,7 @@ import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import javax.annotation.Nullable;
-import org.apache.pinot.common.utils.PinotDataType;
+import org.apache.pinot.spi.utils.PinotDataType;
/**
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/FunctionUtils.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/FunctionUtils.java
index ab96dfd1b61..327deb23d5a 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/FunctionUtils.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/FunctionUtils.java
@@ -28,7 +28,7 @@ import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rel.type.RelDataTypeFactory;
import org.apache.calcite.sql.type.SqlTypeName;
import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
-import org.apache.pinot.common.utils.PinotDataType;
+import org.apache.pinot.spi.utils.PinotDataType;
public class FunctionUtils {
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/QueryFunctionInvoker.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/QueryFunctionInvoker.java
index 3c41cda767e..4d42817092b 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/QueryFunctionInvoker.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/QueryFunctionInvoker.java
@@ -21,8 +21,9 @@ package org.apache.pinot.common.function;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.annotation.Nullable;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.spi.exception.QueryErrorCode;
+import org.apache.pinot.spi.utils.PinotDataType;
+
/// Like [FunctionInvoker], but designed to be called from query engines.
///
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DataTypeConversionFunctions.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DataTypeConversionFunctions.java
index 17f8e82d076..e2aec943eb5 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DataTypeConversionFunctions.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DataTypeConversionFunctions.java
@@ -21,13 +21,13 @@ package org.apache.pinot.common.function.scalar;
import com.google.common.base.Preconditions;
import java.math.BigDecimal;
import java.util.Base64;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.spi.annotations.ScalarFunction;
import org.apache.pinot.spi.utils.BigDecimalUtils;
import org.apache.pinot.spi.utils.BytesUtils;
+import org.apache.pinot.spi.utils.PinotDataType;
import org.apache.pinot.spi.utils.TimestampUtils;
-import static org.apache.pinot.common.utils.PinotDataType.*;
+import static org.apache.pinot.spi.utils.PinotDataType.*;
/**
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/request/context/LiteralContext.java
b/pinot-common/src/main/java/org/apache/pinot/common/request/context/LiteralContext.java
index c0a55f23f56..7a78c987702 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/request/context/LiteralContext.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/request/context/LiteralContext.java
@@ -26,11 +26,11 @@ import java.util.Arrays;
import java.util.Objects;
import javax.annotation.Nullable;
import org.apache.pinot.common.request.Literal;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.common.utils.request.RequestUtils;
import org.apache.pinot.spi.data.FieldSpec.DataType;
import org.apache.pinot.spi.utils.BigDecimalUtils;
import org.apache.pinot.spi.utils.CommonConstants.NullValuePlaceHolder;
+import org.apache.pinot.spi.utils.PinotDataType;
/**
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/utils/DataSchema.java
b/pinot-common/src/main/java/org/apache/pinot/common/utils/DataSchema.java
index be5768a3d41..315c3c9e6ce 100644
--- a/pinot-common/src/main/java/org/apache/pinot/common/utils/DataSchema.java
+++ b/pinot-common/src/main/java/org/apache/pinot/common/utils/DataSchema.java
@@ -50,6 +50,7 @@ import org.apache.pinot.spi.utils.ByteArray;
import org.apache.pinot.spi.utils.BytesUtils;
import org.apache.pinot.spi.utils.CommonConstants.NullValuePlaceHolder;
import org.apache.pinot.spi.utils.EqualityUtils;
+import org.apache.pinot.spi.utils.PinotDataType;
import static java.nio.charset.StandardCharsets.UTF_8;
@@ -290,16 +291,16 @@ public class DataSchema {
return typeFactory.createSqlType(SqlTypeName.VARCHAR);
}
},
- MAP(NullValuePlaceHolder.MAP) {
+ BYTES(NullValuePlaceHolder.INTERNAL_BYTES) {
@Override
public RelDataType toType(RelDataTypeFactory typeFactory) {
- return typeFactory.createSqlType(SqlTypeName.MAP);
+ return typeFactory.createSqlType(SqlTypeName.VARBINARY);
}
},
- BYTES(NullValuePlaceHolder.INTERNAL_BYTES) {
+ MAP(NullValuePlaceHolder.MAP) {
@Override
public RelDataType toType(RelDataTypeFactory typeFactory) {
- return typeFactory.createSqlType(SqlTypeName.VARBINARY);
+ return typeFactory.createSqlType(SqlTypeName.MAP);
}
},
OBJECT(null) {
@@ -946,6 +947,57 @@ public class DataSchema {
}
}
+ /// Returns the [PinotDataType] for this [ColumnDataType] for query
execution purpose. Returns primitive array
+ /// type for multi-valued types.
+ public PinotDataType toPinotDataType() {
+ switch (this) {
+ case INT:
+ return PinotDataType.INTEGER;
+ case LONG:
+ return PinotDataType.LONG;
+ case FLOAT:
+ return PinotDataType.FLOAT;
+ case DOUBLE:
+ return PinotDataType.DOUBLE;
+ case BIG_DECIMAL:
+ return PinotDataType.BIG_DECIMAL;
+ case BOOLEAN:
+ return PinotDataType.BOOLEAN;
+ case TIMESTAMP:
+ return PinotDataType.TIMESTAMP;
+ case STRING:
+ return PinotDataType.STRING;
+ case JSON:
+ return PinotDataType.JSON;
+ case BYTES:
+ return PinotDataType.BYTES;
+ case MAP:
+ return PinotDataType.MAP;
+ case OBJECT:
+ return PinotDataType.OBJECT;
+ case INT_ARRAY:
+ return PinotDataType.PRIMITIVE_INT_ARRAY;
+ case LONG_ARRAY:
+ return PinotDataType.PRIMITIVE_LONG_ARRAY;
+ case FLOAT_ARRAY:
+ return PinotDataType.PRIMITIVE_FLOAT_ARRAY;
+ case DOUBLE_ARRAY:
+ return PinotDataType.PRIMITIVE_DOUBLE_ARRAY;
+ case BIG_DECIMAL_ARRAY:
+ return PinotDataType.BIG_DECIMAL_ARRAY;
+ case BOOLEAN_ARRAY:
+ return PinotDataType.PRIMITIVE_BOOLEAN_ARRAY;
+ case TIMESTAMP_ARRAY:
+ return PinotDataType.TIMESTAMP_ARRAY;
+ case STRING_ARRAY:
+ return PinotDataType.STRING_ARRAY;
+ case BYTES_ARRAY:
+ return PinotDataType.BYTES_ARRAY;
+ default:
+ throw new IllegalStateException("Cannot convert ColumnDataType: " +
this + " to PinotDataType");
+ }
+ }
+
public abstract RelDataType toType(RelDataTypeFactory typeFactory);
}
}
diff --git
a/pinot-common/src/test/java/org/apache/pinot/common/evaluator/InbuiltFunctionEvaluatorTest.java
b/pinot-common/src/test/java/org/apache/pinot/common/evaluator/InbuiltFunctionEvaluatorTest.java
index aa37a6a826a..116517a6c79 100644
---
a/pinot-common/src/test/java/org/apache/pinot/common/evaluator/InbuiltFunctionEvaluatorTest.java
+++
b/pinot-common/src/test/java/org/apache/pinot/common/evaluator/InbuiltFunctionEvaluatorTest.java
@@ -20,8 +20,8 @@ package org.apache.pinot.common.evaluator;
import java.util.Collections;
import org.apache.pinot.common.function.FunctionUtils;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.spi.data.readers.GenericRow;
+import org.apache.pinot.spi.utils.PinotDataType;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.testng.annotations.Test;
diff --git
a/pinot-common/src/test/java/org/apache/pinot/common/function/FunctionUtilsTest.java
b/pinot-common/src/test/java/org/apache/pinot/common/function/FunctionUtilsTest.java
index 7dc41f656b7..47f8ab86f95 100644
---
a/pinot-common/src/test/java/org/apache/pinot/common/function/FunctionUtilsTest.java
+++
b/pinot-common/src/test/java/org/apache/pinot/common/function/FunctionUtilsTest.java
@@ -26,7 +26,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
-import org.apache.pinot.common.utils.PinotDataType;
+import org.apache.pinot.spi.utils.PinotDataType;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
diff --git
a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ScalarTransformFunctionWrapper.java
b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ScalarTransformFunctionWrapper.java
index 86a5e2d8c24..b3795a8dc61 100644
---
a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ScalarTransformFunctionWrapper.java
+++
b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ScalarTransformFunctionWrapper.java
@@ -28,13 +28,13 @@ import org.apache.pinot.common.function.FunctionInfo;
import org.apache.pinot.common.function.FunctionUtils;
import org.apache.pinot.common.function.QueryFunctionInvoker;
import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.core.operator.ColumnContext;
import org.apache.pinot.core.operator.blocks.ValueBlock;
import org.apache.pinot.core.operator.transform.TransformResultMetadata;
import org.apache.pinot.spi.data.FieldSpec.DataType;
import org.apache.pinot.spi.utils.ByteArray;
import org.apache.pinot.spi.utils.CommonConstants.NullValuePlaceHolder;
+import org.apache.pinot.spi.utils.PinotDataType;
/**
diff --git
a/pinot-core/src/main/java/org/apache/pinot/core/query/postaggregation/PostAggregationFunction.java
b/pinot-core/src/main/java/org/apache/pinot/core/query/postaggregation/PostAggregationFunction.java
index 4497ea90362..d91c19e841e 100644
---
a/pinot-core/src/main/java/org/apache/pinot/core/query/postaggregation/PostAggregationFunction.java
+++
b/pinot-core/src/main/java/org/apache/pinot/core/query/postaggregation/PostAggregationFunction.java
@@ -26,7 +26,7 @@ import org.apache.pinot.common.function.FunctionRegistry;
import org.apache.pinot.common.function.FunctionUtils;
import org.apache.pinot.common.function.QueryFunctionInvoker;
import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
-import org.apache.pinot.common.utils.PinotDataType;
+import org.apache.pinot.spi.utils.PinotDataType;
/**
@@ -68,7 +68,7 @@ public class PostAggregationFunction {
}
_argumentTypes = new PinotDataType[numArguments];
for (int i = 0; i < numArguments; i++) {
- _argumentTypes[i] =
PinotDataType.getPinotDataTypeForExecution(argumentTypes[i]);
+ _argumentTypes[i] = argumentTypes[i].toPinotDataType();
}
}
}
diff --git
a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/FirstWithTimeAggregationFunctionTest.java
b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/FirstWithTimeAggregationFunctionTest.java
index 541b007d478..e70c55e473f 100644
---
a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/FirstWithTimeAggregationFunctionTest.java
+++
b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/FirstWithTimeAggregationFunctionTest.java
@@ -19,11 +19,11 @@
package org.apache.pinot.core.query.aggregation.function;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.queries.FluentQueryTest;
import org.apache.pinot.spi.config.table.TableType;
import org.apache.pinot.spi.data.FieldSpec;
import org.apache.pinot.spi.data.Schema;
+import org.apache.pinot.spi.utils.PinotDataType;
import org.apache.pinot.spi.utils.builder.TableConfigBuilder;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
diff --git
a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/LastWithTimeAggregationFunctionTest.java
b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/LastWithTimeAggregationFunctionTest.java
index 9c612ae5382..61c5250a609 100644
---
a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/LastWithTimeAggregationFunctionTest.java
+++
b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/LastWithTimeAggregationFunctionTest.java
@@ -19,11 +19,11 @@
package org.apache.pinot.core.query.aggregation.function;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.queries.FluentQueryTest;
import org.apache.pinot.spi.config.table.TableType;
import org.apache.pinot.spi.data.FieldSpec;
import org.apache.pinot.spi.data.Schema;
+import org.apache.pinot.spi.utils.PinotDataType;
import org.apache.pinot.spi.utils.builder.TableConfigBuilder;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
diff --git
a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/MinMaxRangeAggregationFunctionTest.java
b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/MinMaxRangeAggregationFunctionTest.java
index dd02bc7f710..ce7158352e0 100644
---
a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/MinMaxRangeAggregationFunctionTest.java
+++
b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/MinMaxRangeAggregationFunctionTest.java
@@ -19,10 +19,10 @@
package org.apache.pinot.core.query.aggregation.function;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.queries.FluentQueryTest;
import org.apache.pinot.spi.data.FieldSpec;
import org.apache.pinot.spi.data.Schema;
+import org.apache.pinot.spi.utils.PinotDataType;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
diff --git
a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/ModeAggregationFunctionTest.java
b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/ModeAggregationFunctionTest.java
index fb637bedc1b..b5b105d1e1d 100644
---
a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/ModeAggregationFunctionTest.java
+++
b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/ModeAggregationFunctionTest.java
@@ -19,10 +19,10 @@
package org.apache.pinot.core.query.aggregation.function;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.queries.FluentQueryTest;
import org.apache.pinot.spi.config.table.FieldConfig;
import org.apache.pinot.spi.data.FieldSpec;
+import org.apache.pinot.spi.utils.PinotDataType;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
diff --git
a/pinot-core/src/test/java/org/apache/pinot/queries/FluentQueryTest.java
b/pinot-core/src/test/java/org/apache/pinot/queries/FluentQueryTest.java
index dd2fe54981f..9b68d5c0d34 100644
--- a/pinot-core/src/test/java/org/apache/pinot/queries/FluentQueryTest.java
+++ b/pinot-core/src/test/java/org/apache/pinot/queries/FluentQueryTest.java
@@ -41,7 +41,6 @@ import org.apache.commons.csv.CSVPrinter;
import org.apache.pinot.common.response.BrokerResponse;
import org.apache.pinot.common.response.broker.BrokerResponseNative;
import org.apache.pinot.common.utils.DataSchema;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.plugin.inputformat.csv.CSVRecordReaderConfig;
import
org.apache.pinot.segment.local.indexsegment.immutable.ImmutableSegmentLoader;
import org.apache.pinot.segment.local.segment.creator.SegmentTestUtils;
@@ -54,6 +53,7 @@ import org.apache.pinot.spi.config.table.TableConfig;
import org.apache.pinot.spi.data.FieldSpec;
import org.apache.pinot.spi.data.Schema;
import org.apache.pinot.spi.data.readers.FileFormat;
+import org.apache.pinot.spi.utils.PinotDataType;
import org.apache.pinot.spi.utils.ReadMode;
import org.intellij.lang.annotations.Language;
import org.testng.Assert;
diff --git
a/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/operands/FunctionOperand.java
b/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/operands/FunctionOperand.java
index 259ad4ef0f3..c9d01d0f8cd 100644
---
a/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/operands/FunctionOperand.java
+++
b/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/operands/FunctionOperand.java
@@ -29,9 +29,9 @@ import org.apache.pinot.common.function.FunctionUtils;
import org.apache.pinot.common.function.QueryFunctionInvoker;
import org.apache.pinot.common.utils.DataSchema;
import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.query.planner.logical.RexExpression;
import org.apache.pinot.query.runtime.operator.utils.TypeUtils;
+import org.apache.pinot.spi.utils.PinotDataType;
/*
diff --git
a/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/window/value/LagValueWindowFunction.java
b/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/window/value/LagValueWindowFunction.java
index 1e583bf11c6..5604ab2df62 100644
---
a/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/window/value/LagValueWindowFunction.java
+++
b/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/window/value/LagValueWindowFunction.java
@@ -23,7 +23,6 @@ import java.util.Arrays;
import java.util.List;
import org.apache.calcite.rel.RelFieldCollation;
import org.apache.pinot.common.utils.DataSchema;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.query.planner.logical.RexExpression;
import org.apache.pinot.query.runtime.operator.window.WindowFrame;
@@ -64,8 +63,7 @@ public class LagValueWindowFunction extends
ValueWindowFunction {
if (srcDataType != destDataType) {
// Convert the default value to the same data type as the input
column
// (e.g. convert INT to LONG, FLOAT to DOUBLE, etc.
- defaultValue =
PinotDataType.getPinotDataTypeForExecution(destDataType)
- .convert(defaultValue,
PinotDataType.getPinotDataTypeForExecution(srcDataType));
+ defaultValue = destDataType.toPinotDataType().convert(defaultValue,
srcDataType.toPinotDataType());
}
}
}
diff --git
a/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/window/value/LeadValueWindowFunction.java
b/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/window/value/LeadValueWindowFunction.java
index 4ec6c641e4b..aa1d4807910 100644
---
a/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/window/value/LeadValueWindowFunction.java
+++
b/pinot-query-runtime/src/main/java/org/apache/pinot/query/runtime/operator/window/value/LeadValueWindowFunction.java
@@ -23,7 +23,6 @@ import java.util.Arrays;
import java.util.List;
import org.apache.calcite.rel.RelFieldCollation;
import org.apache.pinot.common.utils.DataSchema;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.query.planner.logical.RexExpression;
import org.apache.pinot.query.runtime.operator.window.WindowFrame;
@@ -64,8 +63,7 @@ public class LeadValueWindowFunction extends
ValueWindowFunction {
if (srcDataType != destDataType) {
// Convert the default value to the same data type as the input
column
// (e.g. convert INT to LONG, FLOAT to DOUBLE, etc.
- defaultValue =
PinotDataType.getPinotDataTypeForExecution(destDataType)
- .convert(defaultValue,
PinotDataType.getPinotDataTypeForExecution(srcDataType));
+ defaultValue = destDataType.toPinotDataType().convert(defaultValue,
srcDataType.toPinotDataType());
}
}
}
diff --git
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/columntransformer/DataTypeColumnTransformer.java
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/columntransformer/DataTypeColumnTransformer.java
index cb13642f2c6..f4c1f99ce32 100644
---
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/columntransformer/DataTypeColumnTransformer.java
+++
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/columntransformer/DataTypeColumnTransformer.java
@@ -18,7 +18,6 @@
*/
package org.apache.pinot.segment.local.columntransformer;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.common.utils.ThrottledLogger;
import org.apache.pinot.segment.local.utils.DataTypeTransformerUtils;
import org.apache.pinot.spi.columntransformer.ColumnTransformer;
@@ -26,6 +25,7 @@ import org.apache.pinot.spi.config.table.TableConfig;
import org.apache.pinot.spi.config.table.ingestion.IngestionConfig;
import org.apache.pinot.spi.data.FieldSpec;
import org.apache.pinot.spi.data.readers.ColumnReader;
+import org.apache.pinot.spi.utils.PinotDataType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/recordtransformer/DataTypeTransformer.java
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/recordtransformer/DataTypeTransformer.java
index 9d8b6f7bbcc..cd951cbdd51 100644
---
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/recordtransformer/DataTypeTransformer.java
+++
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/recordtransformer/DataTypeTransformer.java
@@ -21,7 +21,6 @@ package org.apache.pinot.segment.local.recordtransformer;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.common.utils.ThrottledLogger;
import org.apache.pinot.segment.local.utils.DataTypeTransformerUtils;
import org.apache.pinot.spi.config.table.TableConfig;
@@ -30,6 +29,7 @@ import org.apache.pinot.spi.data.FieldSpec;
import org.apache.pinot.spi.data.Schema;
import org.apache.pinot.spi.data.readers.GenericRow;
import org.apache.pinot.spi.recordtransformer.RecordTransformer;
+import org.apache.pinot.spi.utils.PinotDataType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/creator/impl/stats/MapColumnPreIndexStatsCollector.java
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/creator/impl/stats/MapColumnPreIndexStatsCollector.java
index c845c73cd80..d5fc5564731 100644
---
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/creator/impl/stats/MapColumnPreIndexStatsCollector.java
+++
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/creator/impl/stats/MapColumnPreIndexStatsCollector.java
@@ -24,7 +24,6 @@ import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Map;
import javax.annotation.Nullable;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.segment.spi.creator.StatsCollectorConfig;
import org.apache.pinot.segment.spi.index.FieldIndexConfigs;
import org.apache.pinot.segment.spi.index.FieldIndexConfigsUtil;
@@ -36,6 +35,7 @@ import org.apache.pinot.spi.data.FieldSpec;
import org.apache.pinot.spi.data.Schema;
import org.apache.pinot.spi.utils.JsonUtils;
import org.apache.pinot.spi.utils.MapUtils;
+import org.apache.pinot.spi.utils.PinotDataType;
import org.apache.pinot.spi.utils.builder.TableConfigBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/defaultcolumn/BaseDefaultColumnHandler.java
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/defaultcolumn/BaseDefaultColumnHandler.java
index e41c80dc8b8..d76b6209ca4 100644
---
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/defaultcolumn/BaseDefaultColumnHandler.java
+++
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/defaultcolumn/BaseDefaultColumnHandler.java
@@ -33,7 +33,6 @@ import java.util.Map;
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.pinot.common.evaluator.FunctionEvaluatorFactory;
import org.apache.pinot.common.function.FunctionUtils;
-import org.apache.pinot.common.utils.PinotDataType;
import org.apache.pinot.segment.local.segment.creator.impl.BaseSegmentCreator;
import
org.apache.pinot.segment.local.segment.creator.impl.SegmentDictionaryCreator;
import
org.apache.pinot.segment.local.segment.creator.impl.fwd.MultiValueUnsortedForwardIndexCreator;
@@ -83,6 +82,7 @@ import org.apache.pinot.spi.data.FieldSpec;
import org.apache.pinot.spi.data.FieldSpec.DataType;
import org.apache.pinot.spi.data.Schema;
import org.apache.pinot.spi.function.FunctionEvaluator;
+import org.apache.pinot.spi.utils.PinotDataType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/DataTypeTransformerUtils.java
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/DataTypeTransformerUtils.java
index 37abe6677e6..7711c537242 100644
---
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/DataTypeTransformerUtils.java
+++
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/DataTypeTransformerUtils.java
@@ -26,7 +26,7 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
-import org.apache.pinot.common.utils.PinotDataType;
+import org.apache.pinot.spi.utils.PinotDataType;
/**
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/utils/PinotDataType.java
b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/PinotDataType.java
similarity index 96%
rename from
pinot-common/src/main/java/org/apache/pinot/common/utils/PinotDataType.java
rename to pinot-spi/src/main/java/org/apache/pinot/spi/utils/PinotDataType.java
index f18afec273c..e4bbc0ba9ab 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/utils/PinotDataType.java
+++ b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/PinotDataType.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.pinot.common.utils;
+package org.apache.pinot.spi.utils;
import com.fasterxml.jackson.core.JsonParseException;
import java.io.IOException;
@@ -30,16 +30,8 @@ import java.util.Collection;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.lang3.ArrayUtils;
-import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
import org.apache.pinot.spi.data.FieldSpec;
import org.apache.pinot.spi.data.FieldSpec.DataType;
-import org.apache.pinot.spi.utils.BigDecimalUtils;
-import org.apache.pinot.spi.utils.BooleanUtils;
-import org.apache.pinot.spi.utils.BytesUtils;
-import org.apache.pinot.spi.utils.JsonUtils;
-import org.apache.pinot.spi.utils.MapUtils;
-import org.apache.pinot.spi.utils.TimestampUtils;
-import org.apache.pinot.spi.utils.UuidUtils;
/**
@@ -1975,13 +1967,13 @@ public enum PinotDataType {
return fieldSpec.isSingleValueField() ? BOOLEAN : BOOLEAN_ARRAY;
case TIMESTAMP:
return fieldSpec.isSingleValueField() ? TIMESTAMP : TIMESTAMP_ARRAY;
+ case STRING:
+ return fieldSpec.isSingleValueField() ? STRING : STRING_ARRAY;
case JSON:
if (fieldSpec.isSingleValueField()) {
return JSON;
}
throw new IllegalStateException("There is no multi-value type for
JSON");
- case STRING:
- return fieldSpec.isSingleValueField() ? STRING : STRING_ARRAY;
case BYTES:
return fieldSpec.isSingleValueField() ? BYTES : BYTES_ARRAY;
case MAP:
@@ -1990,55 +1982,7 @@ public enum PinotDataType {
}
throw new IllegalStateException("There is no multi-value type for
MAP");
default:
- throw new UnsupportedOperationException(
- "Unsupported data type: " + dataType + " in field: " +
fieldSpec.getName());
- }
- }
-
- /**
- * Returns the {@link PinotDataType} for the given {@link ColumnDataType}
for query execution purpose. Returns
- * primitive array type for multi-valued types.
- */
- public static PinotDataType getPinotDataTypeForExecution(ColumnDataType
columnDataType) {
- switch (columnDataType) {
- case INT:
- return INTEGER;
- case LONG:
- return LONG;
- case FLOAT:
- return FLOAT;
- case DOUBLE:
- return DOUBLE;
- case BIG_DECIMAL:
- return BIG_DECIMAL;
- case BOOLEAN:
- return BOOLEAN;
- case TIMESTAMP:
- return TIMESTAMP;
- case STRING:
- return STRING;
- case JSON:
- return JSON;
- case BYTES:
- return BYTES;
- case OBJECT:
- return OBJECT;
- case INT_ARRAY:
- return PRIMITIVE_INT_ARRAY;
- case LONG_ARRAY:
- return PRIMITIVE_LONG_ARRAY;
- case FLOAT_ARRAY:
- return PRIMITIVE_FLOAT_ARRAY;
- case DOUBLE_ARRAY:
- return PRIMITIVE_DOUBLE_ARRAY;
- case BIG_DECIMAL_ARRAY:
- return BIG_DECIMAL_ARRAY;
- case STRING_ARRAY:
- return STRING_ARRAY;
- case BYTES_ARRAY:
- return BYTES_ARRAY;
- default:
- throw new IllegalStateException("Cannot convert ColumnDataType: " +
columnDataType + " to PinotDataType");
+ throw new IllegalStateException("Unsupported data type: " + dataType);
}
}
}
diff --git
a/pinot-common/src/test/java/org/apache/pinot/common/utils/PinotDataTypeTest.java
b/pinot-spi/src/test/java/org/apache/pinot/spi/utils/PinotDataTypeTest.java
similarity index 99%
rename from
pinot-common/src/test/java/org/apache/pinot/common/utils/PinotDataTypeTest.java
rename to
pinot-spi/src/test/java/org/apache/pinot/spi/utils/PinotDataTypeTest.java
index 537538b7dce..d1929798c7c 100644
---
a/pinot-common/src/test/java/org/apache/pinot/common/utils/PinotDataTypeTest.java
+++ b/pinot-spi/src/test/java/org/apache/pinot/spi/utils/PinotDataTypeTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.pinot.common.utils;
+package org.apache.pinot.spi.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import java.math.BigDecimal;
@@ -28,12 +28,11 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
-import org.apache.pinot.spi.utils.JsonUtils;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.apache.pinot.common.utils.PinotDataType.*;
+import static org.apache.pinot.spi.utils.PinotDataType.*;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]