Skip to content

Commit cf732e1

Browse files
committed
feat: support spanner prefix jdbc url
1 parent 3cdaad9 commit cf732e1

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

src/main/java/com/google/cloud/spanner/jdbc/JdbcDriver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ public JdbcDriver() {}
216216

217217
@Override
218218
public Connection connect(String url, Properties info) throws SQLException {
219-
if (url != null && url.startsWith("jdbc:cloudspanner")) {
219+
if (url != null && (url.startsWith("jdbc:cloudspanner") || url.startsWith("jdbc:spanner"))) {
220220
try {
221221
Matcher matcher = URL_PATTERN.matcher(url);
222222
Matcher matcherExternalHost = EXTERNAL_HOST_URL_PATTERN.matcher(url);

src/test/java/com/google/cloud/spanner/jdbc/JdbcDriverTest.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import java.util.Objects;
5151
import java.util.Properties;
5252
import java.util.regex.Matcher;
53+
import java.util.regex.Pattern;
5354
import org.junit.AfterClass;
5455
import org.junit.BeforeClass;
5556
import org.junit.Test;
@@ -217,29 +218,37 @@ public void testLenient() throws SQLException {
217218

218219
@Test
219220
public void testJdbcExternalHostFormat() {
221+
Matcher matcher =
222+
Pattern.compile("jdbc:\\(\\?:([a-z]+):.*").matcher(EXTERNAL_HOST_URL_PATTERN.pattern());
223+
String prefix = matcher.matches() ? matcher.group(1) : null;
220224
Matcher matcherWithoutInstance =
221-
EXTERNAL_HOST_URL_PATTERN.matcher("jdbc:cloudspanner://localhost:15000/databases/test-db");
225+
EXTERNAL_HOST_URL_PATTERN.matcher(
226+
String.format("jdbc:%s://localhost:15000/databases/test-db", prefix));
222227
assertTrue(matcherWithoutInstance.matches());
223228
assertEquals("test-db", matcherWithoutInstance.group("DATABASEGROUP"));
224229
Matcher matcherWithProperty =
225230
EXTERNAL_HOST_URL_PATTERN.matcher(
226-
"jdbc:cloudspanner://localhost:15000/instances/default/databases/singers-db?usePlainText=true");
231+
String.format(
232+
"jdbc:%s://localhost:15000/instances/default/databases/singers-db?usePlainText=true",
233+
prefix));
227234
assertTrue(matcherWithProperty.matches());
228235
assertEquals("default", matcherWithProperty.group("INSTANCEGROUP"));
229236
assertEquals("singers-db", matcherWithProperty.group("DATABASEGROUP"));
230237
Matcher matcherWithoutPort =
231238
EXTERNAL_HOST_URL_PATTERN.matcher(
232-
"jdbc:cloudspanner://localhost/instances/default/databases/test-db");
239+
String.format("jdbc:%s://localhost/instances/default/databases/test-db", prefix));
233240
assertTrue(matcherWithoutPort.matches());
234241
assertEquals("default", matcherWithoutPort.group("INSTANCEGROUP"));
235242
assertEquals("test-db", matcherWithoutPort.group("DATABASEGROUP"));
236243
Matcher matcherWithProject =
237244
EXTERNAL_HOST_URL_PATTERN.matcher(
238-
"jdbc:cloudspanner://localhost:15000/projects/default/instances/default/databases/singers-db");
245+
String.format(
246+
"jdbc:%s://localhost:15000/projects/default/instances/default/databases/singers-db",
247+
prefix));
239248
assertFalse(matcherWithProject.matches());
240249
Matcher matcherWithoutHost =
241250
EXTERNAL_HOST_URL_PATTERN.matcher(
242-
"jdbc:cloudspanner:/instances/default/databases/singers-db");
251+
String.format("jdbc:%s:/instances/default/databases/singers-db", prefix));
243252
assertFalse(matcherWithoutHost.matches());
244253
}
245254
}

0 commit comments

Comments
 (0)