From ede76cfe13512422443d0c17c8d31feae31c5135 Mon Sep 17 00:00:00 2001 From: Joel Bernstein Date: Fri, 15 Jan 2016 18:30:11 +0000 Subject: [PATCH] SOLR-8502: Implement DatabaseMetaDataImpl.getURL() git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1724867 13f79535-47bb-0310-9956-ffa450edef68 --- .../client/solrj/io/sql/ConnectionImpl.java | 8 +++++++- .../solrj/io/sql/DatabaseMetaDataImpl.java | 2 +- .../solr/client/solrj/io/sql/DriverImpl.java | 2 +- .../solr/client/solrj/io/sql/JdbcTest.java | 18 ++++++++++++++++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ConnectionImpl.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ConnectionImpl.java index f0ce0b7978c..ce5d57668c6 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ConnectionImpl.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/ConnectionImpl.java @@ -41,18 +41,24 @@ import org.apache.solr.client.solrj.io.SolrClientCache; class ConnectionImpl implements Connection { + private final String url; private SolrClientCache sqlSolrClientCache = new SolrClientCache(); private CloudSolrClient client; private String collection; Properties props; private boolean closed; - ConnectionImpl(String zkHost, String collection, Properties props) { + ConnectionImpl(String url, String zkHost, String collection, Properties props) { + this.url = url; this.client = sqlSolrClientCache.getCloudSolrClient(zkHost); this.collection = collection; this.props = props; } + String getUrl() { + return url; + } + @Override public Statement createStatement() throws SQLException { return new StatementImpl(client, this.collection, props, sqlSolrClientCache); diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/DatabaseMetaDataImpl.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/DatabaseMetaDataImpl.java index ba8ede8b952..444a18fc742 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/DatabaseMetaDataImpl.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/DatabaseMetaDataImpl.java @@ -42,7 +42,7 @@ class DatabaseMetaDataImpl implements DatabaseMetaData { @Override public String getURL() throws SQLException { - return null; + return this.connection.getUrl(); } @Override diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/DriverImpl.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/DriverImpl.java index e90d4b7d039..d850f69bcad 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/DriverImpl.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/sql/DriverImpl.java @@ -69,7 +69,7 @@ public class DriverImpl implements Driver { String zkHost = uri.getAuthority() + uri.getPath(); - return new ConnectionImpl(zkHost, collection, props); + return new ConnectionImpl(url, zkHost, collection, props); } public Connection connect(String url) throws SQLException { diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java index 2a638ddfa03..47dbafe1faf 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java @@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.io.sql; import java.io.File; import java.sql.Connection; +import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; @@ -299,5 +300,22 @@ public class JdbcTest extends AbstractFullDistribZkTestBase { stmt.close(); con.close(); + + testDriverMetadata(); + } + + private void testDriverMetadata() throws Exception { + String collection = DEFAULT_COLLECTION; + String connectionString = "jdbc:solr://" + zkServer.getZkAddress() + "?collection=" + collection + + "&username=&password=&testKey1=testValue&testKey2"; + + try (Connection con = DriverManager.getConnection(connectionString)) { + assertEquals(collection, con.getCatalog()); + + DatabaseMetaData databaseMetaData = con.getMetaData(); + assertNotNull(databaseMetaData); + + assertEquals(connectionString, databaseMetaData.getURL()); + } } }