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

Caideyipi pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/dev/1.3 by this push:
     new b95b5fefe4d [To dev/1.3] Fix write-back sink tree target database case 
(#18411)
b95b5fefe4d is described below

commit b95b5fefe4d089d5294241dfc8710035d51fd1be
Author: Caideyipi <[email protected]>
AuthorDate: Tue Aug 18 14:23:29 2026 +0800

    [To dev/1.3] Fix write-back sink tree target database case (#18411)
    
    * [To dev/1.3] Fix write-back sink tree target database case (#18398)
    
    * Update WriteBackSink.java
---
 .../pipe/it/manual/IoTDBPipeWriteBackSinkIT.java   | 24 +++++++++++++++++-----
 .../sink/protocol/writeback/WriteBackSink.java     |  5 +----
 2 files changed, 20 insertions(+), 9 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/pipe/it/manual/IoTDBPipeWriteBackSinkIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/pipe/it/manual/IoTDBPipeWriteBackSinkIT.java
index dda55ad4871..257035238b7 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/pipe/it/manual/IoTDBPipeWriteBackSinkIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/pipe/it/manual/IoTDBPipeWriteBackSinkIT.java
@@ -44,13 +44,27 @@ public class IoTDBPipeWriteBackSinkIT extends 
AbstractPipeDualManualIT {
 
   @Test
   public void testWriteBackSinkWithTargetDatabaseForTreeModel() throws 
Exception {
+    testWriteBackSinkWithTargetDatabaseForTreeModel("root.target.db");
+  }
+
+  @Test
+  public void testWriteBackSinkPreservesTreeModelTargetDatabaseCase() throws 
Exception {
+    testWriteBackSinkWithTargetDatabaseForTreeModel("TargetDB");
+  }
+
+  private void testWriteBackSinkWithTargetDatabaseForTreeModel(final String 
targetDatabase)
+      throws Exception {
+    final String qualifiedTargetDatabase =
+        targetDatabase.startsWith("root.") ? targetDatabase : "root." + 
targetDatabase;
     TestUtils.executeNonQueries(
         senderEnv,
         Arrays.asList(
             "create database root.source",
             "create timeseries root.source.d1.s1 with 
datatype=INT32,encoding=PLAIN",
-            "create database root.target.db",
-            "create timeseries root.target.db.d1.s1 with 
datatype=INT32,encoding=PLAIN"),
+            "create database " + qualifiedTargetDatabase,
+            "create timeseries "
+                + qualifiedTargetDatabase
+                + ".d1.s1 with datatype=INT32,encoding=PLAIN"),
         null);
 
     try (final SyncConfigNodeIServiceClient client =
@@ -65,7 +79,7 @@ public class IoTDBPipeWriteBackSinkIT extends 
AbstractPipeDualManualIT {
       sourceAttributes.put("user", "root");
 
       sinkAttributes.put("sink", "write-back-sink");
-      sinkAttributes.put("sink.database", "root.target.db");
+      sinkAttributes.put("sink.database", targetDatabase);
       sinkAttributes.put("user", "root");
 
       final TSStatus status =
@@ -89,8 +103,8 @@ public class IoTDBPipeWriteBackSinkIT extends 
AbstractPipeDualManualIT {
 
     TestUtils.assertDataEventuallyOnEnv(
         senderEnv,
-        "select * from root.target.db.**",
-        "Time,root.target.db.d1.s1,",
+        "select * from " + qualifiedTargetDatabase + ".**",
+        "Time," + qualifiedTargetDatabase + ".d1.s1,",
         Collections.unmodifiableSet(new HashSet<>(Arrays.asList("1,1,", 
"2,2,"))));
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/writeback/WriteBackSink.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/writeback/WriteBackSink.java
index f5a7ad2ff31..abf6ccda008 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/writeback/WriteBackSink.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/writeback/WriteBackSink.java
@@ -64,7 +64,6 @@ import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Locale;
 import java.util.Objects;
 
 import static 
org.apache.iotdb.commons.conf.IoTDBConstant.MAX_DATABASE_NAME_LENGTH;
@@ -113,9 +112,7 @@ public class WriteBackSink implements PipeConnector {
     try {
       PathUtils.checkAndReturnSingleMeasurement(trimmedTargetDatabase);
       return validateAndNormalizeTreeModelDatabaseName(
-          IoTDBConstant.PATH_ROOT
-              + IoTDBConstant.PATH_SEPARATOR
-              + trimmedTargetDatabase.toLowerCase(Locale.ENGLISH));
+          IoTDBConstant.PATH_ROOT + IoTDBConstant.PATH_SEPARATOR + 
trimmedTargetDatabase);
     } catch (final Exception e) {
       throw new PipeException(
           String.format("The target database %s is invalid.", targetDatabase), 
e);

Reply via email to