Copilot commented on code in PR #16306:
URL: https://github.com/apache/pinot/pull/16306#discussion_r2212266172


##########
pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/JsonExtractKeyTransformFunction.java:
##########
@@ -90,8 +102,24 @@ public String[][] transformToStringValuesMV(ValueBlock 
valueBlock) {
     initStringValuesMV(length);
     String[] jsonStrings = 
_jsonFieldTransformFunction.transformToStringValuesSV(valueBlock);
     for (int i = 0; i < length; i++) {
-      List<String> values = 
JSON_PARSER_CONTEXT.parse(jsonStrings[i]).read(_jsonPath);
-      _stringValuesMV[i] = values.toArray(new String[0]);
+      // Call the appropriate JsonFunctions method based on available 
parameters
+      List values;

Review Comment:
   [nitpick] Use a parameterized type (`List<String>`) instead of a raw `List` 
for `values` to improve type safety.
   ```suggestion
         List<String> values;
   ```



##########
pinot-common/src/main/java/org/apache/pinot/sql/parsers/ParserUtils.java:
##########
@@ -77,15 +77,25 @@ private static void 
validateJsonExtractScalarFunction(List<Expression> operands)
   }
 
   private static void validateJsonExtractKeyFunction(List<Expression> 
operands) {
-    // Check that there are exactly 2 arguments
-    if (operands.size() != 2) {
+    // Check that there are 2, 3, or 4 arguments
+    if (operands.size() < 2 || operands.size() > 3) {
       throw new SqlCompilationException(
-          "Expect 2 arguments are required for transform function: 
jsonExtractKey(jsonFieldName, 'jsonPath')");
+          "2, or 3 arguments are required for transform function: "

Review Comment:
   [nitpick] The error message reads "2, or 3 arguments are required"—remove 
the comma for clarity: "2 or 3 arguments are required".
   ```suggestion
             "2 or 3 arguments are required for transform function: "
   ```



##########
pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/JsonExtractKeyTransformFunction.java:
##########
@@ -63,10 +61,11 @@ public String getName() {
   @Override
   public void init(List<TransformFunction> arguments, Map<String, 
ColumnContext> columnContextMap) {
     super.init(arguments, columnContextMap);
-    // Check that there are exactly 2 arguments
-    if (arguments.size() != 2) {
+    // Check that there are 2, 3, or 4 arguments
+    if (arguments.size() < 2 || arguments.size() > 4) {

Review Comment:
   The arity check allows up to 4 arguments but only 2 or 3 are supported. 
Change the upper bound to > 3 to reject four or more arguments.
   ```suggestion
       // Check that there are 2 or 3 arguments
       if (arguments.size() < 2 || arguments.size() > 3) {
   ```



-- 
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