This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch ty/useXX in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 6d709c8b2b1476531b71ddfd84774782e6ed6e8c Author: JackieTien97 <[email protected]> AuthorDate: Wed Jul 3 09:57:02 2024 +0800 init --- .../jdbc/src/main/java/org/apache/iotdb/jdbc/Config.java | 2 ++ .../main/java/org/apache/iotdb/jdbc/IoTDBConnection.java | 2 ++ .../java/org/apache/iotdb/jdbc/IoTDBConnectionParams.java | 11 +++++++++++ .../jdbc/src/main/java/org/apache/iotdb/jdbc/Utils.java | 4 ++++ .../src/main/java/org/apache/iotdb/session/Session.java | 14 ++++++++++++-- .../java/org/apache/iotdb/session/SessionConnection.java | 14 ++++++++++++-- .../java/org/apache/iotdb/session/pool/SessionPool.java | 12 ++++++++++++ .../iotdb/session/subscription/SubscriptionSession.java | 2 +- .../subscription/SubscriptionSessionConnection.java | 5 +++-- .../org/apache/iotdb/session/SessionConnectionTest.java | 6 ++++-- 10 files changed, 63 insertions(+), 9 deletions(-) diff --git a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/Config.java b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/Config.java index eb347224d95..0b1049330ea 100644 --- a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/Config.java +++ b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/Config.java @@ -83,4 +83,6 @@ public class Config { public static final String TRUST_STORE_PWD = "trust_store_pwd"; public static final String SQL_DIALECT = "sql_dialect"; + + public static final String DATABASE = "db"; } diff --git a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBConnection.java b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBConnection.java index b4bdda425e3..f62ed9799fc 100644 --- a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBConnection.java +++ b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBConnection.java @@ -62,6 +62,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.concurrent.Executor; +import javax.sql.DataSource; public class IoTDBConnection implements Connection { @@ -499,6 +500,7 @@ public class IoTDBConnection implements Connection { openReq.setZoneId(getTimeZone()); openReq.putToConfiguration(Config.VERSION, params.getVersion().toString()); openReq.putToConfiguration(Config.SQL_DIALECT, params.getSqlDialect()); + params.getDb().ifPresent(db -> openReq.putToConfiguration(Config.DATABASE, db)); TSOpenSessionResp openResp = null; try { diff --git a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBConnectionParams.java b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBConnectionParams.java index e70b5e5a559..71d4178c61a 100644 --- a/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBConnectionParams.java +++ b/iotdb-client/jdbc/src/main/java/org/apache/iotdb/jdbc/IoTDBConnectionParams.java @@ -25,6 +25,7 @@ import org.apache.tsfile.common.conf.TSFileConfig; import java.nio.charset.Charset; import java.time.ZoneId; +import java.util.Optional; public class IoTDBConnectionParams { @@ -51,6 +52,8 @@ public class IoTDBConnectionParams { private String sqlDialect = "tree"; + private String db; + public IoTDBConnectionParams(String url) { this.jdbcUriString = url; } @@ -186,4 +189,12 @@ public class IoTDBConnectionParams { public void setSqlDialect(String sqlDialect) { this.sqlDialect = sqlDialect; } + + public Optional<String> getDb() { + return Optional.of(db); + } + + public void setDb(String db) { + this.db = db; + } } 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 bdea45fb2d9..41283e24e42 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 @@ -120,6 +120,9 @@ public class Utils { if (info.containsKey(Config.SQL_DIALECT)) { params.setSqlDialect(info.getProperty(Config.SQL_DIALECT)); } + if (info.containsKey(Config.DATABASE)) { + params.setDb(info.getProperty(Config.DATABASE)); + } return params; } @@ -159,6 +162,7 @@ public class Utils { case Config.VERSION: case Config.NETWORK_TIMEOUT: case Config.SQL_DIALECT: + case Config.DATABASE: info.put(key, value); break; case Config.TIME_ZONE: diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java index 533e0c9df47..18a9142335c 100644 --- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java +++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java @@ -176,6 +176,8 @@ public class Session implements ISession { protected String sqlDialect = SessionConfig.SQL_DIALECT; + protected String database; + private static final String REDIRECT_TWICE = "redirect twice"; private static final String REDIRECT_TWICE_RETRY = "redirect twice, please try again."; @@ -440,6 +442,7 @@ public class Session implements ISession { this.retryIntervalInMs = builder.retryIntervalInMs; this.sqlDialect = builder.sqlDialect; this.queryTimeoutInMs = builder.timeOut; + this.database = builder.database; } @Override @@ -600,10 +603,10 @@ public class Session implements ISession { Session session, TEndPoint endpoint, ZoneId zoneId) throws IoTDBConnectionException { if (endpoint == null) { return new SessionConnection( - session, zoneId, availableNodes, maxRetryCount, retryIntervalInMs, sqlDialect); + session, zoneId, availableNodes, maxRetryCount, retryIntervalInMs, sqlDialect, database); } return new SessionConnection( - session, endpoint, zoneId, availableNodes, maxRetryCount, retryIntervalInMs, sqlDialect); + session, endpoint, zoneId, availableNodes, maxRetryCount, retryIntervalInMs, sqlDialect, database); } @Override @@ -3852,6 +3855,8 @@ public class Session implements ISession { private String sqlDialect = SessionConfig.SQL_DIALECT; + private String database; + public Builder useSSL(boolean useSSL) { this.useSSL = useSSL; return this; @@ -3954,6 +3959,11 @@ public class Session implements ISession { return this; } + public Builder database(String database) { + this.database = database; + return this; + } + public Session build() { if (nodeUrls != null && (!SessionConfig.DEFAULT_HOST.equals(host) || rpcPort != SessionConfig.DEFAULT_PORT)) { diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java index 10b4295db20..c6682ed8f2a 100644 --- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java +++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/SessionConnection.java @@ -107,12 +107,15 @@ public class SessionConnection { private final String sqlDialect; + private final String database; + // TestOnly public SessionConnection() { availableNodes = Collections::emptyList; this.maxRetryCount = Math.max(0, SessionConfig.MAX_RETRY_COUNT); this.retryIntervalInMs = Math.max(0, SessionConfig.RETRY_INTERVAL_IN_MS); this.sqlDialect = "tree"; + database = null; } public SessionConnection( @@ -122,7 +125,8 @@ public class SessionConnection { Supplier<List<TEndPoint>> availableNodes, int maxRetryCount, long retryIntervalInMs, - String sqlDialect) + String sqlDialect, + String database) throws IoTDBConnectionException { this.session = session; this.endPoint = endPoint; @@ -132,6 +136,7 @@ public class SessionConnection { this.maxRetryCount = Math.max(0, maxRetryCount); this.retryIntervalInMs = Math.max(0, retryIntervalInMs); this.sqlDialect = sqlDialect; + this.database = database; try { init(endPoint, session.useSSL, session.trustStore, session.trustStorePwd); } catch (StatementExecutionException e) { @@ -147,7 +152,8 @@ public class SessionConnection { Supplier<List<TEndPoint>> availableNodes, int maxRetryCount, long retryIntervalInMs, - String sqlDialect) + String sqlDialect, + String database) throws IoTDBConnectionException { this.session = session; this.zoneId = zoneId == null ? ZoneId.systemDefault() : zoneId; @@ -156,6 +162,7 @@ public class SessionConnection { this.maxRetryCount = Math.max(0, maxRetryCount); this.retryIntervalInMs = Math.max(0, retryIntervalInMs); this.sqlDialect = sqlDialect; + this.database = database; initClusterConn(); } @@ -198,6 +205,9 @@ public class SessionConnection { openReq.setZoneId(zoneId.toString()); openReq.putToConfiguration("version", session.version.toString()); openReq.putToConfiguration("sql_dialect", sqlDialect); + if (database != null) { + openReq.putToConfiguration("database", database); + } try { TSOpenSessionResp openResp = client.openSession(openReq); diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java index 43f1817eb7e..8eeeb950f51 100644 --- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java +++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/pool/SessionPool.java @@ -155,6 +155,8 @@ public class SessionPool implements ISessionPool { protected String sqlDialect = SessionConfig.SQL_DIALECT; + protected String database; + private static final String INSERT_RECORD_FAIL = "insertRecord failed"; private static final String INSERT_RECORD_ERROR_MSG = "unexpected error in insertRecord"; @@ -490,6 +492,7 @@ public class SessionPool implements ISessionPool { this.maxRetryCount = builder.maxRetryCount; this.retryIntervalInMs = builder.retryIntervalInMs; this.sqlDialect = builder.sqlDialect; + this.database = builder.defaultDatabase; this.queryTimeoutInMs = builder.queryTimeoutInMs; if (enableAutoFetch) { @@ -546,6 +549,7 @@ public class SessionPool implements ISessionPool { .maxRetryCount(maxRetryCount) .retryIntervalInMs(retryIntervalInMs) .sqlDialect(sqlDialect) + .database(database) .timeOut(queryTimeoutInMs) .build(); } else { @@ -568,6 +572,7 @@ public class SessionPool implements ISessionPool { .maxRetryCount(maxRetryCount) .retryIntervalInMs(retryIntervalInMs) .sqlDialect(sqlDialect) + .database(database) .timeOut(queryTimeoutInMs) .build(); } @@ -3541,6 +3546,8 @@ public class SessionPool implements ISessionPool { private String sqlDialect = SessionConfig.SQL_DIALECT; private long queryTimeoutInMs = SessionConfig.DEFAULT_QUERY_TIME_OUT; + private String defaultDatabase; + public Builder useSSL(boolean useSSL) { this.useSSL = useSSL; return this; @@ -3661,6 +3668,11 @@ public class SessionPool implements ISessionPool { return this; } + public Builder database(String database) { + this.defaultDatabase = database; + return this; + } + public SessionPool build() { return new SessionPool(this); } diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSession.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSession.java index 307629bd868..d035400efc5 100644 --- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSession.java +++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSession.java @@ -75,7 +75,7 @@ public class SubscriptionSession extends Session { "Subscription session must be configured with an endpoint."); } return new SubscriptionSessionConnection( - session, endpoint, zoneId, availableNodes, maxRetryCount, retryIntervalInMs, sqlDialect); + session, endpoint, zoneId, availableNodes, maxRetryCount, retryIntervalInMs, sqlDialect, database); } /////////////////////////////// topic /////////////////////////////// diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionConnection.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionConnection.java index 16f4959fffb..7cca80e0402 100644 --- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionConnection.java +++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionConnection.java @@ -52,9 +52,10 @@ public class SubscriptionSessionConnection extends SessionConnection { Supplier<List<TEndPoint>> availableNodes, int maxRetryCount, long retryIntervalInMs, - String sqlDialect) + String sqlDialect, + String database) throws IoTDBConnectionException { - super(session, endPoint, zoneId, availableNodes, maxRetryCount, retryIntervalInMs, sqlDialect); + super(session, endPoint, zoneId, availableNodes, maxRetryCount, retryIntervalInMs, sqlDialect, database); } // from org.apache.iotdb.session.NodesSupplier.updateDataNodeList diff --git a/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionConnectionTest.java b/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionConnectionTest.java index f4be6898d2f..0785bc800d9 100644 --- a/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionConnectionTest.java +++ b/iotdb-client/session/src/test/java/org/apache/iotdb/session/SessionConnectionTest.java @@ -173,7 +173,8 @@ public class SessionConnectionTest { () -> Collections.singletonList(new TEndPoint("local", 12)), SessionConfig.MAX_RETRY_COUNT, SessionConfig.RETRY_INTERVAL_IN_MS, - "tree"); + "tree", + null); } @Test(expected = IoTDBConnectionException.class) @@ -194,7 +195,8 @@ public class SessionConnectionTest { () -> Collections.singletonList(new TEndPoint("local", 12)), SessionConfig.MAX_RETRY_COUNT, SessionConfig.RETRY_INTERVAL_IN_MS, - "tree"); + "tree", + null); } @Test
