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]

Reply via email to