Skip to content

Commit 32109aa

Browse files
committed
add ipv6 port support
1 parent 2cddb44 commit 32109aa

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

java-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcUrlUtility.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -898,6 +898,22 @@ private static void parseAuthority(String urlPart, Map<String, String> map) {
898898
return;
899899
}
900900

901+
if (authority.startsWith("[")) {
902+
int closingBracketIndex = authority.indexOf(']');
903+
if (closingBracketIndex != -1) {
904+
String host = authority.substring(0, closingBracketIndex + 1).trim();
905+
String rest = authority.substring(closingBracketIndex + 1).trim();
906+
map.put(PROXY_HOST_PROPERTY_NAME, host);
907+
if (rest.startsWith(":")) {
908+
String port = rest.substring(1).trim();
909+
if (!port.isEmpty()) {
910+
map.put(PROXY_PORT_PROPERTY_NAME, port);
911+
}
912+
}
913+
return;
914+
}
915+
}
916+
901917
int colonIndex = authority.indexOf(':');
902918
if (colonIndex == -1) {
903919
map.put(PROXY_HOST_PROPERTY_NAME, authority);

java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryJdbcUrlUtilityTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,4 +305,22 @@ public void testDataSourceFromUrlAuthorityProxy() {
305305
assertThat(ds.getProxyHost()).isEqualTo("proxy.example.com");
306306
assertThat(ds.getProxyPort()).isEqualTo("8080");
307307
}
308+
309+
@Test
310+
public void testParseAuthorityProxyIpv6() {
311+
String url = "jdbc:bigquery://[::1]:8080;ProjectId=MyProject";
312+
String proxyHost = BigQueryJdbcUrlUtility.parseUriProperty(url, "ProxyHost");
313+
String proxyPort = BigQueryJdbcUrlUtility.parseUriProperty(url, "ProxyPort");
314+
assertThat(proxyHost).isEqualTo("[::1]");
315+
assertThat(proxyPort).isEqualTo("8080");
316+
}
317+
318+
@Test
319+
public void testParseAuthorityProxyIpv6NoPort() {
320+
String url = "jdbc:bigquery://[::1];ProjectId=MyProject";
321+
String proxyHost = BigQueryJdbcUrlUtility.parseUriProperty(url, "ProxyHost");
322+
String proxyPort = BigQueryJdbcUrlUtility.parseUriProperty(url, "ProxyPort");
323+
assertThat(proxyHost).isEqualTo("[::1]");
324+
assertThat(proxyPort).isNull();
325+
}
308326
}

0 commit comments

Comments
 (0)