Skip to content

Commit 02d46d5

Browse files
committed
remove initial_change
1 parent 0dc5408 commit 02d46d5

File tree

3 files changed

+27
-21
lines changed

3 files changed

+27
-21
lines changed

pyiceberg/schema.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,6 @@ def __len__(self) -> int:
111111

112112
def __eq__(self, other: Any) -> bool:
113113
"""Return the equality of two instances of the Schema class."""
114-
if not other:
115-
return False
116-
117114
if not isinstance(other, Schema):
118115
return False
119116

pyiceberg/table/__init__.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -691,22 +691,22 @@ def _initial_changes(self, table_metadata: TableMetadata) -> None:
691691

692692
schema: Schema = table_metadata.schema()
693693
self._updates += (
694-
AddSchemaUpdate(schema_=schema, last_column_id=schema.highest_field_id, initial_change=True),
694+
AddSchemaUpdate(schema_=schema, last_column_id=schema.highest_field_id),
695695
SetCurrentSchemaUpdate(schema_id=-1),
696696
)
697697

698698
spec: PartitionSpec = table_metadata.spec()
699699
if spec.is_unpartitioned():
700-
self._updates += (AddPartitionSpecUpdate(spec=UNPARTITIONED_PARTITION_SPEC, initial_change=True),)
700+
self._updates += (AddPartitionSpecUpdate(spec=UNPARTITIONED_PARTITION_SPEC),)
701701
else:
702-
self._updates += (AddPartitionSpecUpdate(spec=spec, initial_change=True),)
702+
self._updates += (AddPartitionSpecUpdate(spec=spec),)
703703
self._updates += (SetDefaultSpecUpdate(spec_id=-1),)
704704

705705
sort_order: Optional[SortOrder] = table_metadata.sort_order_by_id(table_metadata.default_sort_order_id)
706706
if sort_order is None or sort_order.is_unsorted:
707-
self._updates += (AddSortOrderUpdate(sort_order=UNSORTED_SORT_ORDER, initial_change=True),)
707+
self._updates += (AddSortOrderUpdate(sort_order=UNSORTED_SORT_ORDER),)
708708
else:
709-
self._updates += (AddSortOrderUpdate(sort_order=sort_order, initial_change=True),)
709+
self._updates += (AddSortOrderUpdate(sort_order=sort_order),)
710710
self._updates += (SetDefaultSortOrderUpdate(sort_order_id=-1),)
711711

