This is an automated email from the ASF dual-hosted git repository.
amoghj 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 81bb0d4c9b Core: Add EnvironmentContext to commit summary (#9273)
81bb0d4c9b is described below
commit 81bb0d4c9bfe0c227d20342be5ebddcc6fafe4a6
Author: Manu Zhang <[email protected]>
AuthorDate: Tue Apr 9 23:22:32 2024 +0800
Core: Add EnvironmentContext to commit summary (#9273)
---
.../java/org/apache/iceberg/SnapshotProducer.java | 1 +
.../org/apache/iceberg/TestSnapshotSummary.java | 7 +++++++
.../extensions/TestRewriteDataFilesProcedure.java | 17 +++++++++++++++++
.../TestRewritePositionDeleteFilesProcedure.java | 22 ++++++++++++++++++++++
4 files changed, 47 insertions(+)
diff --git a/core/src/main/java/org/apache/iceberg/SnapshotProducer.java
b/core/src/main/java/org/apache/iceberg/SnapshotProducer.java
index 1c4491a684..218daca64d 100644
--- a/core/src/main/java/org/apache/iceberg/SnapshotProducer.java
+++ b/core/src/main/java/org/apache/iceberg/SnapshotProducer.java
@@ -352,6 +352,7 @@ abstract class SnapshotProducer<ThisT> implements
SnapshotUpdate<ThisT> {
SnapshotSummary.ADDED_EQ_DELETES_PROP,
SnapshotSummary.REMOVED_EQ_DELETES_PROP);
+ builder.putAll(EnvironmentContext.get());
return builder.build();
}
diff --git a/core/src/test/java/org/apache/iceberg/TestSnapshotSummary.java
b/core/src/test/java/org/apache/iceberg/TestSnapshotSummary.java
index 75b98bd4dc..23982c510d 100644
--- a/core/src/test/java/org/apache/iceberg/TestSnapshotSummary.java
+++ b/core/src/test/java/org/apache/iceberg/TestSnapshotSummary.java
@@ -90,4 +90,11 @@ public class TestSnapshotSummary extends TestBase {
.containsEntry(SnapshotSummary.ADD_EQ_DELETE_FILES_PROP, "1")
.containsEntry(SnapshotSummary.ADD_POS_DELETE_FILES_PROP, "1");
}
+
+ @TestTemplate
+ public void testIcebergVersionInSummary() {
+ table.newFastAppend().appendFile(FILE_A).commit();
+ Map<String, String> summary = table.currentSnapshot().summary();
+ assertThat(summary).containsKey("iceberg-version");
+ }
}
diff --git
a/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewriteDataFilesProcedure.java
b/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewriteDataFilesProcedure.java
index 9ba886db45..b7ae0ace5c 100644
---
a/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewriteDataFilesProcedure.java
+++
b/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewriteDataFilesProcedure.java
@@ -25,6 +25,8 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.IntStream;
+import org.apache.iceberg.CatalogProperties;
+import org.apache.iceberg.EnvironmentContext;
import org.apache.iceberg.ParameterizedTestExtension;
import org.apache.iceberg.SnapshotSummary;
import org.apache.iceberg.TableProperties;
@@ -881,6 +883,21 @@ public class TestRewriteDataFilesProcedure extends
ExtensionsTestBase {
.hasMessageContaining("Cannot convert Spark filter");
}
+ @TestTemplate
+ public void testRewriteDataFilesSummary() {
+ createTable();
+ // create 10 files under non-partitioned table
+ insertData(10);
+ sql("CALL %s.system.rewrite_data_files(table => '%s')", catalogName,
tableIdent);
+
+ Map<String, String> summary = snapshotSummary();
+ assertThat(summary)
+ .containsKey(CatalogProperties.APP_ID)
+ .containsEntry(EnvironmentContext.ENGINE_NAME, "spark")
+ .hasEntrySatisfying(
+ EnvironmentContext.ENGINE_VERSION, v ->
assertThat(v).startsWith("3.5"));
+ }
+
private void createTable() {
sql("CREATE TABLE %s (c1 int, c2 string, c3 string) USING iceberg",
tableName);
}
diff --git
a/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewritePositionDeleteFilesProcedure.java
b/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewritePositionDeleteFilesProcedure.java
index 585db39a3c..bb82b63d20 100644
---
a/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewritePositionDeleteFilesProcedure.java
+++
b/spark/v3.5/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewritePositionDeleteFilesProcedure.java
@@ -25,6 +25,8 @@ import static
org.assertj.core.api.Assertions.assertThatThrownBy;
import java.util.List;
import java.util.Map;
+import org.apache.iceberg.CatalogProperties;
+import org.apache.iceberg.EnvironmentContext;
import org.apache.iceberg.ParameterizedTestExtension;
import org.apache.iceberg.Table;
import org.apache.iceberg.relocated.com.google.common.collect.ImmutableList;
@@ -222,6 +224,26 @@ public class TestRewritePositionDeleteFilesProcedure
extends ExtensionsTestBase
.hasMessageContaining("Cannot convert Spark filter");
}
+ @TestTemplate
+ public void testRewriteSummary() throws Exception {
+ createTable();
+ sql("DELETE FROM %s WHERE id=1", tableName);
+
+ sql(
+ "CALL %s.system.rewrite_position_delete_files("
+ + "table => '%s',"
+ + "options => map("
+ + "'rewrite-all','true'))",
+ catalogName, tableIdent);
+
+ Map<String, String> summary = snapshotSummary();
+ assertThat(summary)
+ .containsKey(CatalogProperties.APP_ID)
+ .containsEntry(EnvironmentContext.ENGINE_NAME, "spark")
+ .hasEntrySatisfying(
+ EnvironmentContext.ENGINE_VERSION, v ->
assertThat(v).startsWith("3.5"));
+ }
+
private Map<String, String> snapshotSummary() {
return validationCatalog.loadTable(tableIdent).currentSnapshot().summary();
}