private void checkValidPartitionSpec(
      CatalogPartitionSpec partitionSpec,
      PartitionSpec mixedTablePartitionSpec,
      ObjectPath tablePath)
      throws PartitionSpecInvalidException {
    List<String> partitionKeys =
        mixedTablePartitionSpec.fields().stream()
            .map(PartitionField::name)
            .collect(Collectors.toList());
    for (String key : partitionSpec.getPartitionSpec().keySet()) {
      if (!partitionKeys.contains(key)) {
        throw new PartitionSpecInvalidException(getName(), partitionKeys, tablePath, partitionSpec);
      }
    }
  }
Check whether a list of partition values are valid based on the given list of partition keys.

@param partitionSpec a partition spec.
@param mixedTablePartitionSpec mixedTablePartitionSpec
@param tablePath tablePath
@throws PartitionSpecInvalidException thrown if any key in partitionSpec doesn't exist in
    partitionKeys.
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/catalog/MixedCatalog.java