Skip to content

Commit 003c746

Browse files
authored
Add metadata URL (#385)
1 parent ead21e0 commit 003c746

File tree

5 files changed

+28
-5
lines changed

5 files changed

+28
-5
lines changed

src/main/java/com/databricks/jdbc/core/DatabricksDatabaseMetaData.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ public boolean allTablesAreSelectable() throws SQLException {
4949
@Override
5050
public String getURL() throws SQLException {
5151
LoggingUtil.log(LogLevel.DEBUG, "public String getURL()");
52-
throw new UnsupportedOperationException(
53-
"Not implemented in DatabricksDatabaseMetaData - getURL()");
52+
return this.session.getConnectionContext().getConnectionURL();
5453
}
5554

5655
@Override

src/main/java/com/databricks/jdbc/driver/DatabricksConnectionContext.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class DatabricksConnectionContext implements IDatabricksConnectionContext
2424
private final String host;
2525
@VisibleForTesting final int port;
2626
private final String schema;
27+
private final String connectionURL;
2728
private final ComputeResource computeResource;
2829
private static DatabricksMetrics metricsExporter;
2930
@VisibleForTesting final ImmutableMap<String, String> parameters;
@@ -76,7 +77,8 @@ public static IDatabricksConnectionContext parse(String url, Properties properti
7677
parametersBuilder.put(entry.getKey().toString().toLowerCase(), entry.getValue().toString());
7778
}
7879
DatabricksConnectionContext context =
79-
new DatabricksConnectionContext(hostValue, portValue, schema, parametersBuilder.build());
80+
new DatabricksConnectionContext(
81+
url, hostValue, portValue, schema, parametersBuilder.build());
8082
metricsExporter = new DatabricksMetrics(context);
8183
return context;
8284
} else {
@@ -106,8 +108,13 @@ private static void handleInvalidUrl(String url) throws DatabricksParsingExcepti
106108
}
107109

108110
private DatabricksConnectionContext(
109-
String host, int port, String schema, ImmutableMap<String, String> parameters)
111+
String connectionURL,
112+
String host,
113+
int port,
114+
String schema,
115+
ImmutableMap<String, String> parameters)
110116
throws DatabricksSQLException {
117+
this.connectionURL = connectionURL;
111118
this.host = host;
112119
this.port = port;
113120
this.schema = schema;
@@ -552,4 +559,9 @@ public boolean isFakeServiceTest() {
552559
public boolean enableTelemetry() {
553560
return Objects.equals(getParameter(ENABLE_TELEMETRY, "0"), "1");
554561
}
562+
563+
@Override
564+
public String getConnectionURL() {
565+
return connectionURL;
566+
}
555567
}

src/main/java/com/databricks/jdbc/driver/IDatabricksConnectionContext.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,4 +150,6 @@ public static AuthMech parseAuthMech(String authMech) {
150150
boolean isFakeServiceTest();
151151

152152
boolean enableTelemetry();
153+
154+
String getConnectionURL();
153155
}

src/test/java/com/databricks/jdbc/core/DatabricksDatabaseMetaDataTest.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package com.databricks.jdbc.core;
22

3+
import static com.databricks.jdbc.TestConstants.WAREHOUSE_JDBC_URL;
34
import static org.junit.jupiter.api.Assertions.*;
45
import static org.mockito.ArgumentMatchers.any;
56
import static org.mockito.Mockito.when;
67

78
import com.databricks.jdbc.client.DatabricksMetadataClient;
9+
import com.databricks.jdbc.driver.DatabricksConnectionContext;
810
import java.sql.*;
911
import java.util.Arrays;
1012
import java.util.List;
13+
import java.util.Properties;
1114
import java.util.concurrent.Callable;
1215
import org.junit.jupiter.api.BeforeEach;
1316
import org.junit.jupiter.api.Test;
@@ -38,6 +41,8 @@ public void setup() throws SQLException {
3841
.thenReturn(Mockito.mock(DatabricksResultSet.class));
3942
when(metadataClient.listSchemas(any(), any(), any()))
4043
.thenReturn(Mockito.mock(DatabricksResultSet.class));
44+
when(session.getConnectionContext())
45+
.thenReturn(DatabricksConnectionContext.parse(WAREHOUSE_JDBC_URL, new Properties()));
4146
when(metadataClient.listCatalogs(any())).thenReturn(Mockito.mock(DatabricksResultSet.class));
4247
when(metadataClient.listTableTypes(any())).thenReturn(Mockito.mock(DatabricksResultSet.class));
4348
when(metadataClient.listTypeInfo(any())).thenReturn(Mockito.mock(DatabricksResultSet.class));
@@ -879,6 +884,11 @@ public void testSupportsAlterTableWithAddColumn() throws SQLException {
879884
assertFalse(result);
880885
}
881886

887+
@Test
888+
public void testGetUrl() throws SQLException {
889+
assertEquals(metaData.getURL(), WAREHOUSE_JDBC_URL);
890+
}
891+
882892
@Test
883893
public void testSupportsAlterTableWithDropColumn() throws SQLException {
884894
boolean result = metaData.supportsAlterTableWithDropColumn();
@@ -973,7 +983,6 @@ public void testGetResultSetHoldability() throws SQLException {
973983
public void testUnsupportedOperations() {
974984
List<Callable<Object>> tasks =
975985
Arrays.asList(
976-
() -> metaData.getURL(),
977986
() -> metaData.supportsTransactionIsolationLevel(0),
978987
() -> metaData.getDriverMajorVersion(),
979988
() -> metaData.getDriverMinorVersion(),

src/test/java/com/databricks/jdbc/driver/DatabricksConnectionContextTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ public void testParseValid() throws DatabricksSQLException {
116116
(DatabricksConnectionContext) DatabricksConnectionContext.parse(VALID_URL_1, properties);
117117
assertEquals(
118118
"https://adb-565757575.18.azuredatabricks.net:4423", connectionContext.getHostUrl());
119+
assertEquals(VALID_URL_1, connectionContext.getConnectionURL());
119120
assertEquals("/sql/1.0/warehouses/erg6767gg", connectionContext.getHttpPath());
120121
assertEquals("passwd", connectionContext.getToken());
121122
assertEquals(

0 commit comments

Comments
 (0)