soumya-ghosh commented on code in PR #977: URL: https://github.com/apache/iceberg-python/pull/977#discussion_r1700719634
########## pyiceberg/table/__init__.py: ########## @@ -1189,15 +1197,48 @@ def update_table_metadata( new_metadata = _apply_table_update(update, new_metadata, context) # Update last_updated_ms if it was not updated by update operations - if context.has_changes() and base_metadata.last_updated_ms == new_metadata.last_updated_ms: - new_metadata = new_metadata.model_copy(update={"last_updated_ms": datetime_to_millis(datetime.now().astimezone())}) + if context.has_changes(): + if metadata_location: + new_metadata = _update_table_metadata_log(new_metadata, metadata_location, base_metadata.last_updated_ms) + if base_metadata.last_updated_ms == new_metadata.last_updated_ms: + new_metadata = new_metadata.model_copy(update={"last_updated_ms": datetime_to_millis(datetime.now().astimezone())}) if enforce_validation: return TableMetadataUtil.parse_obj(new_metadata.model_dump()) else: return new_metadata.model_copy(deep=True) +def _update_table_metadata_log(base_metadata: TableMetadata, metadata_location: str, last_updated_ms: int) -> TableMetadata: + """ + Update the metadata log of the table. + + Args: + base_metadata: The base metadata to be updated. + metadata_location: Current metadata location of the table + last_updated_ms: The timestamp of the last update of table metadata + + Returns: + The metadata with the updates applied to metadata-log. + """ + max_metadata_log_entries = max( + 1, Review Comment: Having a metadata log size of 0 or negative is invalid, hence used max, also the implementation is consistent with Java implementation - https://github.com/apache/iceberg/blob/main/core/src/main/java/org/apache/iceberg/TableMetadata.java#L1673-L1701 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org