You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by ze...@apache.org on 2026/08/11 14:46:54 UTC
(iceberg-go) branch main updated: fix(table): compare sort order IDs by value (#1722)
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 9c87977bc fix(table): compare sort order IDs by value (#1722)
9c87977bc is described below
commit 9c87977bc53e2175bf5759b77bde605c528f9090
Author: Minh Vu <vu...@gmail.com>
AuthorDate: Tue Aug 11 16:46:48 2026 +0200
fix(table): compare sort order IDs by value (#1722)
---
table/metadata.go | 5 +++--
table/metadata_builder_internal_test.go | 14 ++++++++++++++
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/table/metadata.go b/table/metadata.go
index 720951572..868117b96 100644
--- a/table/metadata.go
+++ b/table/metadata.go
@@ -637,9 +637,10 @@ func (b *MetadataBuilder) AddSortOrder(sortOrder *SortOrder) error {
newOrderID := b.reuseOrCreateNewSortOrderID(sortOrder)
if _, err := b.GetSortOrderByID(newOrderID); err == nil {
- if b.lastAddedSortOrderID != &newOrderID {
+ sortOrder.orderID = newOrderID
+
+ if b.lastAddedSortOrderID == nil || *b.lastAddedSortOrderID != newOrderID {
b.lastAddedSortOrderID = &newOrderID
- sortOrder.orderID = newOrderID
b.updates = append(b.updates, NewAddSortOrderUpdate(sortOrder))
}
diff --git a/table/metadata_builder_internal_test.go b/table/metadata_builder_internal_test.go
index b3b37be9e..7156ac2ea 100644
--- a/table/metadata_builder_internal_test.go
+++ b/table/metadata_builder_internal_test.go
@@ -446,6 +446,20 @@ func TestSetSortOrder(t *testing.T) {
require.True(t, builder.updates[0].(*addSortOrderUpdate).SortOrder.Equals(expected), "expected sort order to match added sort order")
}
+func TestAddSortOrderDoesNotAddDuplicateUpdate(t *testing.T) {
+ builder := builderWithoutChanges(2)
+ first := sortOrder()
+ first.orderID = 10
+ second := sortOrder()
+ second.orderID = 20
+
+ require.NoError(t, builder.AddSortOrder(&first))
+ require.NoError(t, builder.AddSortOrder(&second))
+ require.Len(t, builder.updates, 1)
+ require.Equal(t, 1, first.OrderID())
+ require.Equal(t, 1, second.OrderID())
+}
+
func TestSetRef(t *testing.T) {
builder := builderWithoutChanges(2)
schemaID := 0