gaborkaszab commented on code in PR #14868:
URL: https://github.com/apache/iceberg/pull/14868#discussion_r2630252043
##########
core/src/test/java/org/apache/iceberg/view/ViewCatalogTests.java:
##########
@@ -1968,4 +1970,87 @@ public void dropNonEmptyNamespace() {
.as("Namespace should not exist")
.isFalse();
}
+
+ @Test
+ public void registerView() {
+ C catalog = catalog();
+
+ // Register view is not yet supported for REST catalog
+ assumeThat(catalog instanceof RESTCatalog).isFalse();
+
+ TableIdentifier identifier = TableIdentifier.of("ns", "view");
+
+ if (requiresNamespaceCreate()) {
+ catalog.createNamespace(identifier.namespace());
+ }
+
+ View originalView =
+ catalog()
+ .buildView(identifier)
+ .withSchema(SCHEMA)
+ .withDefaultNamespace(identifier.namespace())
+ .withDefaultCatalog(catalog().name())
+ .withQuery("spark", "select * from ns.tbl")
+ .withProperty(GC_ENABLED, "false")
+ .create();
+
+ ViewOperations ops = ((BaseView) originalView).operations();
+ String metadataLocation = ops.current().metadataFileLocation();
+
+ assertThat(catalog.dropView(identifier)).isTrue();
+ assertThat(catalog.viewExists(identifier)).as("View must not
exist").isFalse();
+
+ // view metadata should still exist after dropping the view as gc is
disabled
+ assertThat(((BaseViewOperations)
ops).io().newInputFile(metadataLocation).exists()).isTrue();
+
+ View registeredView = catalog.registerView(identifier, metadataLocation);
+
+ assertThat(registeredView).isNotNull();
+ assertThat(catalog.viewExists(identifier)).as("View must exist").isTrue();
+ assertThat(registeredView.schema().asStruct())
+ .as("Schema must match")
+ .isEqualTo(originalView.schema().asStruct());
+ assertThat(registeredView.currentVersion())
+ .as("Current version must match")
+ .isEqualTo(originalView.currentVersion());
+ assertThat(registeredView.versions())
Review Comment:
Just checked for my own education, what is the content of `ViewVersion`. I
see that there is a `defaultCatalog` member. I don't know much about this code
so asking for my benefit: is this default catalog persisted into view metadata?
When registering the view in catalog1 into catalog2, would the default catalog
be updated too?
I guess for this to work the engine has to refer to the new catalog with the
same name as it does the old catalog. Nor sure, we can expect that, but let me
know what you think.
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]