fn validate_configs()

in crates/core/src/table/builder.rs [239:283]


    fn validate_configs(hudi_configs: &HudiConfigs) -> Result<()> {
        if hudi_configs
            .get_or_default(SkipConfigValidation)
            .to::<bool>()
        {
            return Ok(());
        }

        for conf in HudiTableConfig::iter() {
            hudi_configs.validate(conf)?
        }

        for conf in HudiReadConfig::iter() {
            hudi_configs.validate(conf)?
        }

        // additional validation
        let table_version = hudi_configs.get(TableVersion)?.to::<isize>();
        if !(5..=6).contains(&table_version) {
            return Err(CoreError::Unsupported(
                "Only support table version 5 and 6.".to_string(),
            ));
        }

        let timeline_layout_version = hudi_configs.get(TimelineLayoutVersion)?.to::<isize>();
        if timeline_layout_version != 1 {
            return Err(CoreError::Unsupported(
                "Only support timeline layout version 1.".to_string(),
            ));
        }

        let drops_partition_cols = hudi_configs
            .get_or_default(DropsPartitionFields)
            .to::<bool>();
        if drops_partition_cols {
            return Err(CoreError::Unsupported(format!(
                "Only support when `{}` is disabled",
                DropsPartitionFields.as_ref()
            )));
        }

        RecordMerger::validate_configs(hudi_configs)?;

        Ok(())
    }