This is an automated email from the ASF dual-hosted git repository.
siddteotia 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 71a6e6379b adding in OBJECT type resolver (#8608)
71a6e6379b is described below
commit 71a6e6379b9cfaef02b756c9442763e15c334220
Author: Rong Rong <[email protected]>
AuthorDate: Thu Apr 28 13:04:44 2022 -0700
adding in OBJECT type resolver (#8608)
Co-authored-by: Rong Rong <[email protected]>
---
.../main/java/org/apache/pinot/common/function/FunctionUtils.java | 3 +++
.../src/main/java/org/apache/pinot/common/utils/PinotDataType.java | 5 +++++
.../test/java/org/apache/pinot/common/utils/PinotDataTypeTest.java | 1 -
.../core/query/postaggregation/PostAggregationFunctionTest.java | 5 +++++
4 files changed, 13 insertions(+), 1 deletion(-)
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 8ccc087b2e..de2d0d4a2e 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
@@ -51,6 +51,7 @@ public class FunctionUtils {
put(float[].class, PinotDataType.PRIMITIVE_FLOAT_ARRAY);
put(double[].class, PinotDataType.PRIMITIVE_DOUBLE_ARRAY);
put(String[].class, PinotDataType.STRING_ARRAY);
+ put(Object.class, PinotDataType.OBJECT);
}};
// Types allowed as the function argument (actual value passed into the
function) for type conversion
@@ -75,6 +76,7 @@ public class FunctionUtils {
put(double[].class, PinotDataType.PRIMITIVE_DOUBLE_ARRAY);
put(Double[].class, PinotDataType.DOUBLE_ARRAY);
put(String[].class, PinotDataType.STRING_ARRAY);
+ put(Object.class, PinotDataType.OBJECT);
}};
private static final Map<Class<?>, DataType> DATA_TYPE_MAP = new
HashMap<Class<?>, DataType>() {{
@@ -117,6 +119,7 @@ public class FunctionUtils {
put(float[].class, ColumnDataType.FLOAT_ARRAY);
put(double[].class, ColumnDataType.DOUBLE_ARRAY);
put(String[].class, ColumnDataType.STRING_ARRAY);
+ put(Object.class, ColumnDataType.OBJECT);
}};
/**
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/utils/PinotDataType.java
b/pinot-common/src/main/java/org/apache/pinot/common/utils/PinotDataType.java
index 5b36f2da4e..bd7503a2b6 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/utils/PinotDataType.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/utils/PinotDataType.java
@@ -682,6 +682,11 @@ public enum PinotDataType {
public byte[] toBytes(Object value) {
throw new UnsupportedOperationException("Cannot convert value from
OBJECT to BYTES");
}
+
+ @Override
+ public Object convert(Object value, PinotDataType sourceType) {
+ return value;
+ }
},
BYTE_ARRAY {
diff --git
a/pinot-common/src/test/java/org/apache/pinot/common/utils/PinotDataTypeTest.java
b/pinot-common/src/test/java/org/apache/pinot/common/utils/PinotDataTypeTest.java
index 61ba0731bf..002d1dcdc0 100644
---
a/pinot-common/src/test/java/org/apache/pinot/common/utils/PinotDataTypeTest.java
+++
b/pinot-common/src/test/java/org/apache/pinot/common/utils/PinotDataTypeTest.java
@@ -309,7 +309,6 @@ public class PinotDataTypeTest {
assertInvalidConversion(null, sourceType, BYTE,
UnsupportedOperationException.class);
assertInvalidConversion(null, sourceType, CHARACTER,
UnsupportedOperationException.class);
assertInvalidConversion(null, sourceType, SHORT,
UnsupportedOperationException.class);
- assertInvalidConversion(null, sourceType, OBJECT,
UnsupportedOperationException.class);
assertInvalidConversion(null, sourceType, BYTE_ARRAY,
UnsupportedOperationException.class);
assertInvalidConversion(null, sourceType, CHARACTER_ARRAY,
UnsupportedOperationException.class);
assertInvalidConversion(null, sourceType, SHORT_ARRAY,
UnsupportedOperationException.class);
diff --git
a/pinot-core/src/test/java/org/apache/pinot/core/query/postaggregation/PostAggregationFunctionTest.java
b/pinot-core/src/test/java/org/apache/pinot/core/query/postaggregation/PostAggregationFunctionTest.java
index 90f70e1764..2cea4564f8 100644
---
a/pinot-core/src/test/java/org/apache/pinot/core/query/postaggregation/PostAggregationFunctionTest.java
+++
b/pinot-core/src/test/java/org/apache/pinot/core/query/postaggregation/PostAggregationFunctionTest.java
@@ -58,5 +58,10 @@ public class PostAggregationFunctionTest {
assertEquals(function.invoke(
new
Object[]{GeometrySerializer.serialize(GeometryUtils.GEOMETRY_FACTORY.createPoint(new
Coordinate(10, 20)))}),
"POINT (10 20)");
+
+ // Cast
+ function = new PostAggregationFunction("cast", new
ColumnDataType[]{ColumnDataType.INT, ColumnDataType.STRING});
+ assertEquals(function.getResultType(), ColumnDataType.OBJECT);
+ assertEquals(function.invoke(new Object[]{1, "LONG"}), 1L);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]