private void setResult(int i, VectorizedRowBatch b) throws HiveException {

    // get arguments
    for (int j = 0; j < argDescs.length; j++) {
      deferredChildren[j] = argDescs[j].getDeferredJavaObject(i, b, j, writers);
    }

    // call function
    Object result;
    if (!suppressEvaluateExceptions) {
      result = genericUDF.evaluate(deferredChildren);
    } else {
      try {
        result = genericUDF.evaluate(deferredChildren);
      } catch (HiveException e) {

        /* For UDFs that expect primitive types (like int instead of Integer or IntWritable),
         * this will catch the the exception that happens if they are passed a NULL value.
         * Then the default NULL handling logic will apply, and the result will be NULL.
         */
        result = null;
      }
    }

    // Set output column vector entry.  Since we have one output column, the logical index = 0.
    outputVectorAssignRow.assignRowColumn(
        b, /* batchIndex */ i, /* logicalColumnIndex */ 0, result);
  }
A VectorUDFAdaptor is a vectorized expression for invoking a custom
UDF on zero or more input vectors or constants which are the function arguments.
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/udf/VectorUDFAdaptor.java