private void validateColumnOrder(CatalogBaseTable table) {
    TableSchema schema = table.getSchema();
    List<TableColumn> tableColumns = schema.getTableColumns();

    boolean foundComputeColumn = false;
    for (TableColumn tableColumn : tableColumns) {
      if (tableColumn instanceof ComputedColumn) {
        foundComputeColumn = true;
      } else if (foundComputeColumn) {
        throw new IllegalStateException(
            "compute column must be listed after all physical columns. ");
      }
    }
  }
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