diff --git a/pyiceberg/table/name_mapping.py b/pyiceberg/table/name_mapping.py index 1cf6bc0106..bd8b8529c5 100644 --- a/pyiceberg/table/name_mapping.py +++ b/pyiceberg/table/name_mapping.py @@ -341,7 +341,7 @@ def field(self, field: NestedField, field_partner: MappedField | None, field_res required=field.required, doc=field.doc, initial_default=field.initial_default, - initial_write=field.write_default, + write_default=field.write_default, ) def list(self, list_type: ListType, list_partner: MappedField | None, element_result: IcebergType) -> IcebergType: diff --git a/tests/table/test_name_mapping.py b/tests/table/test_name_mapping.py index e8de5f18e5..073e893455 100644 --- a/tests/table/test_name_mapping.py +++ b/tests/table/test_name_mapping.py @@ -403,3 +403,22 @@ def test_mapping_using_by_visitor(table_schema_nested: Schema, table_name_mappin ), ) assert apply_name_mapping(schema_without_ids, table_name_mapping_nested).fields == table_schema_nested.fields + + +def test_mapping_preserves_field_defaults() -> None: + schema_without_ids = Schema( + NestedField( + field_id=0, + name="foo", + field_type=StringType(), + required=False, + initial_default="init", + write_default="write", + ), + ) + name_mapping = NameMapping([MappedField(field_id=1, names=["foo"])]) + + mapped_field = apply_name_mapping(schema_without_ids, name_mapping).fields[0] + + assert mapped_field.initial_default == "init" + assert mapped_field.write_default == "write"