This is an automated email from the ASF dual-hosted git repository.
blue 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 07c4345bbb Spark: Fix CREATE OR REPLACE VIEW when view doesn't exist
(#9621)
07c4345bbb is described below
commit 07c4345bbbd4deefe722bbdfe627f26998b3bccf
Author: Eduard Tudenhoefner <[email protected]>
AuthorDate: Fri Feb 2 17:14:42 2024 +0100
Spark: Fix CREATE OR REPLACE VIEW when view doesn't exist (#9621)
---
.../org/apache/iceberg/spark/extensions/TestViews.java | 16 ++++++++++++++++
.../main/java/org/apache/iceberg/spark/SparkCatalog.java | 2 +-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git
a/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestViews.java
b/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestViews.java
index 5ca4a1e7a1..ee23d4a766 100644
---
a/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestViews.java
+++
b/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestViews.java
@@ -906,6 +906,22 @@ public class TestViews extends SparkExtensionsTestBase {
() -> sql("CREATE VIEW IF NOT EXISTS %s AS SELECT id FROM %s",
viewName, tableName));
}
+ @Test
+ public void createOrReplaceView() throws NoSuchTableException {
+ insertRows(6);
+ String viewName = viewName("simpleView");
+
+ sql("CREATE OR REPLACE VIEW %s AS SELECT id FROM %s WHERE id <= 3",
viewName, tableName);
+ assertThat(sql("SELECT id FROM %s", viewName))
+ .hasSize(3)
+ .containsExactlyInAnyOrder(row(1), row(2), row(3));
+
+ sql("CREATE OR REPLACE VIEW %s AS SELECT id FROM %s WHERE id > 3",
viewName, tableName);
+ assertThat(sql("SELECT id FROM %s", viewName))
+ .hasSize(3)
+ .containsExactlyInAnyOrder(row(4), row(5), row(6));
+ }
+
@Test
public void createViewWithInvalidSQL() {
assertThatThrownBy(() -> sql("CREATE VIEW simpleViewWithInvalidSQL AS
invalid SQL"))
diff --git
a/spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java
b/spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java
index 4b2a45fabc..0483926c4c 100644
--- a/spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java
+++ b/spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java
@@ -639,7 +639,7 @@ public class SparkCatalog extends BaseCatalog
.withSchema(icebergSchema)
.withLocation(properties.get("location"))
.withProperties(props)
- .replace();
+ .createOrReplace();
return new SparkView(catalogName, view);
} catch (org.apache.iceberg.exceptions.NoSuchNamespaceException e) {
throw new NoSuchNamespaceException(currentNamespace);