Skip to content

Commit e464bac

Browse files
author
diego Dupin
committed
[misc] Configuration initialUrl/toString using simplified host notation when possible
1 parent 6fd7207 commit e464bac

File tree

2 files changed

+25
-32
lines changed

2 files changed

+25
-32
lines changed

src/main/java/org/mariadb/jdbc/Configuration.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,19 +1032,25 @@ protected static String buildUrl(Configuration conf) {
10321032
sb.append(conf.haMode.toString().toLowerCase(Locale.ROOT)).append(":");
10331033
}
10341034
sb.append("//");
1035-
10361035
for (int i = 0; i < conf.addresses.size(); i++) {
10371036
HostAddress hostAddress = conf.addresses.get(i);
10381037
if (i > 0) {
10391038
sb.append(",");
10401039
}
1041-
sb.append("address=(host=")
1042-
.append(hostAddress.host)
1043-
.append(")")
1044-
.append("(port=")
1045-
.append(hostAddress.port)
1046-
.append(")");
1047-
sb.append("(type=").append(hostAddress.primary ? "primary" : "replica").append(")");
1040+
if ((conf.haMode == HaMode.NONE && hostAddress.primary)
1041+
|| (conf.haMode == HaMode.REPLICATION
1042+
&& ((i == 0 && hostAddress.primary) || (i != 0 && !hostAddress.primary)))) {
1043+
sb.append(hostAddress.host);
1044+
if (hostAddress.port != 3306) sb.append(":").append(hostAddress.port);
1045+
} else {
1046+
sb.append("address=(host=")
1047+
.append(hostAddress.host)
1048+
.append(")")
1049+
.append("(port=")
1050+
.append(hostAddress.port)
1051+
.append(")");
1052+
sb.append("(type=").append(hostAddress.primary ? "primary" : "replica").append(")");
1053+
}
10481054
}
10491055

10501056
sb.append("/");

