This is an automated email from the ASF dual-hosted git repository.

fanng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new 519754ca0d [#4755] improvement (trino-connector): Trino connector 
support the format table properties of Iceberg catalog (#7612)
519754ca0d is described below

commit 519754ca0ddc140e4349ac6610476f746ed4dc98
Author: Yuhui <[email protected]>
AuthorDate: Tue Jul 15 09:46:45 2025 +0800

    [#4755] improvement (trino-connector): Trino connector support the format 
table properties of Iceberg catalog (#7612)
    
    ### What changes were proposed in this pull request?
    
    Trino connector support the format table properties of Iceberg catalog
    
    ### Why are the changes needed?
    
    Fix: #4755
    
    ### Does this PR introduce _any_ user-facing change?
    
    No
    
    ### How was this patch tested?
    
    IT
---
 .../lakehouse-iceberg/00000_create_table.sql        |  1 +
 .../lakehouse-iceberg/00000_create_table.txt        | 12 ++++++++++++
 .../lakehouse-iceberg/00002_alter_table.txt         | 12 ++++++++++++
 .../00005_partition_sort_order.txt                  |  4 ++++
 .../testsets/lakehouse-iceberg/00006_datatype.txt   |  4 ++++
 .../testsets/lakehouse-iceberg/00007_varchar.txt    |  2 ++
 .../catalog/iceberg/IcebergMetadataAdapter.java     | 21 +++++++++++++++++++++
 .../catalog/iceberg/IcebergPropertyMeta.java        | 18 +++++++++++++++++-
 .../iceberg/IcebergTablePropertyConverter.java      |  5 +++++
 9 files changed, 78 insertions(+), 1 deletion(-)

diff --git 
a/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00000_create_table.sql
 
b/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00000_create_table.sql
index 7a9bbb6087..75dbd1e816 100644
--- 
a/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00000_create_table.sql
+++ 
b/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00000_create_table.sql
@@ -11,6 +11,7 @@ CREATE TABLE gt_db2.tb02 (
     name varchar,
     salary int
 ) with (
+      format = 'ORC',
       partitioning = ARRAY['name'],
       sorted_by = ARRAY['salary']
     );
diff --git 
a/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00000_create_table.txt
 
b/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00000_create_table.txt
index 57a6313ccf..b1760888f3 100644
--- 
a/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00000_create_table.txt
+++ 
b/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00000_create_table.txt
@@ -8,6 +8,8 @@ CREATE TABLE
 )
 COMMENT ''
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb01'
 )"
 
@@ -19,6 +21,8 @@ CREATE TABLE
 )
 COMMENT ''
 WITH (
+   format = 'ORC',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb02',
    partitioning = ARRAY['name'],
    sorted_by = ARRAY['salary']
@@ -34,6 +38,8 @@ CREATE TABLE
 )
 COMMENT ''
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb03',
    partitioning = ARRAY['name'],
    sorted_by = ARRAY['name']
@@ -47,6 +53,8 @@ CREATE TABLE
 )
 COMMENT ''
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb04',
    sorted_by = ARRAY['name']
 )"
@@ -59,6 +67,8 @@ CREATE TABLE
 )
 COMMENT ''
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb05',
    partitioning = ARRAY['name']
 )"
@@ -71,6 +81,8 @@ CREATE TABLE
 )
 COMMENT ''
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/%/gt_db2/tb06'
 )"
 
diff --git 
a/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00002_alter_table.txt
 
b/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00002_alter_table.txt
index b404f03e5d..e19dfa9a58 100644
--- 
a/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00002_alter_table.txt
+++ 
b/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00002_alter_table.txt
@@ -18,6 +18,8 @@ DROP COLUMN
 )
 COMMENT ''
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb01'
 )"
 
@@ -29,6 +31,8 @@ RENAME COLUMN
 )
 COMMENT ''
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb01'
 )"
 
@@ -40,6 +44,8 @@ SET COLUMN TYPE
 )
 COMMENT ''
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb01'
 )"
 
@@ -51,6 +57,8 @@ COMMENT
 )
 COMMENT 'test table comments'
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb01'
 )"
 
