This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch FixSetSqlDialect
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit e9c1687ee63e7dde852ff6f3d3bc4273d5b8adf0
Author: JackieTien97 <[email protected]>
AuthorDate: Wed Feb 4 11:54:06 2026 +0800

    Fix set sql_dialect=table will clear current database bug
---
 .../org/apache/iotdb/db/it/utils/TestUtils.java    | 41 +++++++++++++---------
 .../it/query/recent/IoTDBFillTableIT.java          | 20 +++++++++++
 .../iotdb/db/protocol/session/IClientSession.java  |  3 ++
 3 files changed, 47 insertions(+), 17 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java 
b/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
index 192d0ba3cd4..3d790f12a09 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
@@ -287,24 +287,11 @@ public class TestUtils {
         EnvFactory.getEnv().getConnection(userName, password, 
BaseEnv.TABLE_SQL_DIALECT)) {
       connection.setClientInfo("time_zone", timeZone);
       try (Statement statement = connection.createStatement()) {
-        statement.execute("use " + database);
+        if (database != null) {
+          statement.execute("use " + database);
+        }
         try (ResultSet resultSet = statement.executeQuery(sql)) {
-          ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-          for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-            assertEquals(expectedHeader[i - 1], 
resultSetMetaData.getColumnName(i));
-          }
-          assertEquals(expectedHeader.length, 
resultSetMetaData.getColumnCount());
-
-          int cnt = 0;
-          while (resultSet.next()) {
-            StringBuilder builder = new StringBuilder();
-            for (int i = 1; i <= expectedHeader.length; i++) {
-              builder.append(resultSet.getString(i)).append(",");
-            }
-            assertEquals(expectedRetArray[cnt], builder.toString());
-            cnt++;
-          }
-          assertEquals(expectedRetArray.length, cnt);
+          tableResultSetEqual(resultSet, expectedHeader, expectedRetArray);
         }
       }
     } catch (SQLException e) {
@@ -313,6 +300,26 @@ public class TestUtils {
     }
   }
 
+  public static void tableResultSetEqual(
+      ResultSet resultSet, String[] expectedHeader, String[] expectedRetArray) 
throws SQLException {
+    ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
+    for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
+      assertEquals(expectedHeader[i - 1], resultSetMetaData.getColumnName(i));
+    }
+    assertEquals(expectedHeader.length, resultSetMetaData.getColumnCount());
+
+    int cnt = 0;
+    while (resultSet.next()) {
+      StringBuilder builder = new StringBuilder();
+      for (int i = 1; i <= expectedHeader.length; i++) {
+        builder.append(resultSet.getString(i)).append(",");
+      }
+      assertEquals(expectedRetArray[cnt], builder.toString());
+      cnt++;
+    }
+    assertEquals(expectedRetArray.length, cnt);
+  }
+
   public static void tableResultSetEqualByDataTypeTest(
       String sql,
       String[] expectedHeader,
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBFillTableIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBFillTableIT.java
index 9ec97c48768..edd66bdee2d 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBFillTableIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/IoTDBFillTableIT.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.it.env.EnvFactory;
 import org.apache.iotdb.it.framework.IoTDBTestRunner;
 import org.apache.iotdb.itbase.category.TableClusterIT;
 import org.apache.iotdb.itbase.category.TableLocalStandaloneIT;
+import org.apache.iotdb.itbase.env.BaseEnv;
 import org.apache.iotdb.rpc.TSStatusCode;
 
 import org.junit.AfterClass;
@@ -31,9 +32,16 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
 
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
 import static org.apache.iotdb.db.it.utils.TestUtils.prepareTableData;
 import static org.apache.iotdb.db.it.utils.TestUtils.tableAssertTestFail;
+import static org.apache.iotdb.db.it.utils.TestUtils.tableResultSetEqual;
 import static org.apache.iotdb.db.it.utils.TestUtils.tableResultSetEqualTest;
+import static org.junit.Assert.fail;
 
 @RunWith(IoTDBTestRunner.class)
 @Category({TableLocalStandaloneIT.class, TableClusterIT.class})
@@ -631,6 +639,18 @@ public class IoTDBFillTableIT {
         expectedHeader,
         retArray,
         DATABASE_NAME);
+
+    try (Connection connection = 
EnvFactory.getEnv().getConnection(BaseEnv.TABLE_SQL_DIALECT);
+        Statement statement = connection.createStatement()) {
+      statement.execute("USE " + DATABASE_NAME);
+      statement.execute("SET SQL_DIALECT = TABLE");
+      try (ResultSet resultSet =
+          statement.executeQuery("select * from table1 FILL METHOD CONSTANT 
X'cafebabe99'")) {
+        tableResultSetEqual(resultSet, expectedHeader, retArray);
+      }
+    } catch (SQLException e) {
+      fail(e.getMessage());
+    }
   }
 
   @Test
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/IClientSession.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/IClientSession.java
index 16cd1dc2f75..44db6402375 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/IClientSession.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/session/IClientSession.java
@@ -175,6 +175,9 @@ public abstract class IClientSession {
   }
 
   public void setSqlDialectAndClean(SqlDialect sqlDialect) {
+    if (this.sqlDialect == sqlDialect) {
+      return;
+    }
     this.sqlDialect = sqlDialect;
     // clean database to avoid misuse of it between different SqlDialect
     this.databaseName = null;

Reply via email to