From e036ddc10eb12c887c40f3c35ae4643e965a118f Mon Sep 17 00:00:00 2001 From: ajay kharat Date: Thu, 3 Jul 2025 16:20:11 +0530 Subject: [PATCH] Handle binary varying type introduced in newer Redshift drivers --- .../presto/plugin/redshift/RedshiftClient.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/presto-redshift/src/main/java/com/facebook/presto/plugin/redshift/RedshiftClient.java b/presto-redshift/src/main/java/com/facebook/presto/plugin/redshift/RedshiftClient.java index a12d04307f5eb..2266603937f6c 100644 --- a/presto-redshift/src/main/java/com/facebook/presto/plugin/redshift/RedshiftClient.java +++ b/presto-redshift/src/main/java/com/facebook/presto/plugin/redshift/RedshiftClient.java @@ -19,6 +19,8 @@ import com.facebook.presto.plugin.jdbc.DriverConnectionFactory; import com.facebook.presto.plugin.jdbc.JdbcConnectorId; import com.facebook.presto.plugin.jdbc.JdbcIdentity; +import com.facebook.presto.plugin.jdbc.JdbcTypeHandle; +import com.facebook.presto.plugin.jdbc.ReadMapping; import com.facebook.presto.spi.ConnectorSession; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.SchemaTableName; @@ -28,8 +30,10 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; +import java.util.Optional; import static com.facebook.presto.plugin.jdbc.JdbcErrorCode.JDBC_ERROR; +import static com.facebook.presto.plugin.jdbc.StandardReadMappings.varbinaryReadMapping; import static java.lang.String.format; public class RedshiftClient @@ -66,4 +70,17 @@ protected void renameTable(JdbcIdentity identity, String catalogName, SchemaTabl throw new PrestoException(JDBC_ERROR, e); } } + + // Maps "binary varying" (Redshift driver >= 2.1.0.32) to VARBINARY. + @Override + public Optional toPrestoType(ConnectorSession session, JdbcTypeHandle typeHandle) + { + String typeName = typeHandle.getJdbcTypeName(); + + if (typeName.equalsIgnoreCase("binary varying")) { + return Optional.of(varbinaryReadMapping()); + } + + return super.toPrestoType(session, typeHandle); + } }