@@ -62,6 +70,8 @@ COMMENT
 )
 COMMENT 'test table comments'
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb01'
 )"
 
@@ -74,6 +84,8 @@ ADD COLUMN
 )
 COMMENT 'test table comments'
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb01'
 )"
 
diff --git 
a/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00005_partition_sort_order.txt
 
b/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00005_partition_sort_order.txt
index 429ae871cc..6bbe53cb0e 100644
--- 
a/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00005_partition_sort_order.txt
+++ 
b/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00005_partition_sort_order.txt
@@ -24,6 +24,8 @@ CREATE TABLE
 )
 COMMENT ''
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/lineitem',
    partitioning = ARRAY['year(commitdate)'],
    sorted_by = ARRAY['partkey','extendedprice DESC']
@@ -59,6 +61,8 @@ CREATE TABLE
 )
 COMMENT ''
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb01',
    partitioning = ARRAY['day(commitdate)','month(shipdate)','bucket(partkey, 
2)','truncate(shipinstruct, 2)'],
    sorted_by = ARRAY['partkey ASC NULLS LAST','extendedprice DESC NULLS FIRST']
diff --git 
a/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00006_datatype.txt
 
b/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00006_datatype.txt
index 79c5177f34..0e703c8028 100644
--- 
a/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00006_datatype.txt
+++ 
b/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00006_datatype.txt
@@ -21,6 +21,8 @@ CREATE TABLE
 )
 COMMENT ''
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb01'
 )"
 
@@ -51,6 +53,8 @@ CREATE TABLE
 )
 COMMENT ''
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb02'
 )"
 
diff --git 
a/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00007_varchar.txt
 
b/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00007_varchar.txt
index 2ab524c8dd..54f2ccf7cf 100644
--- 
a/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00007_varchar.txt
+++ 
b/trino-connector/integration-test/src/test/resources/trino-ci-testset/testsets/lakehouse-iceberg/00007_varchar.txt
@@ -16,6 +16,8 @@ CREATE TABLE
 )
 COMMENT ''
 WITH (
+   format = 'PARQUET',
+   format_version = '2',
    location = 'hdfs://%/user/iceberg/warehouse/TrinoQueryIT/gt_db2%/tb04'
 )"
 
diff --git 
a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/iceberg/IcebergMetadataAdapter.java
 
b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/iceberg/IcebergMetadataAdapter.java
index 075fc7d3e0..20a9111af1 100644
--- 
a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/iceberg/IcebergMetadataAdapter.java
+++ 
b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/iceberg/IcebergMetadataAdapter.java
@@ -18,6 +18,13 @@
  */
 package org.apache.gravitino.trino.connector.catalog.iceberg;
 
+import static 
org.apache.gravitino.catalog.lakehouse.iceberg.IcebergConstants.FORMAT;
+import static 
org.apache.gravitino.catalog.lakehouse.iceberg.IcebergConstants.FORMAT_VERSION;
+import static 
org.apache.gravitino.catalog.lakehouse.iceberg.IcebergConstants.PROVIDER;
+import static 
org.apache.gravitino.trino.connector.catalog.iceberg.IcebergPropertyMeta.ICEBERG_FORMAT_PROPERTY;
+import static 
org.apache.gravitino.trino.connector.catalog.iceberg.IcebergPropertyMeta.ICEBERG_FORMAT_VERSION_PROPERTY;
+import static 
org.apache.gravitino.trino.connector.catalog.iceberg.IcebergTablePropertyConverter.convertTableFormatToTrino;
+
 import com.google.common.collect.ImmutableSet;
 import io.trino.spi.connector.ColumnMetadata;
 import io.trino.spi.connector.ConnectorTableMetadata;
