From d01fa1ead7bcb26f8e1d236f8735022f5c8849e2 Mon Sep 17 00:00:00 2001 From: Anurag Mantripragada Date: Tue, 13 Oct 2026 16:16:06 -0700 Subject: [PATCH 1/2] Hive: Write format-version to HMS table parameters --- .../iceberg/hive/HMSTablePropertyHelper.java | 1 + .../apache/iceberg/hive/TestHiveCatalog.java | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/hive-metastore/src/main/java/org/apache/iceberg/hive/HMSTablePropertyHelper.java b/hive-metastore/src/main/java/org/apache/iceberg/hive/HMSTablePropertyHelper.java index 494bd8089489..aee2fb04f164 100644 --- a/hive-metastore/src/main/java/org/apache/iceberg/hive/HMSTablePropertyHelper.java +++ b/hive-metastore/src/main/java/org/apache/iceberg/hive/HMSTablePropertyHelper.java @@ -110,6 +110,7 @@ public static void updateHmsTableForIcebergTable( maxHiveTablePropertySize); setStorageHandler(parameters, hiveEngineEnabled); setMetadataHash(metadata, parameters); + parameters.put(TableProperties.FORMAT_VERSION, String.valueOf(metadata.formatVersion())); // Set the basic statistics if (summary.get(SnapshotSummary.TOTAL_DATA_FILES_PROP) != null) { diff --git a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java index 58a45e68db89..e0a1935f0a62 100644 --- a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java +++ b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java @@ -994,6 +994,54 @@ public void testUUIDinTableProperties() throws Exception { } } + @ParameterizedTest + @ValueSource(ints = {1, 2, 3}) + void formatVersionInTableParametersOnCreate(int formatVersion) throws Exception { + Schema schema = getTestSchema(); + TableIdentifier tableIdentifier = TableIdentifier.of(DB_NAME, "tbl"); + String location = temp.resolve("tbl").toString(); + + try { + catalog + .buildTable(tableIdentifier, schema) + .withLocation(location) + .withProperty(TableProperties.FORMAT_VERSION, String.valueOf(formatVersion)) + .create(); + + assertThat(hmsTableParameters()) + .containsEntry(TableProperties.FORMAT_VERSION, String.valueOf(formatVersion)); + } finally { + catalog.dropTable(tableIdentifier); + } + } + + @Test + void formatVersionInTableParametersOnUpgrade() throws Exception { + Schema schema = getTestSchema(); + TableIdentifier tableIdentifier = TableIdentifier.of(DB_NAME, "tbl"); + String location = temp.resolve("tbl").toString(); + int upgradedFormatVersion = 3; + + try { + catalog + .buildTable(tableIdentifier, schema) + .withLocation(location) + .withProperty(TableProperties.FORMAT_VERSION, "2") + .create(); + + catalog + .loadTable(tableIdentifier) + .updateProperties() + .set(TableProperties.FORMAT_VERSION, String.valueOf(upgradedFormatVersion)) + .commit(); + + assertThat(hmsTableParameters()) + .containsEntry(TableProperties.FORMAT_VERSION, String.valueOf(upgradedFormatVersion)); + } finally { + catalog.dropTable(tableIdentifier); + } + } + @Test public void testSnapshotStatsTableProperties() throws Exception { Schema schema = getTestSchema(); From 5d6be8930ed01040f496db981e88d7d18b73eeb9 Mon Sep 17 00:00:00 2001 From: Anurag Mantripragada Date: Mon, 19 Oct 2026 22:19:07 -0700 Subject: [PATCH 2/2] Hive: Run format-version parameter test across all format versions --- .../test/java/org/apache/iceberg/hive/TestHiveCatalog.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java index e0a1935f0a62..36f6a35098e7 100644 --- a/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java +++ b/hive-metastore/src/test/java/org/apache/iceberg/hive/TestHiveCatalog.java @@ -94,6 +94,7 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.FieldSource; import org.junit.jupiter.params.provider.ValueSource; /** @@ -995,11 +996,11 @@ public void testUUIDinTableProperties() throws Exception { } @ParameterizedTest - @ValueSource(ints = {1, 2, 3}) + @FieldSource("org.apache.iceberg.TestHelpers#ALL_VERSIONS") void formatVersionInTableParametersOnCreate(int formatVersion) throws Exception { Schema schema = getTestSchema(); TableIdentifier tableIdentifier = TableIdentifier.of(DB_NAME, "tbl"); - String location = temp.resolve("tbl").toString(); + String location = temp.resolve("tbl").toUri().toString(); try { catalog