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();
   }

Reply via email to