private void validateAndSetupResultExprStr(MatchPath evaluator,
        List<PTFExpressionDef> args,
        int argsNum) throws SemanticException {
      PTFExpressionDef resultExprArg = args.get(argsNum - 1);
      ObjectInspector resultExprArgOI = resultExprArg.getOI();

      if ( !ObjectInspectorUtils.isConstantObjectInspector(resultExprArgOI) ||
            (resultExprArgOI.getCategory() != ObjectInspector.Category.PRIMITIVE) ||
            ((PrimitiveObjectInspector)resultExprArgOI).getPrimitiveCategory() !=
            PrimitiveObjectInspector.PrimitiveCategory.STRING )
      {
        throwErrorWithSignature("Currently the result Expr parameter must be a Constant String.");
      }

      evaluator.resultExprStr = ((ConstantObjectInspector)resultExprArgOI).
          getWritableConstantValue().toString();
    }
<ul>
<li> check structure of Arguments:
<ol>
<li> First arg should be a String
<li> then there should be an even number of Arguments:
String, expression; expression should be Convertible to Boolean.
<li> finally there should be a String.
</ol>
<li> convert pattern into a NNode chain.
<li> convert symbol args into a Symbol Map.
<li> parse selectList into SelectList struct. The inputOI used to translate
these expressions should be based on the
columns in the Input, the 'path.attr'
</ul>
ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/MatchPath.java