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(())
}