From aa73ef7a4b44511a999a3be038e315928c4c76cc Mon Sep 17 00:00:00 2001 From: Denodo Research Labs Date: Wed, 26 Mar 2025 13:21:02 +0100 Subject: [PATCH] Pass full session to avoid Unknown connector errors --- .../iceberg/nessie/TestIcebergDistributedNessie.java | 8 ++++++++ .../presto/connector/system/jdbc/SchemaJdbcTable.java | 4 ++-- .../presto/connector/system/jdbc/TableJdbcTable.java | 4 ++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/presto-iceberg/src/test/java/com/facebook/presto/iceberg/nessie/TestIcebergDistributedNessie.java b/presto-iceberg/src/test/java/com/facebook/presto/iceberg/nessie/TestIcebergDistributedNessie.java index 095e25e74a0d9..f94d1bebb54cb 100644 --- a/presto-iceberg/src/test/java/com/facebook/presto/iceberg/nessie/TestIcebergDistributedNessie.java +++ b/presto-iceberg/src/test/java/com/facebook/presto/iceberg/nessie/TestIcebergDistributedNessie.java @@ -83,4 +83,12 @@ public void testExpireSnapshotWithDeletedEntries() .isInstanceOf(RuntimeException.class) .hasMessageMatching("Cannot expire snapshots: GC is disabled .*"); } + + @Test + public void testUnknownConnectorNotThrown() + { + // Checks an Unknown connector exception is not thrown when trying to explore through JDBC an Iceberg catalog of type Nessie + assertQuerySucceeds("select * from system.jdbc.schemas where TABLE_CATALOG = 'iceberg'"); + assertQuerySucceeds("select * from system.jdbc.tables where TABLE_CAT = 'iceberg' and TABLE_SCHEM = 'tpch'"); + } } diff --git a/presto-main-base/src/main/java/com/facebook/presto/connector/system/jdbc/SchemaJdbcTable.java b/presto-main-base/src/main/java/com/facebook/presto/connector/system/jdbc/SchemaJdbcTable.java index 2edc3c6290714..bc3e77b066eb3 100644 --- a/presto-main-base/src/main/java/com/facebook/presto/connector/system/jdbc/SchemaJdbcTable.java +++ b/presto-main-base/src/main/java/com/facebook/presto/connector/system/jdbc/SchemaJdbcTable.java @@ -13,6 +13,7 @@ */ package com.facebook.presto.connector.system.jdbc; +import com.facebook.presto.FullConnectorSession; import com.facebook.presto.Session; import com.facebook.presto.common.predicate.TupleDomain; import com.facebook.presto.metadata.Metadata; @@ -30,7 +31,6 @@ import java.util.Optional; import static com.facebook.presto.common.type.VarcharType.createUnboundedVarcharType; -import static com.facebook.presto.connector.system.SystemConnectorSessionUtil.toSession; import static com.facebook.presto.connector.system.jdbc.FilterUtil.filter; import static com.facebook.presto.metadata.MetadataListing.listCatalogs; import static com.facebook.presto.metadata.MetadataListing.listSchemas; @@ -66,7 +66,7 @@ public ConnectorTableMetadata getTableMetadata() @Override public RecordCursor cursor(ConnectorTransactionHandle transactionHandle, ConnectorSession connectorSession, TupleDomain constraint) { - Session session = toSession(transactionHandle, connectorSession); + Session session = ((FullConnectorSession) connectorSession).getSession(); Optional catalogFilter = FilterUtil.stringFilter(constraint, 1); Builder table = InMemoryRecordSet.builder(METADATA); diff --git a/presto-main-base/src/main/java/com/facebook/presto/connector/system/jdbc/TableJdbcTable.java b/presto-main-base/src/main/java/com/facebook/presto/connector/system/jdbc/TableJdbcTable.java index b9d5539fcbd17..e058ae6a10348 100644 --- a/presto-main-base/src/main/java/com/facebook/presto/connector/system/jdbc/TableJdbcTable.java +++ b/presto-main-base/src/main/java/com/facebook/presto/connector/system/jdbc/TableJdbcTable.java @@ -13,6 +13,7 @@ */ package com.facebook.presto.connector.system.jdbc; +import com.facebook.presto.FullConnectorSession; import com.facebook.presto.Session; import com.facebook.presto.common.predicate.TupleDomain; import com.facebook.presto.metadata.Metadata; @@ -33,7 +34,6 @@ import java.util.Set; import static com.facebook.presto.common.type.VarcharType.createUnboundedVarcharType; -import static com.facebook.presto.connector.system.SystemConnectorSessionUtil.toSession; import static com.facebook.presto.connector.system.jdbc.FilterUtil.filter; import static com.facebook.presto.connector.system.jdbc.FilterUtil.stringFilter; import static com.facebook.presto.connector.system.jdbc.FilterUtil.tablePrefix; @@ -80,7 +80,7 @@ public ConnectorTableMetadata getTableMetadata() @Override public RecordCursor cursor(ConnectorTransactionHandle transactionHandle, ConnectorSession connectorSession, TupleDomain constraint) { - Session session = toSession(transactionHandle, connectorSession); + Session session = ((FullConnectorSession) connectorSession).getSession(); Optional catalogFilter = stringFilter(constraint, 0); Optional schemaFilter = stringFilter(constraint, 1); Optional tableFilter = stringFilter(constraint, 2);