diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/schemaregion/SchemaExecutionVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/schemaregion/SchemaExecutionVisitor.java index 6efdeed997e1..8f7d608d4ee9 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/schemaregion/SchemaExecutionVisitor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/consensus/statemachine/schemaregion/SchemaExecutionVisitor.java @@ -313,6 +313,18 @@ private void executeInternalCreateAlignedTimeSeries( encodingList.remove(index); compressionTypeList.remove(index); + // If with merge is set, the lists are deep copied and need to be altered here. + // We still remove the element from the original list to help cascading pipe transfer + // schema. + // If this exception is thrown, the measurements, data types, etc. must be unchanged. + // Thus, the index for the copied lists are identical to that in the original lists. + if (withMerge) { + createAlignedTimeSeriesPlan.getMeasurements().remove(index); + createAlignedTimeSeriesPlan.getDataTypes().remove(index); + createAlignedTimeSeriesPlan.getEncodings().remove(index); + createAlignedTimeSeriesPlan.getCompressors().remove(index); + } + if (measurementList.isEmpty()) { shouldRetry = false; }