This is an automated email from the ASF dual-hosted git repository.
etudenhoefner pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/main by this push:
new afb200041b Core: Add test for renaming table to a non-existing
namespace (#9895)
afb200041b is described below
commit afb200041b17a3f8cce792848ca3abc2bab9bd75
Author: Eduard Tudenhoefner <[email protected]>
AuthorDate: Fri Mar 8 09:28:59 2024 +0100
Core: Add test for renaming table to a non-existing namespace (#9895)
---
.../org/apache/iceberg/catalog/CatalogTests.java | 20 ++++++++++++++++++++
.../java/org/apache/iceberg/hive/HiveCatalog.java | 4 ++++
2 files changed, 24 insertions(+)
diff --git a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java
b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java
index fef4600159..d6b9f6d120 100644
--- a/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java
+++ b/core/src/test/java/org/apache/iceberg/catalog/CatalogTests.java
@@ -783,6 +783,26 @@ public abstract class CatalogTests<C extends Catalog &
SupportsNamespaces> {
.isFalse();
}
+ @Test
+ public void renameTableNamespaceMissing() {
+ TableIdentifier from = TableIdentifier.of("ns", "table");
+ TableIdentifier to = TableIdentifier.of("non_existing", "renamedTable");
+
+ if (requiresNamespaceCreate()) {
+ catalog().createNamespace(from.namespace());
+ }
+
+ Assertions.assertThat(catalog().tableExists(from)).as("Table should not
exist").isFalse();
+
+ catalog().buildTable(from, SCHEMA).create();
+
+ Assertions.assertThat(catalog().tableExists(from)).as("Table should
exist").isTrue();
+
+ Assertions.assertThatThrownBy(() -> catalog().renameTable(from, to))
+ .isInstanceOf(NoSuchNamespaceException.class)
+ .hasMessageContaining("Namespace does not exist: non_existing");
+ }
+
@Test
public void testRenameTableDestinationTableAlreadyExists() {
C catalog = catalog();
diff --git
a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java
b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java
index 63e4aad5d8..34f9e1da43 100644
--- a/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java
+++ b/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java
@@ -228,6 +228,10 @@ public class HiveCatalog extends BaseMetastoreCatalog
implements SupportsNamespa
TableIdentifier to = removeCatalogName(originalTo);
Preconditions.checkArgument(isValidIdentifier(to), "Invalid identifier:
%s", to);
+ if (!namespaceExists(to.namespace())) {
+ throw new NoSuchNamespaceException(
+ "Cannot rename %s to %s. Namespace does not exist: %s", from, to,
to.namespace());
+ }
String toDatabase = to.namespace().level(0);
String fromDatabase = from.namespace().level(0);