This is an automated email from the ASF dual-hosted git repository.
Caideyipi pushed a commit to branch codex/jdbc-driver-info
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/codex/jdbc-driver-info by this
push:
new dfcd58996dc Improve JDBC URL parameter parsing
dfcd58996dc is described below
commit dfcd58996dc74787bb0ad1f9c19cc586e76d73c7
Author: Caideyipi <[email protected]>
AuthorDate: Mon Jun 8 17:17:24 2026 +0800
Improve JDBC URL parameter parsing
---
.../main/java/org/apache/iotdb/jdbc/IoTDBDataSource.java | 2 +-
.../jdbc/src/main/java/org/apache/iotdb/jdbc/Utils.java | 8 ++++----
.../org/apache/iotdb/jdbc/IoTDBDataSourceFactoryTest.java | 8 ++++++++
.../src/test/java/org/apache/iotdb/jdbc/UtilsTest.java | 14 ++++++++++++++
4 files changed, 27 insertions(+), 5 deletions(-)
diff --git
a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBDataSource.java
b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBDataSource.java
index 625098acd84..25c6d02c65c 100644
--- a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBDataSource.java
+++ b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBDataSource.java
@@ -49,7 +49,7 @@ public class IoTDBDataSource implements DataSource {
this.properties = new Properties();
setUser(user);
setPassword(password);
- if (port != 0) {
+ if (port != null && port != 0) {
this.port = port;
}
}
diff --git a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/Utils.java
b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/Utils.java
index d45ab312f76..0717430cdd3 100644
--- a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/Utils.java
+++ b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/Utils.java
@@ -164,12 +164,12 @@ public class Utils {
String paramURL = subURL.substring(subURL.indexOf('?') + 1);
String[] params = paramURL.split("&");
for (String tmpParam : params) {
- String[] paramSplit = tmpParam.split("=");
- if (paramSplit.length != 2) {
+ int separatorIndex = tmpParam.indexOf('=');
+ if (separatorIndex <= 0 || separatorIndex == tmpParam.length() - 1) {
return false;
}
- String key = tmpParam.split("=")[0];
- String value = tmpParam.split("=")[1];
+ String key = tmpParam.substring(0, separatorIndex);
+ String value = tmpParam.substring(separatorIndex + 1);
switch (key) {
case RPC_COMPRESS:
if ("true".equalsIgnoreCase(value) ||
"false".equalsIgnoreCase(value)) {
diff --git
a/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/IoTDBDataSourceFactoryTest.java
b/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/IoTDBDataSourceFactoryTest.java
index fbf750d7057..cad6cf80a3c 100644
---
a/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/IoTDBDataSourceFactoryTest.java
+++
b/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/IoTDBDataSourceFactoryTest.java
@@ -70,4 +70,12 @@ public class IoTDBDataSourceFactoryTest {
assertNull(dataSource.getUser());
assertNull(dataSource.getPassword());
}
+
+ @Test
+ public void testDataSourceConstructorAllowsNullPort() {
+ IoTDBDataSource dataSource =
+ new IoTDBDataSource("jdbc:iotdb://localhost:6667", null, null, null);
+
+ assertEquals(Integer.valueOf(6667), dataSource.getPort());
+ }
}
diff --git
a/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/UtilsTest.java
b/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/UtilsTest.java
index b049d8b75b0..1be8c236dfb 100644
--- a/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/UtilsTest.java
+++ b/iotdb-client/jdbc/src/test/java/org/apache/iotdb/jdbc/UtilsTest.java
@@ -174,4 +174,18 @@ public class UtilsTest {
Utils.parseUrl("jdbc:iotdb://127.0.0.1:6667?rpc_compress=true",
properties);
assertTrue(Config.rpcThriftCompressionEnable);
}
+
+ @Test
+ public void testParseUrlParamValueAllowsEqualsSign() throws
IoTDBURLException {
+ Properties properties = new Properties();
+
+ Utils.parseUrl("jdbc:iotdb://127.0.0.1:6667?trust_store_pwd=a=b=c",
properties);
+
+ assertEquals("a=b=c", properties.getProperty(Config.TRUST_STORE_PWD));
+ }
+
+ @Test(expected = IoTDBURLException.class)
+ public void testParseUrlParamRejectsEmptyValue() throws IoTDBURLException {
+ Utils.parseUrl("jdbc:iotdb://127.0.0.1:6667?use_ssl=", new Properties());
+ }
}