public static List<String> getMPartitionFieldNames(List<String> partitionFields)
      throws MetaException {
    // if there are no partitionFields requested, it means all the fields are requested which include
    // multi-valued fields.
    if (partitionFields == null || partitionFields.isEmpty()) {
      return null;
    }
    // throw exception if there are invalid field names
    PartitionProjectionEvaluator.validate(partitionFields);
    // else, check if all the fields are single-valued. In case there are multi-valued fields requested
    // return null since setResult in JDO doesn't support multi-valued fields
    if (!allPartitionSingleValuedFields.keySet().containsAll(partitionFields)) {
      return null;
    }
    List<String> jdoFields = new ArrayList<>(partitionFields.size());
    for (String partitionField : partitionFields) {
      jdoFields.add(allPartitionSingleValuedFields.get(partitionField));
    }
    return jdoFields;
  }
Given a list of partition fields, checks if all the fields requested are single-valued. If all
the fields are single-valued returns list of equivalent MPartition fieldnames
which can be used in the setResult clause of a JDO query

@param partitionFields List of partitionFields in the projection
@return List of JDO field names which can be used in setResult clause
of a JDO query. Returns null if input partitionFields cannot be used in a setResult clause
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/PartitionProjectionEvaluator.java