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);