This is an automated email from the ASF dual-hosted git repository.
fokko 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 4a3e06bd96 Spark 3.4: Fix CREATE OR REPLACE VIEW when view doesn't
exist (#9646)
4a3e06bd96 is described below
commit 4a3e06bd963a6cf40128b635c193447a4b4a4bf4
Author: Eduard Tudenhoefner <[email protected]>
AuthorDate: Mon Feb 5 10:34:23 2024 +0100
Spark 3.4: Fix CREATE OR REPLACE VIEW when view doesn't exist (#9646)
---
.../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.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestViews.java
b/spark/v3.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestViews.java
index af5a64d96c..9e78c54518 100644
---
a/spark/v3.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestViews.java
+++
b/spark/v3.4/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.4/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java
b/spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java
index a9a0176ac4..f3b91c4145 100644
--- a/spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java
+++ b/spark/v3.4/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);