soumitra-st commented on code in PR #12673: URL: https://github.com/apache/pinot/pull/12673#discussion_r1530610070
########## pinot-common/src/main/java/org/apache/pinot/common/function/scalar/ArrayFunctions.java: ########## @@ -230,7 +230,7 @@ public static String arrayElementAtString(String[] arr, int idx) { @ScalarFunction(names = {"array", "arrayValueConstructor"}, isVarArg = true) public static Object arrayValueConstructor(Object... arr) { - if (arr.length == 0) { + if (arr == null || arr.length == 0 || arr[0] == null) { Review Comment: Firstly, to give the context: foo(String... args) { args == null // foo(null) args.length == 0 // foo() args[0] == null // String bar = null; foo(bar) In this specific case, if arr[0] == null, the code below (`arr[0].getClass()`) will cause null pointer exception, hence the additional checks is an improvement. I didn't follow why it would change the semantics. I have tried to only add the additional checks in places which can cause NPE, vs changing all varargs usages in the codebase. -- 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: commits-unsubscr...@pinot.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org