712712
self._updates += (

pyiceberg/table/update/__init__.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
from typing_extensions import Annotated
2828

2929
from pyiceberg.exceptions import CommitFailedException
30-
from pyiceberg.partitioning import PARTITION_FIELD_ID_START, PartitionSpec
30+
from pyiceberg.partitioning import INITIAL_PARTITION_SPEC_ID, PARTITION_FIELD_ID_START, PartitionSpec
3131
from pyiceberg.schema import Schema
3232
from pyiceberg.table.metadata import SUPPORTED_TABLE_FORMAT_VERSION, TableMetadata, TableMetadataUtil
3333
from pyiceberg.table.refs import MAIN_BRANCH, SnapshotRef
@@ -36,7 +36,7 @@
3636
Snapshot,
3737
SnapshotLogEntry,
3838
)
39-
from pyiceberg.table.sorting import SortOrder
39+
from pyiceberg.table.sorting import UNSORTED_SORT_ORDER, SortOrder
4040
from pyiceberg.typedef import (
4141
IcebergBaseModel,
4242
Properties,
@@ -90,8 +90,6 @@ class AddSchemaUpdate(IcebergBaseModel):
9090
# This field is required: https://github.com/apache/iceberg/pull/7445
9191
last_column_id: int = Field(alias="last-column-id")
9292

93-
initial_change: bool = Field(default=False, exclude=True)
94-
9593

9694
class SetCurrentSchemaUpdate(IcebergBaseModel):
9795
action: Literal["set-current-schema"] = Field(default="set-current-schema")
@@ -104,8 +102,6 @@ class AddPartitionSpecUpdate(IcebergBaseModel):
104102
action: Literal["add-spec"] = Field(default="add-spec")
105103
spec: PartitionSpec
106104

107-
initial_change: bool = Field(default=False, exclude=True)
108-
109105

110106
class SetDefaultSpecUpdate(IcebergBaseModel):
111107
action: Literal["set-default-spec"] = Field(default="set-default-spec")
@@ -118,8 +114,6 @@ class AddSortOrderUpdate(IcebergBaseModel):
118114
action: Literal["add-sort-order"] = Field(default="add-sort-order")
119115
sort_order: SortOrder = Field(alias="sort-order")
120116

121-
initial_change: bool = Field(default=False, exclude=True)
122-
123117

124118
class SetDefaultSortOrderUpdate(IcebergBaseModel):
125119
action: Literal["set-default-sort-order"] = Field(default="set-default-sort-order")
@@ -304,9 +298,10 @@ def _(update: AddSchemaUpdate, base_metadata: TableMetadata, context: _TableMeta
304298
if update.last_column_id < base_metadata.last_column_id:
305299
raise ValueError(f"Invalid last column id {update.last_column_id}, must be >= {base_metadata.last_column_id}")
306300

301+
skip_empty_schema = base_metadata.schemas == [Schema()]
307302
metadata_updates: Dict[str, Any] = {
308303
"last_column_id": update.last_column_id,
309-
"schemas": [update.schema_] if update.initial_change else base_metadata.schemas + [update.schema_],
304+
"schemas": [update.schema_] if skip_empty_schema else base_metadata.schemas + [update.schema_],
310305
}
311306

312307
context.add_update(update)
@@ -335,19 +330,23 @@ def _(update: SetCurrentSchemaUpdate, base_metadata: TableMetadata, context: _Ta
335330

336331
@_apply_table_update.register(AddPartitionSpecUpdate)
337332
def _(update: AddPartitionSpecUpdate, base_metadata: TableMetadata, context: _TableMetadataUpdateContext) -> TableMetadata:
333+
context.add_update(update)
334+
if update.spec.spec_id == INITIAL_PARTITION_SPEC_ID:
335+
# no op
336+
return base_metadata
337+
338338
for spec in base_metadata.partition_specs:
339-
if spec.spec_id == update.spec.spec_id and not update.initial_change:
339+
if spec.spec_id == update.spec.spec_id:
340340
raise ValueError(f"Partition spec with id {spec.spec_id} already exists: {spec}")
341341

342342
metadata_updates: Dict[str, Any] = {
343-
"partition_specs": [update.spec] if update.initial_change else base_metadata.partition_specs + [update.spec],
343+
"partition_specs": base_metadata.partition_specs + [update.spec],
344344
"last_partition_id": max(
345345
max([field.field_id for field in update.spec.fields], default=0),
346346
base_metadata.last_partition_id or PARTITION_FIELD_ID_START - 1,
347347
),
348348
}
349349

350-
context.add_update(update)
351350
return base_metadata.model_copy(update=metadata_updates)
352351

353352

@@ -443,12 +442,22 @@ def _(update: SetSnapshotRefUpdate, base_metadata: TableMetadata, context: _Tabl
443442
return base_metadata.model_copy(update=metadata_updates)
444443

445444

445+
@_apply_table_update.register(RemoveSnapshotRefUpdate)
446+
def _(update: RemoveSnapshotRefUpdate, base_metadata: TableMetadata, context: _TableMetadataUpdateContext) -> TableMetadata:
447+
# (TODO) actually implement this
448+
context.add_update(update)
449+
return base_metadata
450+
451+
446452
@_apply_table_update.register(AddSortOrderUpdate)
447453
def _(update: AddSortOrderUpdate, base_metadata: TableMetadata, context: _TableMetadataUpdateContext) -> TableMetadata:
448454
context.add_update(update)
455+
if update.sort_order == UNSORTED_SORT_ORDER:
456+
# no op
457+
return base_metadata
449458
return base_metadata.model_copy(
450459
update={
451-
"sort_orders": [update.sort_order] if update.initial_change else base_metadata.sort_orders + [update.sort_order],
460+
"sort_orders": base_metadata.sort_orders + [update.sort_order],
452461
}
453462
)
454463

0 commit comments

Comments
 (0)