@@ -110,6 +117,14 @@ public class IcebergMetadataAdapter extends 
CatalogConnectorMetadataAdapter {
         toGravitinoTableProperties(
             removeKeys(tableMetadata.getProperties(), 
ICEBERG_PROPERTIES_TO_REMOVE));
 
+    if (propertyMap.containsKey(ICEBERG_FORMAT_PROPERTY)) {
+      String format = propertyMap.get(ICEBERG_FORMAT_PROPERTY).toString();
+      properties.put(PROVIDER, format);
+      if (propertyMap.containsKey((ICEBERG_FORMAT_VERSION_PROPERTY))) {
+        properties.put(FORMAT_VERSION, 
propertyMap.get(ICEBERG_FORMAT_VERSION_PROPERTY).toString());
+      }
+    }
+
     List<GravitinoColumn> columns = new ArrayList<>();
     for (int i = 0; i < tableMetadata.getColumns().size(); i++) {
       ColumnMetadata column = tableMetadata.getColumns().get(i);
@@ -150,6 +165,12 @@ public class IcebergMetadataAdapter extends 
CatalogConnectorMetadataAdapter {
 
     Map<String, Object> properties = 
toTrinoTableProperties(gravitinoTable.getProperties());
 
+    properties.put(
+        ICEBERG_FORMAT_PROPERTY,
+        convertTableFormatToTrino(gravitinoTable.getProperties().get(FORMAT)));
+    properties.put(
+        ICEBERG_FORMAT_VERSION_PROPERTY, 
gravitinoTable.getProperties().get(FORMAT_VERSION));
+
     if (ArrayUtils.isNotEmpty(gravitinoTable.getPartitioning())) {
       properties.put(
           IcebergPropertyMeta.ICEBERG_PARTITIONING_PROPERTY,
diff --git 
a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/iceberg/IcebergPropertyMeta.java
 
b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/iceberg/IcebergPropertyMeta.java
index 8c60c10830..94f42cea3e 100644
--- 
a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/iceberg/IcebergPropertyMeta.java
+++ 
b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/iceberg/IcebergPropertyMeta.java
@@ -44,6 +44,15 @@ public class IcebergPropertyMeta implements HasPropertyMeta {
   /** Property key for table location configuration. */
   public static final String ICEBERG_LOCATION_PROPERTY = "location";
 
+  /** Property key for table format configuration. */
+  public static final String ICEBERG_FORMAT_PROPERTY = "format";
+
+  /** Property key for table format version configuration. */
+  public static final String ICEBERG_FORMAT_VERSION_PROPERTY = 
"format_version";
+
+  private static final String DEFAULT_ICEBERG_FORMAT = "PARQUET";
+  private static final String DEFAULT_ICEBERG_FORMAT_VERSION = "2";
+
   // Value is whether this property is reserved and cannot be used by users
   // TODO (yuqi) add more properties
   /** Map of table property metadata to their reservation status. */
@@ -72,7 +81,14 @@ public class IcebergPropertyMeta implements HasPropertyMeta {
               value -> (List<?>) value,
               value -> value),
           PropertyMetadata.stringProperty(
-              ICEBERG_LOCATION_PROPERTY, "Location for table storage", null, 
false));
+              ICEBERG_LOCATION_PROPERTY, "Location for table storage", null, 
false),
+          PropertyMetadata.stringProperty(
+              ICEBERG_FORMAT_PROPERTY, "Table format", DEFAULT_ICEBERG_FORMAT, 
false),
+          PropertyMetadata.stringProperty(
+              ICEBERG_FORMAT_VERSION_PROPERTY,
+              "Format version",
+              DEFAULT_ICEBERG_FORMAT_VERSION,
+              false));
 
   // TODO (yuqi) add more properties
   /** Map of schema property metadata to their reservation status. */
diff --git 
a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/iceberg/IcebergTablePropertyConverter.java
 
b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/iceberg/IcebergTablePropertyConverter.java
index 267a007b21..51dbf04abe 100644
--- 
a/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/iceberg/IcebergTablePropertyConverter.java
+++ 
b/trino-connector/trino-connector/src/main/java/org/apache/gravitino/trino/connector/catalog/iceberg/IcebergTablePropertyConverter.java
@@ -47,4 +47,9 @@ public class IcebergTablePropertyConverter extends 
PropertyConverter {
     // no matter what the mapping is, the properties will be empty.
     return TRINO_KEY_TO_GRAVITINO_KEY;
   }
+
+  public static String convertTableFormatToTrino(String format) {
+    format = format.replace("iceberg/", "");
+    return format.toUpperCase();
+  }
 }

Reply via email to