From 24e8b873b88a757b1b91331c8e9e8193ec24224f Mon Sep 17 00:00:00 2001 From: "serge@jkiss.org" Date: Wed, 7 Aug 2019 23:26:09 +0200 Subject: [PATCH] #6025 Presto: array data type resolution fix --- plugins/org.jkiss.dbeaver.ext.generic/plugin.xml | 4 ++-- .../jkiss/dbeaver/model/impl/jdbc/data/JDBCCollection.java | 6 +++++- .../src/org/jkiss/dbeaver/model/sql/SQLUtils.java | 6 +++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.ext.generic/plugin.xml b/plugins/org.jkiss.dbeaver.ext.generic/plugin.xml index 8dd97f296c..a9bbf91e12 100644 --- a/plugins/org.jkiss.dbeaver.ext.generic/plugin.xml +++ b/plugins/org.jkiss.dbeaver.ext.generic/plugin.xml @@ -875,7 +875,7 @@ icon="icons/presto_icon.png" iconBig="icons/presto_icon_big.png" class="com.facebook.presto.jdbc.PrestoDriver" - sampleURL="jdbc:presto://{host}:{port}/{database}" + sampleURL="jdbc:presto://{host}:{port}[/{database}]" defaultPort="8080" description="Facebook Presto (prestodb) JDBC driver" webURL="https://prestodb.io/" @@ -892,7 +892,7 @@ icon="icons/presto_icon.png" iconBig="icons/presto_icon_big.png" class="io.prestosql.jdbc.PrestoDriver" - sampleURL="jdbc:presto://{host}:{port}/{database}" + sampleURL="jdbc:presto://{host}:{port}[/{database}]" defaultPort="8080" description="Presto (prestosql) JDBC driver" webURL="https://prestosql.io/" diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/data/JDBCCollection.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/data/JDBCCollection.java index 4998a71db2..06a2608b13 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/data/JDBCCollection.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/impl/jdbc/data/JDBCCollection.java @@ -221,7 +221,11 @@ public class JDBCCollection implements DBDCollection, DBDValueCloneable { try { if (array != null) { String baseTypeName = array.getBaseTypeName(); - elementType = dataSource.resolveDataType(monitor, baseTypeName); + if (baseTypeName != null) { + // Strip type name [Presto, #6025] + baseTypeName = SQLUtils.stripColumnTypeModifiers(baseTypeName); + elementType = dataSource.resolveDataType(monitor, baseTypeName); + } } } catch (Exception e) { throw new DBCException("Error resolving data type", e); diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/SQLUtils.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/SQLUtils.java index 8dc8dffd4d..88ef131b53 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/SQLUtils.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/SQLUtils.java @@ -1035,11 +1035,11 @@ public final class SQLUtils { public static String stripColumnTypeModifiers(String type) { int startPos = type.indexOf("("); if (startPos != -1) { - int endPos = type.indexOf(")", startPos + 1); + int endPos = type.lastIndexOf(")"); if (endPos != -1) { - return type.substring(0, startPos).trim() + " " + type.substring(endPos + 1).trim(); + return type.substring(0, startPos); } } - return null; + return type; } } \ No newline at end of file -- GitLab