in crates/iceberg/src/arrow/record_batch_transformer.rs [228:259]
fn compare_schemas(
source_schema: &ArrowSchemaRef,
target_schema: &ArrowSchemaRef,
) -> SchemaComparison {
if source_schema.fields().len() != target_schema.fields().len() {
return SchemaComparison::Different;
}
let mut names_changed = false;
for (source_field, target_field) in source_schema
.fields()
.iter()
.zip(target_schema.fields().iter())
{
if source_field.data_type() != target_field.data_type()
|| source_field.is_nullable() != target_field.is_nullable()
{
return SchemaComparison::Different;
}
if source_field.name() != target_field.name() {
names_changed = true;
}
}
if names_changed {
SchemaComparison::NameChangesOnly
} else {
SchemaComparison::Equivalent
}
}