Skip to content

Commit b95b5fe

Browse files
authored
[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
1 parent e38636a commit b95b5fe

2 files changed

Lines changed: 20 additions & 9 deletions

File tree

‎integration-test/src/test/java/org/apache/iotdb/pipe/it/manual/IoTDBPipeWriteBackSinkIT.java‎

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,27 @@ public class IoTDBPipeWriteBackSinkIT extends AbstractPipeDualManualIT {
4444

4545
@Test
4646
public void testWriteBackSinkWithTargetDatabaseForTreeModel() throws Exception {
47+
testWriteBackSinkWithTargetDatabaseForTreeModel("root.target.db");
48+
}
49+
50+
@Test
51+
public void testWriteBackSinkPreservesTreeModelTargetDatabaseCase() throws Exception {
52+
testWriteBackSinkWithTargetDatabaseForTreeModel("TargetDB");
53+
}
54+
55+
private void testWriteBackSinkWithTargetDatabaseForTreeModel(final String targetDatabase)
56+
throws Exception {
57+
final String qualifiedTargetDatabase =
58+
targetDatabase.startsWith("root.") ? targetDatabase : "root." + targetDatabase;
4759
TestUtils.executeNonQueries(
4860
senderEnv,
4961
Arrays.asList(
5062
"create database root.source",
5163
"create timeseries root.source.d1.s1 with datatype=INT32,encoding=PLAIN",
52-
"create database root.target.db",
53-
"create timeseries root.target.db.d1.s1 with datatype=INT32,encoding=PLAIN"),
64+
"create database " + qualifiedTargetDatabase,
65+
"create timeseries "
66+
+ qualifiedTargetDatabase
67+
+ ".d1.s1 with datatype=INT32,encoding=PLAIN"),
5468
null);
5569

5670
try (final SyncConfigNodeIServiceClient client =
@@ -65,7 +79,7 @@ public void testWriteBackSinkWithTargetDatabaseForTreeModel() throws Exception {
6579
sourceAttributes.put("user", "root");
6680

6781
sinkAttributes.put("sink", "write-back-sink");
68-
sinkAttributes.put("sink.database", "root.target.db");
82+
sinkAttributes.put("sink.database", targetDatabase);
6983
sinkAttributes.put("user", "root");
7084

7185
final TSStatus status =
@@ -89,8 +103,8 @@ public void testWriteBackSinkWithTargetDatabaseForTreeModel() throws Exception {
89103

90104
TestUtils.assertDataEventuallyOnEnv(
91105
senderEnv,
92-
"select * from root.target.db.**",
93-
"Time,root.target.db.d1.s1,",
106+
"select * from " + qualifiedTargetDatabase + ".**",
107+
"Time," + qualifiedTargetDatabase + ".d1.s1,",
94108
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("1,1,", "2,2,"))));
95109
}
96110
}

‎iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/writeback/WriteBackSink.java‎

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@
6464
import java.util.ArrayList;
6565
import java.util.Arrays;
6666
import java.util.Collections;
67-
import java.util.Locale;
6867
import java.util.Objects;
6968

7069
import static org.apache.iotdb.commons.conf.IoTDBConstant.MAX_DATABASE_NAME_LENGTH;
@@ -113,9 +112,7 @@ private static String validateTargetDatabase(final String targetDatabase) {
113112
try {
114113
PathUtils.checkAndReturnSingleMeasurement(trimmedTargetDatabase);
115114
return validateAndNormalizeTreeModelDatabaseName(
116-
IoTDBConstant.PATH_ROOT
117-
+ IoTDBConstant.PATH_SEPARATOR
118-
+ trimmedTargetDatabase.toLowerCase(Locale.ENGLISH));
115+
IoTDBConstant.PATH_ROOT + IoTDBConstant.PATH_SEPARATOR + trimmedTargetDatabase);
119116
} catch (final Exception e) {
120117
throw new PipeException(
121118
String.format("The target database %s is invalid.", targetDatabase), e);

0 commit comments

Comments
 (0)