private void validate(FactoryUtil.TableFactoryHelper helper) {
        // Except format options, some formats like parquet and orc can not list all supported
        // options.
        helper.validateExcept(helper.getOptions().get(FactoryUtil.FORMAT) + ".", DIRTY_PREFIX);

        // validate time zone of watermark
        String watermarkTimeZone =
                helper.getOptions()
                        .get(FileSystemOptions.SINK_PARTITION_COMMIT_WATERMARK_TIME_ZONE);
        if (watermarkTimeZone.startsWith("UTC+")
                || watermarkTimeZone.startsWith("UTC-")
                || SHORT_IDS.containsKey(watermarkTimeZone)) {
            throw new ValidationException(
                    String.format(
                            "The supported watermark time zone is either a full name such as 'America/Los_Angeles',"
                                    + " or a custom time zone id such as 'GMT-08:00', but configured time zone is "
                                    + "'%s'.",
                            watermarkTimeZone));
        }
    }
File system {@link TableFactory}.

<p>1.The partition information should be in the file system path, whether it's a temporary table
or a catalog table. 2.Support insert into (append) and insert overwrite. 3.Support static and
dynamic partition inserting.

copy from flink-table-runtime-blink:1.13.2-rc2
Add inlong metric option and inlong audit option for computing metric
inlong-sort/sort-flink/sort-flink-v1.13/sort-connectors/filesystem/src/main/java/org/apache/inlong/sort/filesystem/FileSystemTableFactory.java