-
Notifications
You must be signed in to change notification settings - Fork 340
Closed
Description
Apache Iceberg version
None
Please describe the bug 🐞
when committing, updated_staged_table.properties
is never used.
iceberg-python/pyiceberg/catalog/hive.py
Lines 529 to 550 in 62ad2ca
updated_staged_table = self._update_and_stage_table(current_table, table_identifier, requirements, updates) | |
if current_table and updated_staged_table.metadata == current_table.metadata: | |
# no changes, do nothing | |
return CommitTableResponse(metadata=current_table.metadata, metadata_location=current_table.metadata_location) | |
self._write_metadata( | |
metadata=updated_staged_table.metadata, | |
io=updated_staged_table.io, | |
metadata_path=updated_staged_table.metadata_location, | |
) | |
if hive_table and current_table: | |
# Table exists, update it. | |
hive_table.parameters = _construct_parameters( | |
metadata_location=updated_staged_table.metadata_location, | |
previous_metadata_location=current_table.metadata_location, | |
) | |
open_client.alter_table_with_environment_context( | |
dbname=database_name, | |
tbl_name=table_name, | |
new_tbl=hive_table, | |
environment_context=EnvironmentContext(properties={DO_NOT_UPDATE_STATS: DO_NOT_UPDATE_STATS_DEFAULT}), | |
) |
Compared to glue implementation
iceberg-python/pyiceberg/catalog/glue.py
Lines 511 to 533 in 62ad2ca
updated_staged_table = self._update_and_stage_table(current_table, table_identifier, requirements, updates) | |
if current_table and updated_staged_table.metadata == current_table.metadata: | |
# no changes, do nothing | |
return CommitTableResponse(metadata=current_table.metadata, metadata_location=current_table.metadata_location) | |
self._write_metadata( | |
metadata=updated_staged_table.metadata, | |
io=updated_staged_table.io, | |
metadata_path=updated_staged_table.metadata_location, | |
) | |
if current_table: | |
# table exists, update the table | |
if not glue_table_version_id: | |
raise CommitFailedException( | |
f"Cannot commit {database_name}.{table_name} because Glue table version id is missing" | |
) | |
# Pass `version_id` to implement optimistic locking: it ensures updates are rejected if concurrent | |
# modifications occur. See more details at https://iceberg.apache.org/docs/latest/aws/#optimistic-locking | |
update_table_input = _construct_table_input( | |
table_name=table_name, | |
metadata_location=updated_staged_table.metadata_location, | |
properties=updated_staged_table.properties, |
Willingness to contribute
- I can contribute a fix for this bug independently
- I would be willing to contribute a fix for this bug with guidance from the Iceberg community
- I cannot contribute a fix for this bug at this time
Metadata
Metadata
Assignees
Labels
No labels