src/test/java/org/mariadb/jdbc/unit/util/ConfigurationTest.java

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,8 @@ public void testUrl() throws SQLException {
9191
.addHost("local", 3306, true)
9292
.haMode(HaMode.REPLICATION)
9393
.build();
94-
assertEquals(
95-
"jdbc:mariadb:replication://address=(host=local)(port=3306)(type=primary)/DB",
96-
conf.initialUrl());
97-
assertEquals(
98-
"jdbc:mariadb:replication://address=(host=local)(port=3306)(type=primary)/DB",
99-
conf.toString());
94+
assertEquals("jdbc:mariadb:replication://local/DB", conf.initialUrl());
95+
assertEquals("jdbc:mariadb:replication://local/DB", conf.toString());
10096
assertEquals(
10197
Configuration.parse(
10298
"jdbc:mariadb:replication://address=(host=local)(port=3306)(type=primary)/DB"),
@@ -110,9 +106,7 @@ public void testUrl() throws SQLException {
110106
.haMode(HaMode.REPLICATION)
111107
.build();
112108

113-
assertEquals(
114-
"jdbc:mariadb:replication://address=(host=local)(port=3306)(type=primary),address=(host=host2)(port=3307)(type=replica)/DB",
115-
conf.initialUrl());
109+
assertEquals("jdbc:mariadb:replication://local,host2:3307/DB", conf.initialUrl());
116110

117111
conf =
118112
new Configuration.Builder()
@@ -121,9 +115,7 @@ public void testUrl() throws SQLException {
121115
.haMode(HaMode.REPLICATION)
122116
.socketTimeout(50)
123117
.build();
124-
assertEquals(
125-
"jdbc:mariadb:replication://address=(host=local)(port=3306)(type=primary)/DB?socketTimeout=50",
126-
conf.initialUrl());
118+
assertEquals("jdbc:mariadb:replication://local/DB?socketTimeout=50", conf.initialUrl());
127119

128120
conf =
129121
new Configuration.Builder()
@@ -135,7 +127,7 @@ public void testUrl() throws SQLException {
135127
.socketTimeout(50)
136128
.build();
137129
assertEquals(
138-
"jdbc:mariadb:replication://address=(host=local)(port=3306)(type=primary),address=(host=local)(port=3307)(type=replica),address=(host=local)(port=3308)(type=replica)/DB?socketTimeout=50",
130+
"jdbc:mariadb:replication://local,local:3307,local:3308/DB?socketTimeout=50",
139131
conf.initialUrl());
140132

141133
conf =
@@ -158,9 +150,7 @@ public void testUrl() throws SQLException {
158150
.haMode(HaMode.REPLICATION)
159151
.autocommit(false)
160152
.build();
161-
assertEquals(
162-
"jdbc:mariadb:replication://address=(host=local)(port=3306)(type=primary)/DB?autocommit=false",
163-
conf.initialUrl());
153+
assertEquals("jdbc:mariadb:replication://local/DB?autocommit=false", conf.initialUrl());
164154
}
165155

166156
@Test
@@ -360,26 +350,23 @@ public void testOptionParseIntegerNotPossible() {
360350
public void testJdbcParserSimpleIpv4basic() throws SQLException {
361351
String url = "jdbc:mariadb://master:3306,slave1:3307,slave2:3308/database";
362352
Configuration conf = Configuration.parse(url);
363-
assertEquals(
364-
"jdbc:mariadb://address=(host=master)(port=3306)(type=primary),address=(host=slave1)(port=3307)(type=primary),address=(host=slave2)(port=3308)(type=primary)/database",
365-
conf.initialUrl());
353+
assertEquals("jdbc:mariadb://master,slave1:3307,slave2:3308/database", conf.initialUrl());
366354
url =
367355
"jdbc:mariadb://address=(host=master)(port=3306)(type=primary),address=(host=slave1)(port=3307)(type=replica),address=(host=slave2)(port=3308)(type=replica)/database";
368356
conf = Configuration.parse(url);
369357
assertEquals(
370-
"jdbc:mariadb://address=(host=master)(port=3306)(type=primary),address=(host=slave1)(port=3307)(type=replica),address=(host=slave2)(port=3308)(type=replica)/database",
358+
"jdbc:mariadb://master,address=(host=slave1)(port=3307)(type=replica),address=(host=slave2)(port=3308)(type=replica)/database",
371359
conf.initialUrl());
372360
url =
373361
"jdbc:mariadb://address=(host=master)(port=3306)(type=master),address=(host=slave1)(port=3307)(type=replica),address=(host=slave2)(port=3308)(type=replica)/database";
374362
conf = Configuration.parse(url);
375363
assertEquals(
376-
"jdbc:mariadb://address=(host=master)(port=3306)(type=primary),address=(host=slave1)(port=3307)(type=replica),address=(host=slave2)(port=3308)(type=replica)/database",
364+
"jdbc:mariadb://master,address=(host=slave1)(port=3307)(type=replica),address=(host=slave2)(port=3308)(type=replica)/database",
377365
conf.initialUrl());
378366
url = "jdbc:mariadb:replication://master:3306,slave1:3307,slave2:3308/database";
379367
conf = Configuration.parse(url);
380368
assertEquals(
381-
"jdbc:mariadb:replication://address=(host=master)(port=3306)(type=primary),address=(host=slave1)(port=3307)(type=replica),address=(host=slave2)(port=3308)(type=replica)/database",
382-
conf.initialUrl());
369+
"jdbc:mariadb:replication://master,slave1:3307,slave2:3308/database", conf.initialUrl());
383370
}
384371

385372
@Test
@@ -814,7 +801,7 @@ public void builder() throws SQLException {
814801
.allowPublicKeyRetrieval(true)
815802
.build();
816803
assertEquals(
817-
"jdbc:mariadb://address=(host=host1)(port=3305)(type=primary),address=(host=host2)(port=3307)(type=replica)/db?user=me&password=pwd&timezone=UTC&autocommit=false&defaultFetchSize=10&maxQuerySizeToLog=100&geometryDefaultType=default&restrictedAuth=mysql_native_password,client_ed25519&socketFactory=someSocketFactory&connectTimeout=22&pipe=pipeName&localSocket=localSocket&tcpKeepAlive=true&tcpKeepIdle=10&tcpKeepCount=50&tcpKeepInterval=50&tcpAbortiveClose=true&localSocketAddress=localSocketAddress&socketTimeout=1000&useReadAheadInput=false&tlsSocketType=TLStype&sslMode=TRUST&serverSslCert=mycertPath&keyStore=/tmp&keyStorePassword=MyPWD&keyStoreType=JKS&enabledSslCipherSuites=myCipher,cipher2&enabledSslProtocolSuites=TLSv1.2&allowMultiQueries=true&allowLocalInfile=true&useCompression=true&useAffectedRows=true&useBulkStmts=false&cachePrepStmts=false&prepStmtCacheSize=2&useServerPrepStmts=true&credentialType=ENV&sessionVariables=blabla&connectionAttributes=bla=bla&servicePrincipalName=SPN&blankTableNameMeta=true&tinyInt1isBit=false&yearIsDateType=false&dumpQueriesOnException=true&includeInnodbStatusInDeadlockExceptions=true&includeThreadDumpInDeadlockExceptions=true&retriesAllDown=10&galeraAllowedState=A,B&transactionReplay=true&pool=true&poolName=myPool&maxPoolSize=16&minPoolSize=12&maxIdleTime=25000&registerJmxPool=false&poolValidMinDelay=260&useResetConnection=true&serverRsaPublicKeyFile=RSAPath&allowPublicKeyRetrieval=true",
804+
"jdbc:mariadb://host1:3305,address=(host=host2)(port=3307)(type=replica)/db?user=me&password=pwd&timezone=UTC&autocommit=false&defaultFetchSize=10&maxQuerySizeToLog=100&geometryDefaultType=default&restrictedAuth=mysql_native_password,client_ed25519&socketFactory=someSocketFactory&connectTimeout=22&pipe=pipeName&localSocket=localSocket&tcpKeepAlive=true&tcpKeepIdle=10&tcpKeepCount=50&tcpKeepInterval=50&tcpAbortiveClose=true&localSocketAddress=localSocketAddress&socketTimeout=1000&useReadAheadInput=false&tlsSocketType=TLStype&sslMode=TRUST&serverSslCert=mycertPath&keyStore=/tmp&keyStorePassword=MyPWD&keyStoreType=JKS&enabledSslCipherSuites=myCipher,cipher2&enabledSslProtocolSuites=TLSv1.2&allowMultiQueries=true&allowLocalInfile=true&useCompression=true&useAffectedRows=true&useBulkStmts=false&cachePrepStmts=false&prepStmtCacheSize=2&useServerPrepStmts=true&credentialType=ENV&sessionVariables=blabla&connectionAttributes=bla=bla&servicePrincipalName=SPN&blankTableNameMeta=true&tinyInt1isBit=false&yearIsDateType=false&dumpQueriesOnException=true&includeInnodbStatusInDeadlockExceptions=true&includeThreadDumpInDeadlockExceptions=true&retriesAllDown=10&galeraAllowedState=A,B&transactionReplay=true&pool=true&poolName=myPool&maxPoolSize=16&minPoolSize=12&maxIdleTime=25000&registerJmxPool=false&poolValidMinDelay=260&useResetConnection=true&serverRsaPublicKeyFile=RSAPath&allowPublicKeyRetrieval=true",
818805
conf.toString());
819806
}
820807

0 commit comments

Comments
 (0)