This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 4bf7c3e4a19 Fix set sql_dialect=table will clear current database bug
(#17159)
4bf7c3e4a19 is described below
commit 4bf7c3e4a1985476deccb761631c7baac661c51e
Author: Jackie Tien <[email protected]>
AuthorDate: Wed Feb 4 14:43:12 2026 +0800
Fix set sql_dialect=table will clear current database bug (#17159)
---
.../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;