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 4433aa8c62 API, Core: Add uuid() to View (#8851)
4433aa8c62 is described below

commit 4433aa8c62002e2f3c589c7d3d8ef61dee8284b1
Author: Eduard Tudenhoefner <[email protected]>
AuthorDate: Tue Oct 31 07:57:49 2023 +0100

    API, Core: Add uuid() to View (#8851)
---
 api/src/main/java/org/apache/iceberg/view/View.java            | 10 ++++++++++
 core/src/main/java/org/apache/iceberg/view/BaseView.java       |  6 ++++++
 .../test/java/org/apache/iceberg/view/ViewCatalogTests.java    |  3 +++
 3 files changed, 19 insertions(+)

diff --git a/api/src/main/java/org/apache/iceberg/view/View.java 
b/api/src/main/java/org/apache/iceberg/view/View.java
index 9c33c545ec..6a26f4e4a3 100644
--- a/api/src/main/java/org/apache/iceberg/view/View.java
+++ b/api/src/main/java/org/apache/iceberg/view/View.java
@@ -20,6 +20,7 @@ package org.apache.iceberg.view;
 
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 import org.apache.iceberg.Schema;
 import org.apache.iceberg.UpdateLocation;
 
@@ -111,4 +112,13 @@ public interface View {
   default UpdateLocation updateLocation() {
     throw new UnsupportedOperationException("Updating a view's location is not 
supported");
   }
+
+  /**
+   * Returns the view's UUID
+   *
+   * @return the view's UUID
+   */
+  default UUID uuid() {
+    throw new UnsupportedOperationException("Retrieving a view's uuid is not 
supported");
+  }
 }
diff --git a/core/src/main/java/org/apache/iceberg/view/BaseView.java 
b/core/src/main/java/org/apache/iceberg/view/BaseView.java
index a1b2863eef..89f15d02b5 100644
--- a/core/src/main/java/org/apache/iceberg/view/BaseView.java
+++ b/core/src/main/java/org/apache/iceberg/view/BaseView.java
@@ -21,6 +21,7 @@ package org.apache.iceberg.view;
 import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 import org.apache.iceberg.Schema;
 import org.apache.iceberg.UpdateLocation;
 
@@ -97,4 +98,9 @@ public class BaseView implements View, Serializable {
   public UpdateLocation updateLocation() {
     return new SetViewLocation(ops);
   }
+
+  @Override
+  public UUID uuid() {
+    return UUID.fromString(ops.current().uuid());
+  }
 }
diff --git a/core/src/test/java/org/apache/iceberg/view/ViewCatalogTests.java 
b/core/src/test/java/org/apache/iceberg/view/ViewCatalogTests.java
index f35511de8e..682d7ade67 100644
--- a/core/src/test/java/org/apache/iceberg/view/ViewCatalogTests.java
+++ b/core/src/test/java/org/apache/iceberg/view/ViewCatalogTests.java
@@ -24,6 +24,7 @@ import static 
org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.UUID;
 import org.apache.iceberg.Schema;
 import org.apache.iceberg.Transaction;
 import org.apache.iceberg.UpdateLocation;
@@ -158,6 +159,8 @@ public abstract class ViewCatalogTests<C extends 
ViewCatalog & SupportsNamespace
     }
 
     // validate view settings
+    assertThat(view.uuid())
+        .isEqualTo(UUID.fromString(((BaseView) 
view).operations().current().uuid()));
     assertThat(view.name()).isEqualTo(ViewUtil.fullViewName(catalog().name(), 
identifier));
     assertThat(view.properties()).containsEntry("prop1", 
"val1").containsEntry("prop2", "val2");
     assertThat(view.history())

Reply via email to