This is an automated email from the ASF dual-hosted git repository.

zeroshade pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg-go.git


The following commit(s) were added to refs/heads/main by this push:
     new ee1b9f18 fix(table): set current schema to existing schema ID when 
reusing schema (#712)
ee1b9f18 is described below

commit ee1b9f18d7d7e2025d828e5bf41dfae51aa4b30b
Author: Eren Dursun <[email protected]>
AuthorDate: Tue Feb 10 18:56:39 2026 +0100

    fix(table): set current schema to existing schema ID when reusing schema 
(#712)
    
    fixes #711
---
 table/update_schema.go      |  2 +-
 table/update_schema_test.go | 34 ++++++++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/table/update_schema.go b/table/update_schema.go
index 0492f085..dd450328 100644
--- a/table/update_schema.go
+++ b/table/update_schema.go
@@ -638,7 +638,7 @@ func (u *UpdateSchema) BuildUpdates() ([]Update, 
[]Requirement, error) {
                        )
                } else {
                        updates = append(updates,
-                               NewSetCurrentSchemaUpdate(newSchema.ID),
+                               NewSetCurrentSchemaUpdate(existingSchemaID),
                        )
                }
 
diff --git a/table/update_schema_test.go b/table/update_schema_test.go
index 8f35363d..1ee56239 100644
--- a/table/update_schema_test.go
+++ b/table/update_schema_test.go
@@ -879,3 +879,37 @@ func TestErrorHandling(t *testing.T) {
                assert.Contains(t, err.Error(), "default value type mismatch")
        })
 }
+
+func TestBuildUpdates(t *testing.T) {
+       t.Run("test BuildUpdates sets correct schema ID when existing schema 
found", func(t *testing.T) {
+               previousSchema := iceberg.NewSchema(0,
+                       iceberg.NestedField{ID: 1, Name: "id", Type: 
iceberg.PrimitiveTypes.Int32, Required: true, Doc: ""},
+               )
+
+               currentSchema := iceberg.NewSchema(1,
+                       iceberg.NestedField{ID: 1, Name: "id", Type: 
iceberg.PrimitiveTypes.Int32, Required: true, Doc: ""},
+                       iceberg.NestedField{ID: 2, Name: "name", Type: 
iceberg.PrimitiveTypes.String, Required: false, Doc: ""},
+               )
+
+               metadata, _ := NewMetadata(previousSchema, 
iceberg.UnpartitionedSpec, UnsortedSortOrder, "", nil)
+               metadataBuilder, _ := MetadataBuilderFromBase(metadata, "")
+               _ = metadataBuilder.AddSchema(currentSchema)
+               _ = metadataBuilder.SetCurrentSchemaID(1)
+               metadata, _ = metadataBuilder.Build()
+
+               table := New([]string{"table"}, metadata, "", nil, nil)
+               txn := table.NewTransaction()
+               updateSchema := txn.UpdateSchema(true, 
false).DeleteColumn([]string{"name"})
+
+               updates, requirements, err := updateSchema.BuildUpdates()
+               assert.NoError(t, err)
+               assert.NotNil(t, requirements)
+               assert.Len(t, requirements, 1)
+               assert.IsType(t, &assertCurrentSchemaId{}, requirements[0])
+               assert.Equal(t, 1, 
requirements[0].(*assertCurrentSchemaId).CurrentSchemaID)
+               assert.NotNil(t, updates)
+               assert.Len(t, updates, 1)
+               assert.IsType(t, &setCurrentSchemaUpdate{}, updates[0])
+               assert.Equal(t, 0, 
updates[0].(*setCurrentSchemaUpdate).SchemaID)
+       })
+}

Reply via email to