Skip to content

Commit 8323eba

Browse files
ebyhrwendigo
authored andcommitted
Use TableUtil.formatVersion in Iceberg
1 parent 26a4cfd commit 8323eba

File tree

4 files changed

+20
-16
lines changed

4 files changed

+20
-16
lines changed

plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergMetadata.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,7 @@
403403
import static org.apache.iceberg.TableProperties.PARQUET_BLOOM_FILTER_COLUMN_ENABLED_PREFIX;
404404
import static org.apache.iceberg.TableProperties.WRITE_DATA_LOCATION;
405405
import static org.apache.iceberg.TableProperties.WRITE_LOCATION_PROVIDER_IMPL;
406+
import static org.apache.iceberg.TableUtil.formatVersion;
406407
import static org.apache.iceberg.expressions.Expressions.alwaysTrue;
407408
import static org.apache.iceberg.types.TypeUtil.indexParents;
408409
import static org.apache.iceberg.util.LocationUtil.stripTrailingSlash;
@@ -629,7 +630,7 @@ private IcebergTableHandle tableHandleForSnapshot(
629630
tableSnapshotId,
630631
SchemaParser.toJson(tableSchema),
631632
partitionSpec.map(PartitionSpecParser::toJson),
632-
table.operations().current().formatVersion(),
633+
formatVersion(table),
633634
TupleDomain.all(),
634635
TupleDomain.all(),
635636
OptionalLong.empty(),
@@ -1922,7 +1923,7 @@ private BeginTableExecuteResult<ConnectorTableExecuteHandle, ConnectorTableHandl
19221923

19231924
validateNotModifyingOldSnapshot(table, icebergTable);
19241925

1925-
int tableFormatVersion = icebergTable.operations().current().formatVersion();
1926+
int tableFormatVersion = formatVersion(icebergTable);
19261927
if (tableFormatVersion > OPTIMIZE_MAX_SUPPORTED_TABLE_VERSION) {
19271928
throw new TrinoException(NOT_SUPPORTED, format(
19281929
"%s is not supported for Iceberg table format version > %d. Table %s format version is %s.",
@@ -2197,7 +2198,7 @@ private static void validateTableExecuteParameters(
21972198
String minRetentionParameterName,
21982199
String sessionMinRetentionParameterName)
21992200
{
2200-
int tableFormatVersion = table.operations().current().formatVersion();
2201+
int tableFormatVersion = formatVersion(table);
22012202
if (tableFormatVersion > CLEANING_UP_PROCEDURES_MAX_SUPPORTED_TABLE_VERSION) {
22022203
// It is not known if future version won't bring any new kind of metadata or data files
22032204
// because of the way procedures are implemented it is safer to fail here than to potentially remove

plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergUtil.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@
191191
import static org.apache.iceberg.TableProperties.PARQUET_COMPRESSION;
192192
import static org.apache.iceberg.TableProperties.WRITE_DATA_LOCATION;
193193
import static org.apache.iceberg.TableProperties.WRITE_LOCATION_PROVIDER_IMPL;
194+
import static org.apache.iceberg.TableUtil.formatVersion;
194195
import static org.apache.iceberg.types.Type.TypeID.BINARY;
195196
import static org.apache.iceberg.types.Type.TypeID.FIXED;
196197
import static org.apache.iceberg.util.LocationUtil.stripTrailingSlash;
@@ -326,7 +327,7 @@ public static Map<String, Object> getIcebergTableProperties(BaseTable icebergTab
326327
properties.put(LOCATION_PROPERTY, icebergTable.location());
327328
}
328329

329-
int formatVersion = icebergTable.operations().current().formatVersion();
330+
int formatVersion = formatVersion(icebergTable);
330331
properties.put(FORMAT_VERSION_PROPERTY, formatVersion);
331332

332333
if (icebergTable.properties().containsKey(COMMIT_NUM_RETRIES)) {

plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/PropertiesTable.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import static java.util.Objects.requireNonNull;
3939
import static org.apache.iceberg.TableProperties.DEFAULT_FILE_FORMAT;
4040
import static org.apache.iceberg.TableProperties.DEFAULT_FILE_FORMAT_DEFAULT;
41+
import static org.apache.iceberg.TableUtil.formatVersion;
4142

4243
public class PropertiesTable
4344
implements SystemTable
@@ -90,7 +91,7 @@ private static List<Page> buildPages(ConnectorTableMetadata tableMetadata, BaseT
9091
properties.put("provider", "iceberg");
9192
properties.put("current-snapshot-id", currentSnapshotId);
9293
properties.put("location", icebergTable.location());
93-
properties.put("format-version", String.valueOf(icebergTable.operations().current().formatVersion()));
94+
properties.put("format-version", String.valueOf(formatVersion(icebergTable)));
9495
// TODO: Support sort column transforms (https://github.com/trinodb/trino/issues/15088)
9596
SortOrder sortOrder = icebergTable.sortOrder();
9697
if (!sortOrder.isUnsorted() && sortOrder.fields().stream().allMatch(sortField -> sortField.transform().isIdentity())) {

plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/TestIcebergV2.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@
117117
import static org.apache.iceberg.TableProperties.METADATA_DELETE_AFTER_COMMIT_ENABLED;
118118
import static org.apache.iceberg.TableProperties.METADATA_PREVIOUS_VERSIONS_MAX;
119119
import static org.apache.iceberg.TableProperties.SPLIT_SIZE;
120+
import static org.apache.iceberg.TableUtil.formatVersion;
120121
import static org.apache.iceberg.mapping.NameMappingParser.toJson;
121122
import static org.assertj.core.api.Assertions.assertThat;
122123
import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS;
@@ -154,11 +155,11 @@ public void testSettingFormatVersion()
154155
{
155156
String tableName = "test_seting_format_version_" + randomNameSuffix();
156157
assertUpdate("CREATE TABLE " + tableName + " WITH (format_version = 2) AS SELECT * FROM tpch.tiny.nation", 25);
157-
assertThat(loadTable(tableName).operations().current().formatVersion()).isEqualTo(2);
158+
assertThat(formatVersion(loadTable(tableName))).isEqualTo(2);
158159
assertUpdate("DROP TABLE " + tableName);
159160

160161
assertUpdate("CREATE TABLE " + tableName + " WITH (format_version = 1) AS SELECT * FROM tpch.tiny.nation", 25);
161-
assertThat(loadTable(tableName).operations().current().formatVersion()).isEqualTo(1);
162+
assertThat(formatVersion(loadTable(tableName))).isEqualTo(1);
162163
assertUpdate("DROP TABLE " + tableName);
163164
}
164165

@@ -167,7 +168,7 @@ public void testDefaultFormatVersion()
167168
{
168169
String tableName = "test_default_format_version_" + randomNameSuffix();
169170
assertUpdate("CREATE TABLE " + tableName + " AS SELECT * FROM tpch.tiny.nation", 25);
170-
assertThat(loadTable(tableName).operations().current().formatVersion()).isEqualTo(2);
171+
assertThat(formatVersion(loadTable(tableName))).isEqualTo(2);
171172
assertUpdate("DROP TABLE " + tableName);
172173
}
173174

@@ -687,9 +688,9 @@ public void testUpgradeTableToV2FromTrino()
687688
{
688689
String tableName = "test_upgrade_table_to_v2_from_trino_" + randomNameSuffix();
689690
assertUpdate("CREATE TABLE " + tableName + " WITH (format_version = 1) AS SELECT * FROM tpch.tiny.nation", 25);
690-
assertThat(loadTable(tableName).operations().current().formatVersion()).isEqualTo(1);
691+
assertThat(formatVersion(loadTable(tableName))).isEqualTo(1);
691692
assertUpdate("ALTER TABLE " + tableName + " SET PROPERTIES format_version = 2");
692-
assertThat(loadTable(tableName).operations().current().formatVersion()).isEqualTo(2);
693+
assertThat(formatVersion(loadTable(tableName))).isEqualTo(2);
693694
assertQuery("SELECT * FROM " + tableName, "SELECT * FROM nation");
694695
}
695696

@@ -698,7 +699,7 @@ public void testDowngradingV2TableToV1Fails()
698699
{
699700
String tableName = "test_downgrading_v2_table_to_v1_fails_" + randomNameSuffix();
700701
assertUpdate("CREATE TABLE " + tableName + " WITH (format_version = 2) AS SELECT * FROM tpch.tiny.nation", 25);
701-
assertThat(loadTable(tableName).operations().current().formatVersion()).isEqualTo(2);
702+
assertThat(formatVersion(loadTable(tableName))).isEqualTo(2);
702703
assertThat(query("ALTER TABLE " + tableName + " SET PROPERTIES format_version = 1"))
703704
.failure()
704705
.hasMessage("Failed to set new property values")
@@ -711,7 +712,7 @@ public void testUpgradingToInvalidVersionFails()
711712
{
712713
String tableName = "test_upgrading_to_invalid_version_fails_" + randomNameSuffix();
713714
assertUpdate("CREATE TABLE " + tableName + " WITH (format_version = 2) AS SELECT * FROM tpch.tiny.nation", 25);
714-
assertThat(loadTable(tableName).operations().current().formatVersion()).isEqualTo(2);
715+
assertThat(formatVersion(loadTable(tableName))).isEqualTo(2);
715716
assertThat(query("ALTER TABLE " + tableName + " SET PROPERTIES format_version = 42"))
716717
.failure().hasMessage("line 1:79: Unable to set catalog 'iceberg' table property 'format_version' to [42]: format_version must be between 1 and 2");
717718
}
@@ -722,13 +723,13 @@ public void testUpdatingAllTableProperties()
722723
String tableName = "test_updating_all_table_properties_" + randomNameSuffix();
723724
assertUpdate("CREATE TABLE " + tableName + " WITH (format_version = 1, format = 'ORC') AS SELECT * FROM tpch.tiny.nation", 25);
724725
BaseTable table = loadTable(tableName);
725-
assertThat(table.operations().current().formatVersion()).isEqualTo(1);
726+
assertThat(formatVersion(table)).isEqualTo(1);
726727
assertThat(table.properties().get(TableProperties.DEFAULT_FILE_FORMAT).equalsIgnoreCase("ORC")).isTrue();
727728
assertThat(table.spec().isUnpartitioned()).isTrue();
728729

729730
assertUpdate("ALTER TABLE " + tableName + " SET PROPERTIES format_version = 2, partitioning = ARRAY['regionkey'], format = 'PARQUET', sorted_by = ARRAY['comment']");
730731
table = loadTable(tableName);
731-
assertThat(table.operations().current().formatVersion()).isEqualTo(2);
732+
assertThat(formatVersion(table)).isEqualTo(2);
732733
assertThat(table.properties().get(TableProperties.DEFAULT_FILE_FORMAT).equalsIgnoreCase("PARQUET")).isTrue();
733734
assertThat(table.spec().isPartitioned()).isTrue();
734735
List<PartitionField> partitionFields = table.spec().fields();
@@ -749,7 +750,7 @@ public void testUnsettingAllTableProperties()
749750
assertUpdate("CREATE TABLE " + tableName + " WITH (format_version = 1, format = 'PARQUET', partitioning = ARRAY['regionkey'], sorted_by = ARRAY['comment']) " +
750751
"AS SELECT * FROM tpch.tiny.nation", 25);
751752
BaseTable table = loadTable(tableName);
752-
assertThat(table.operations().current().formatVersion()).isEqualTo(1);
753+
assertThat(formatVersion(table)).isEqualTo(1);
753754
assertThat(table.properties().get(TableProperties.DEFAULT_FILE_FORMAT).equalsIgnoreCase("PARQUET")).isTrue();
754755
assertThat(table.spec().isPartitioned()).isTrue();
755756
List<PartitionField> partitionFields = table.spec().fields();
@@ -759,7 +760,7 @@ public void testUnsettingAllTableProperties()
759760

760761
assertUpdate("ALTER TABLE " + tableName + " SET PROPERTIES format_version = DEFAULT, format = DEFAULT, partitioning = DEFAULT, sorted_by = DEFAULT");
761762
table = loadTable(tableName);
762-
assertThat(table.operations().current().formatVersion()).isEqualTo(2);
763+
assertThat(formatVersion(table)).isEqualTo(2);
763764
assertThat(table.properties().get(TableProperties.DEFAULT_FILE_FORMAT).equalsIgnoreCase("PARQUET")).isTrue();
764765
assertThat(table.spec().isUnpartitioned()).isTrue();
765766
assertThat(table.sortOrder().isUnsorted()).isTrue();

0 commit comments

Comments
 (0)