kasakrisz commented on code in PR #5084:
URL: https://github.com/apache/hive/pull/5084#discussion_r1499289662


##########
hplsql/src/main/java/org/apache/hive/hplsql/functions/InMemoryFunctionRegistry.java:
##########
@@ -132,39 +133,84 @@ private boolean execProc(String name, 
HplsqlParser.Expr_func_paramsContext ctx)
   /**
    * Set parameters for user-defined function call
    */
-  public static void setCallParameters(String procName, 
HplsqlParser.Expr_func_paramsContext actual, ArrayList<Var> actualValues,
-                         HplsqlParser.Create_routine_paramsContext formal,
-                         HashMap<String, Var> out,
-                         Exec exec) {
-    if (actual == null || actual.func_param() == null || actualValues == null) 
{
+  public static void setCallParameters(String procName, 
HplsqlParser.Expr_func_paramsContext actual,
+      ArrayList<Var> actualValues, HplsqlParser.Create_routine_paramsContext 
formal, HashMap<String, Var> out,
+      Exec exec) {
+    // if it is a non-parameter function then just return.
+    if (actual == null && formal == null) {
       return;
     }
-    int actualCnt = actualValues.size();
-    int formalCnt = formal.create_routine_param_item().size();
-    if (formalCnt != actualCnt) {
-      throw new ArityException(actual.getParent(), procName, formalCnt, 
actualCnt);
+    int actualCnt = (actualValues == null) ? 0 : actualValues.size();
+    int passedParamCnt = actualCnt;
+    List<HplsqlParser.Create_routine_param_itemContext> routineParamItem = 
formal.create_routine_param_item();
+    int formalCnt = routineParamItem.size();
+    ParserRuleContext ruleContext = (actual == null) ? null : 
actual.getParent();

Review Comment:
   Is it possible that `actualValues` is null and `actual` is not null or vice 
versa?
   
   if not can we shortcut that code by checking whether any actual parameter 
passed and  extract the code part which handles the case when no actual 
parameter passed.
   
   It would help get rid of conditions like `(actual == null)`



-- 
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: gitbox-unsubscr...@hive.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org
For additional commands, e-mail: gitbox-h...@hive.apache.org

Reply via email to