Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions pyiceberg/table/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,8 @@ def __init__(self, table: Table, autocommit: bool = False):

@property
def table_metadata(self) -> TableMetadata:
if not self._updates:
return self._table.metadata
return update_table_metadata(self._table.metadata, self._updates)

def __enter__(self) -> Transaction:
Expand Down
14 changes: 14 additions & 0 deletions tests/table/test_init.py
Original file line number Diff line number Diff line change
Expand Up @@ -1103,6 +1103,20 @@ def test_update_metadata_table_schema(table_v2: Table) -> None:
assert new_metadata.current_schema_id == 2


def test_transaction_table_metadata_without_staged_updates(table_v2: Table) -> None:
transaction = table_v2.transaction()
assert transaction.table_metadata is table_v2.metadata


def test_transaction_table_metadata_with_staged_updates(table_v2: Table) -> None:
transaction = table_v2.transaction()
transaction.set_properties(test_a="test_a")

assert transaction.table_metadata.properties["test_a"] == "test_a"
assert transaction.table_metadata is not table_v2.metadata
assert "test_a" not in table_v2.metadata.properties


def test_update_metadata_add_snapshot(table_v2: Table) -> None:
new_snapshot = Snapshot(
snapshot_id=25,
Expand Down
2 changes: 2 additions & 0 deletions tests/table/test_snapshots.py
Original file line number Diff line number Diff line change
Expand Up @@ -674,6 +674,8 @@ def make_file() -> DataFile:
return DataFile.from_args(content=DataFileContent.DATA, record_count=1, file_size_in_bytes=1, partition=Record())

txn = table_v2.transaction()
# Stage an update, so every read calls update_table_metadata
txn.set_properties(test_a="test_a")

with mock.patch("pyiceberg.table.update_table_metadata", wraps=update_table_metadata) as spy:
# _summary() cost must not scale with the number of data files
Expand Down
Loading