From f4b5cadeba44d601fd3ba2e241e2379e4f9f50f1 Mon Sep 17 00:00:00 2001 From: misterjpapa Date: Tue, 6 Aug 2024 21:30:21 -0700 Subject: [PATCH] Prepend jdbc: to DatabaseMetaData.getURL result Fixed the PrestoDatabaseMetaData implementation of the getURL method to include the jdbc: prefix in the resulting URL. A JDBC URL always starts with jdbc:. Added an unit and a product test to verify that the database connection URL starts with the expected jdbc: prefix. --- .../facebook/presto/jdbc/PrestoDatabaseMetaData.java | 3 ++- .../presto/jdbc/TestPrestoDatabaseMetaData.java | 8 ++++++++ .../com/facebook/presto/tests/jdbc/JdbcTests.java | 11 +++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoDatabaseMetaData.java b/presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoDatabaseMetaData.java index 2b28fd5939a28..a49db1ea6e40a 100644 --- a/presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoDatabaseMetaData.java +++ b/presto-jdbc/src/main/java/com/facebook/presto/jdbc/PrestoDatabaseMetaData.java @@ -33,6 +33,7 @@ public class PrestoDatabaseMetaData implements DatabaseMetaData { + private static final String JDBC_URL_START = "jdbc:"; private static final String SEARCH_STRING_ESCAPE = "\\"; private final PrestoConnection connection; @@ -60,7 +61,7 @@ public boolean allTablesAreSelectable() public String getURL() throws SQLException { - return connection.getURI().toString(); + return JDBC_URL_START + connection.getURI().toString(); } @Override diff --git a/presto-jdbc/src/test/java/com/facebook/presto/jdbc/TestPrestoDatabaseMetaData.java b/presto-jdbc/src/test/java/com/facebook/presto/jdbc/TestPrestoDatabaseMetaData.java index 86f3ef3fbbe31..17e64f99121ab 100644 --- a/presto-jdbc/src/test/java/com/facebook/presto/jdbc/TestPrestoDatabaseMetaData.java +++ b/presto-jdbc/src/test/java/com/facebook/presto/jdbc/TestPrestoDatabaseMetaData.java @@ -174,6 +174,14 @@ public void testGetClientInfoProperties() } } + @Test + public void testGetUrl() + throws Exception + { + DatabaseMetaData metaData = connection.getMetaData(); + assertEquals(metaData.getURL(), "jdbc:presto://" + server.getAddress()); + } + private static void assertColumnSpec(ResultSet rs, int dataType, Long precision, Long numPrecRadix, String typeName) throws SQLException { diff --git a/presto-product-tests/src/main/java/com/facebook/presto/tests/jdbc/JdbcTests.java b/presto-product-tests/src/main/java/com/facebook/presto/tests/jdbc/JdbcTests.java index 478cec35d6557..7c9d155100336 100644 --- a/presto-product-tests/src/main/java/com/facebook/presto/tests/jdbc/JdbcTests.java +++ b/presto-product-tests/src/main/java/com/facebook/presto/tests/jdbc/JdbcTests.java @@ -304,6 +304,17 @@ public void testDeallocate() } } + @Test(groups = JDBC) + @Requires(ImmutableNationTable.class) + public void testMetaDataGetURL() + throws SQLException + { + DatabaseMetaData metaData = metaData(); + String url = metaData.getURL(); + assertThat(url).startsWith("jdbc:presto://"); + assertThat(url).isEqualTo(prestoJdbcURL); + } + private QueryResult queryResult(Statement statement, String query) throws SQLException {