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

Reply via email to