eric-maynard commented on code in PR #1378:
URL: https://github.com/apache/polaris/pull/1378#discussion_r2051404974


##########
service/common/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalog.java:
##########
@@ -1328,6 +1344,25 @@ public void doCommit(TableMetadata base, TableMetadata 
metadata) {
       String newLocation = writeNewMetadataIfRequired(base == null, metadata);
       String oldLocation = base == null ? null : base.metadataFileLocation();
 
+      // TODO: we should not need to do this hack, but there's no other way to 
modify
+      // metadataFileLocation / currentMetadataLocation
+      if (updateMetadataOnCommit) {
+        try {
+          Field tableMetadataField = 
TableMetadata.class.getDeclaredField("metadataFileLocation");
+          tableMetadataField.setAccessible(true);
+          tableMetadataField.set(metadata, newLocation);

Review Comment:
   For some reason `IcebergCatalogHandler` is written to be semi-agnostic of 
the underlying `Catalog` type and the code does not assume it's an 
`IcebergCatalog` -- you can see this all over the place, where we do things 
like:
   ```
       this.viewCatalog = (baseCatalog instanceof ViewCatalog) ? (ViewCatalog) 
baseCatalog : null;
   ```
   
   We could add a case here where we check, similarly, if the underlying 
catalog is an `IcebergCatalog` and then we can add a method to IcbergCatalog 
for register/commit which goes through our own route and our own 
TableOperations etc. As you note we'd also have to write our own `Table`, and 
very quickly this starts to look like the refactor/rewrite discussed elsewhere. 
tbh I'm happy to take that work on, but I wanted to see if we are OK with this 
smaller patch in the interim.



-- 
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...@polaris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to