LakshSingla commented on a change in pull request #11968:
URL: https://github.com/apache/druid/pull/11968#discussion_r754830577



##########
File path: 
sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidRexExecutor.java
##########
@@ -145,7 +146,31 @@ public void reduce(
           }
         } else if (sqlTypeName == SqlTypeName.ARRAY) {
           assert exprResult.isArray();
-          literal = 
rexBuilder.makeLiteral(Arrays.asList(exprResult.asArray()), constExp.getType(), 
true);
+          if 
(SqlTypeName.NUMERIC_TYPES.contains(constExp.getType().getComponentType().getSqlTypeName()))
 {
+            if (exprResult.type().getElementType().is(ExprType.LONG)) {
+              List<BigDecimal> resultAsBigDecimalList = 
Arrays.stream(exprResult.asLongArray())
+                                                              
.map(BigDecimal::valueOf)
+                                                              
.collect(Collectors.toList());
+              literal = rexBuilder.makeLiteral(resultAsBigDecimalList, 
constExp.getType(), true);
+            } else {

Review comment:
       An else case is required to stop the "Variable might not have been 
initialized" exception from cropping up, and I didn't want to provide a 
failsafe else block. In case when it's not an array 
(https://github.com/LakshSingla/druid/blob/4dcdb2d68563302a9b4d387cdbb220ec4f3a59b3/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidRexExecutor.java#L130),
 it was using the `else` case as well, that's why I omitted the `else if`.
   One approach  can be to initialize the `literal` to null and then including 
your suggestion. Let me know if that seems better, and I can add that in a 
separate commit.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to