nastra commented on code in PR #12014: URL: https://github.com/apache/iceberg/pull/12014#discussion_r1942414224
########## core/src/main/java/org/apache/iceberg/view/BaseMetastoreViewCatalog.java: ########## @@ -67,6 +71,31 @@ public View loadView(TableIdentifier identifier) { throw new NoSuchViewException("Invalid view identifier: %s", identifier); } + @Override + public Table loadTable(TableIdentifier identifier) { + try { + return super.loadTable(identifier); + } catch (NoSuchTableException e) { + return loadViewMetadataTable(identifier); + } + } + + private Table loadViewMetadataTable(TableIdentifier identifier) { + String tableName = identifier.name(); + ViewMetadataTableType type = ViewMetadataTableType.from(tableName); + if (type != null) { + TableIdentifier baseViewIdentifier = TableIdentifier.of(identifier.namespace().levels()); + ViewOperations ops = newViewOps(baseViewIdentifier); + if (ops.current() == null) { + throw new NoSuchTableException("Table or View does not exist: %s", baseViewIdentifier); + } + return MetadataTableUtils.createViewMetadataTableInstance( + ops, name(), baseViewIdentifier, identifier, type); + } else { + throw new NoSuchTableException("Table does not exist: %s", identifier); Review Comment: we should probably also throw the original exception that was caught in `loadTable` -- 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