private static List<String> toPartitionKeys(PartitionSpec spec, Schema icebergSchema) {
        List<String> partitionKeys = Lists.newArrayList();
        for (PartitionField field : spec.fields()) {
            if (field.transform().isIdentity()) {
                partitionKeys.add(icebergSchema.findColumnName(field.sourceId()));
            } else {
                // Not created by Flink SQL.
                // For compatibility with iceberg tables, return empty.
                // TODO modify this after Flink support partition transform.
                return Collections.emptyList();
            }
        }
        return partitionKeys;
    }
A Flink Catalog implementation that wraps an Iceberg {@link Catalog}.
<p>
The mapping between Flink database and Iceberg namespace:
Supplying a base namespace for a given catalog, so if you have a catalog that supports a 2-level namespace, you
would supply the first level in the catalog configuration and the second level would be exposed as Flink databases.
</p>
The Iceberg table manages its partitions by itself. The partition of the Iceberg table is independent of the
partition of Flink.

Copy from iceberg-flink:iceberg-flink-1.13:0.13.2
inlong-sort/sort-flink/sort-flink-v1.13/sort-connectors/iceberg/src/main/java/org/apache/inlong/sort/iceberg/FlinkCatalog.java