This is an automated email from the ASF dual-hosted git repository.
rong 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 dd3d516a739 Pipe: Fix InternalCreateMultiTimeSeries plan's members may
be altered in SchemaRegionListeningQueue & Alter timeseries for logical view is
not parsed in snapshot transferring (#13123)
dd3d516a739 is described below
commit dd3d516a7397da3a4786682da3f0c6aec10457ee
Author: Caideyipi <[email protected]>
AuthorDate: Tue Aug 20 14:41:28 2024 +0800
Pipe: Fix InternalCreateMultiTimeSeries plan's members may be altered in
SchemaRegionListeningQueue & Alter timeseries for logical view is not parsed in
snapshot transferring (#13123)
---
.../visitor/PipeStatementExceptionVisitor.java | 2 +-
.../visitor/PipeStatementPatternParseVisitor.java | 12 +++
.../visitor/PipeStatementTSStatusVisitor.java | 4 +-
.../visitor/PipeStatementToBatchVisitor.java | 28 +++---
.../queryengine/plan/analyze/AnalyzeVisitor.java | 4 +-
.../execution/config/TreeConfigTaskVisitor.java | 2 +-
.../plan/planner/LogicalPlanVisitor.java | 4 +-
.../plan/node/metadata/write/MeasurementGroup.java | 8 +-
.../plan/statement/StatementVisitor.java | 8 +-
.../metadata/AlterTimeSeriesStatement.java | 26 +++++-
.../metadata/CreateMultiTimeSeriesStatement.java | 2 +-
.../metadata/DeleteTimeSeriesStatement.java | 2 +-
.../req/impl/CreateAlignedTimeSeriesPlanImpl.java | 16 ++++
.../PipeStatementPatternParseVisitorTest.java | 54 ++++++++---
.../extractor/PipePlanPatternParseVisitorTest.java | 104 ++++++++-------------
15 files changed, 170 insertions(+), 106 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementExceptionVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementExceptionVisitor.java
index 5a65b1a5e05..bdb48a2ccbd 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementExceptionVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementExceptionVisitor.java
@@ -77,7 +77,7 @@ public class PipeStatementExceptionVisitor extends
StatementVisitor<TSStatus, Ex
}
@Override
- public TSStatus visitCreateMultiTimeseries(
+ public TSStatus visitCreateMultiTimeSeries(
final CreateMultiTimeSeriesStatement statement, final Exception context)
{
return visitGeneralCreateTimeSeries(statement, context);
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementPatternParseVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementPatternParseVisitor.java
index 25b117633c4..77678bf204c 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementPatternParseVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementPatternParseVisitor.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.commons.pipe.pattern.IoTDBPipePattern;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.db.queryengine.plan.statement.StatementNode;
import org.apache.iotdb.db.queryengine.plan.statement.StatementVisitor;
+import
org.apache.iotdb.db.queryengine.plan.statement.metadata.AlterTimeSeriesStatement;
import
org.apache.iotdb.db.queryengine.plan.statement.metadata.CreateAlignedTimeSeriesStatement;
import
org.apache.iotdb.db.queryengine.plan.statement.metadata.CreateTimeSeriesStatement;
import
org.apache.iotdb.db.queryengine.plan.statement.metadata.template.ActivateTemplateStatement;
@@ -103,6 +104,17 @@ public class PipeStatementPatternParseVisitor
return Optional.of(targetCreateAlignedTimeSeriesStatement);
}
+ // For logical view with tags/attributes
+ @Override
+ public Optional<Statement> visitAlterTimeSeries(
+ final AlterTimeSeriesStatement alterTimeSeriesStatement, final
IoTDBPipePattern pattern) {
+ return pattern.matchesMeasurement(
+ alterTimeSeriesStatement.getPath().getIDeviceID(),
+ alterTimeSeriesStatement.getPath().getMeasurement())
+ ? Optional.of(alterTimeSeriesStatement)
+ : Optional.empty();
+ }
+
@Override
public Optional<Statement> visitActivateTemplate(
final ActivateTemplateStatement activateTemplateStatement, final
IoTDBPipePattern pattern) {
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementTSStatusVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementTSStatusVisitor.java
index 03a917379ce..3e3992343fd 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementTSStatusVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementTSStatusVisitor.java
@@ -140,7 +140,7 @@ public class PipeStatementTSStatusVisitor extends
StatementVisitor<TSStatus, TSS
}
@Override
- public TSStatus visitCreateMultiTimeseries(
+ public TSStatus visitCreateMultiTimeSeries(
final CreateMultiTimeSeriesStatement createMultiTimeSeriesStatement,
final TSStatus context) {
return visitGeneralCreateMultiTimeseries(createMultiTimeSeriesStatement,
context);
}
@@ -183,7 +183,7 @@ public class PipeStatementTSStatusVisitor extends
StatementVisitor<TSStatus, TSS
}
@Override
- public TSStatus visitAlterTimeseries(
+ public TSStatus visitAlterTimeSeries(
final AlterTimeSeriesStatement alterTimeSeriesStatement, final TSStatus
context) {
if (context.getCode() == TSStatusCode.METADATA_ERROR.getStatusCode()) {
if (context.getMessage().contains("already")) {
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementToBatchVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementToBatchVisitor.java
index 6271285bdb1..eeaf6e0d84f 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementToBatchVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementToBatchVisitor.java
@@ -115,15 +115,16 @@ public class PipeStatementToBatchVisitor extends
StatementVisitor<Optional<State
statement.getPath().getDevicePath(),
devicePath -> new Pair<>(false, new MeasurementGroup()))
.getRight();
- group.addMeasurement(
+ if (group.addMeasurement(
statement.getPath().getMeasurement(),
statement.getDataType(),
statement.getEncoding(),
- statement.getCompressor());
- group.addAttributes(statement.getAttributes());
- group.addTags(statement.getTags());
- group.addProps(statement.getProps());
- group.addAlias(statement.getAlias());
+ statement.getCompressor())) {
+ group.addAttributes(statement.getAttributes());
+ group.addTags(statement.getTags());
+ group.addProps(statement.getProps());
+ group.addAlias(statement.getAlias());
+ }
}
private void addAlignedTimeSeriesToBatchStatement(
@@ -136,17 +137,18 @@ public class PipeStatementToBatchVisitor extends
StatementVisitor<Optional<State
statement.getDevicePath(), devicePath -> new Pair<>(true, new
MeasurementGroup()))
.getRight();
for (int i = 0; i < statement.getMeasurements().size(); ++i) {
- group.addMeasurement(
+ if (group.addMeasurement(
statement.getMeasurements().get(i),
statement.getDataTypes().get(i),
statement.getEncodings().get(i),
- statement.getCompressors().get(i));
- group.addProps(new HashMap<>());
+ statement.getCompressors().get(i))) {
+ group.addProps(new HashMap<>());
+ // Non-null lists
+ group.addTags(statement.getTagsList().get(i));
+ group.addAttributes(statement.getAttributesList().get(i));
+ group.addAlias(statement.getAliasList().get(i));
+ }
}
- // Non-null lists
- statement.getTagsList().forEach(group::addTags);
- statement.getAttributesList().forEach(group::addAttributes);
- statement.getAliasList().forEach(group::addAlias);
}
@Override
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
index 226bd1ded87..37aef7993db 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
@@ -2610,7 +2610,7 @@ public class AnalyzeVisitor extends
StatementVisitor<Analysis, MPPQueryContext>
}
@Override
- public Analysis visitCreateMultiTimeseries(
+ public Analysis visitCreateMultiTimeSeries(
final CreateMultiTimeSeriesStatement createMultiTimeSeriesStatement,
final MPPQueryContext context) {
context.setQueryType(QueryType.WRITE);
@@ -2644,7 +2644,7 @@ public class AnalyzeVisitor extends
StatementVisitor<Analysis, MPPQueryContext>
}
@Override
- public Analysis visitAlterTimeseries(
+ public Analysis visitAlterTimeSeries(
AlterTimeSeriesStatement alterTimeSeriesStatement, MPPQueryContext
context) {
context.setQueryType(QueryType.WRITE);
Analysis analysis = new Analysis();
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TreeConfigTaskVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TreeConfigTaskVisitor.java
index 1704d034b01..0211653fc42 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TreeConfigTaskVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/TreeConfigTaskVisitor.java
@@ -491,7 +491,7 @@ public class TreeConfigTaskVisitor extends
StatementVisitor<IConfigTask, MPPQuer
}
@Override
- public IConfigTask visitDeleteTimeseries(
+ public IConfigTask visitDeleteTimeSeries(
DeleteTimeSeriesStatement deleteTimeSeriesStatement, MPPQueryContext
context) {
return new DeleteTimeSeriesTask(context.getQueryId().getId(),
deleteTimeSeriesStatement);
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java
index 1cd728eb0bf..e3b798ed936 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanVisitor.java
@@ -414,7 +414,7 @@ public class LogicalPlanVisitor extends
StatementVisitor<PlanNode, MPPQueryConte
}
@Override
- public PlanNode visitCreateMultiTimeseries(
+ public PlanNode visitCreateMultiTimeSeries(
CreateMultiTimeSeriesStatement createMultiTimeSeriesStatement,
MPPQueryContext context) {
return new CreateMultiTimeSeriesNode(
context.getQueryId().genPlanNodeId(),
@@ -438,7 +438,7 @@ public class LogicalPlanVisitor extends
StatementVisitor<PlanNode, MPPQueryConte
}
@Override
- public PlanNode visitAlterTimeseries(
+ public PlanNode visitAlterTimeSeries(
AlterTimeSeriesStatement alterTimeSeriesStatement, MPPQueryContext
context) {
return new AlterTimeSeriesNode(
context.getQueryId().genPlanNodeId(),
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/MeasurementGroup.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/MeasurementGroup.java
index 6fce0766047..bce60638e1e 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/MeasurementGroup.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/metadata/write/MeasurementGroup.java
@@ -84,10 +84,10 @@ public class MeasurementGroup {
}
public boolean addMeasurement(
- String measurement,
- TSDataType dataType,
- TSEncoding encoding,
- CompressionType compressionType) {
+ final String measurement,
+ final TSDataType dataType,
+ final TSEncoding encoding,
+ final CompressionType compressionType) {
if (measurementSet.contains(measurement)) {
return false;
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementVisitor.java
index 1fd8e8a58c2..e7b7e3ffa66 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/StatementVisitor.java
@@ -165,17 +165,17 @@ public abstract class StatementVisitor<R, C> {
}
// Create Multi Timeseries
- public R visitCreateMultiTimeseries(
+ public R visitCreateMultiTimeSeries(
CreateMultiTimeSeriesStatement createMultiTimeSeriesStatement, C
context) {
return visitStatement(createMultiTimeSeriesStatement, context);
}
- // Alter Timeseries
- public R visitAlterTimeseries(AlterTimeSeriesStatement
alterTimeSeriesStatement, C context) {
+ // Alter TimeSeries
+ public R visitAlterTimeSeries(AlterTimeSeriesStatement
alterTimeSeriesStatement, C context) {
return visitStatement(alterTimeSeriesStatement, context);
}
- public R visitDeleteTimeseries(DeleteTimeSeriesStatement
deleteTimeSeriesStatement, C context) {
+ public R visitDeleteTimeSeries(DeleteTimeSeriesStatement
deleteTimeSeriesStatement, C context) {
return visitStatement(deleteTimeSeriesStatement, context);
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/AlterTimeSeriesStatement.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/AlterTimeSeriesStatement.java
index 7d90cfb2e70..16d296ad42a 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/AlterTimeSeriesStatement.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/AlterTimeSeriesStatement.java
@@ -31,6 +31,7 @@ import org.apache.iotdb.rpc.TSStatusCode;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
/**
* ALTER TIMESERIES statement.
@@ -145,7 +146,30 @@ public class AlterTimeSeriesStatement extends Statement {
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
- return visitor.visitAlterTimeseries(this, context);
+ return visitor.visitAlterTimeSeries(this, context);
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null || getClass() != obj.getClass()) {
+ return false;
+ }
+ final AlterTimeSeriesStatement that = (AlterTimeSeriesStatement) obj;
+ return Objects.equals(this.path, that.path)
+ && Objects.equals(this.alterType, that.alterType)
+ && Objects.equals(this.alterMap, that.alterMap)
+ && Objects.equals(this.alias, that.alias)
+ && Objects.equals(this.tagsMap, that.tagsMap)
+ && Objects.equals(this.attributesMap, that.attributesMap)
+ && Objects.equals(this.isAlterView, that.isAlterView);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(path, alterType, alterMap, alias, tagsMap,
attributesMap, isAlterView);
}
public enum AlterType {
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateMultiTimeSeriesStatement.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateMultiTimeSeriesStatement.java
index 45be8d7355c..69433207096 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateMultiTimeSeriesStatement.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/CreateMultiTimeSeriesStatement.java
@@ -137,7 +137,7 @@ public class CreateMultiTimeSeriesStatement extends
Statement {
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
- return visitor.visitCreateMultiTimeseries(this, context);
+ return visitor.visitCreateMultiTimeSeries(this, context);
}
@Override
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteTimeSeriesStatement.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteTimeSeriesStatement.java
index 0a89335ffdf..02cad6e003e 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteTimeSeriesStatement.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/statement/metadata/DeleteTimeSeriesStatement.java
@@ -74,7 +74,7 @@ public class DeleteTimeSeriesStatement extends Statement
implements IConfigState
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
- return visitor.visitDeleteTimeseries(this, context);
+ return visitor.visitDeleteTimeSeries(this, context);
}
@Override
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/impl/CreateAlignedTimeSeriesPlanImpl.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/impl/CreateAlignedTimeSeriesPlanImpl.java
index f02aa52f4c0..4ffa8aca5b2 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/impl/CreateAlignedTimeSeriesPlanImpl.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/write/req/impl/CreateAlignedTimeSeriesPlanImpl.java
@@ -31,6 +31,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
public class CreateAlignedTimeSeriesPlanImpl implements
ICreateAlignedTimeSeriesPlan {
@@ -177,5 +178,20 @@ public class CreateAlignedTimeSeriesPlanImpl implements
ICreateAlignedTimeSeries
public void setWithMerge(final boolean withMerge) {
this.withMerge = withMerge;
+ // Deep copy if with merge because when upsert option is set
+ // The original set may be altered to help distinguish between creation
plan
+ // and update plan
+ // Here we deeply copy to avoid damaging the original plan node for pipe
schema region listening
+ // queue
+ if (withMerge) {
+ measurements = new ArrayList<>(measurements);
+ dataTypes = new ArrayList<>(dataTypes);
+ encodings = new ArrayList<>(encodings);
+ compressors = new ArrayList<>(compressors);
+ aliasList = Objects.nonNull(aliasList) ? new ArrayList<>(aliasList) :
null;
+ tagsList = Objects.nonNull(tagsList) ? new ArrayList<>(tagsList) : null;
+ attributesList = Objects.nonNull(attributesList) ? new
ArrayList<>(attributesList) : null;
+ tagOffsets = Objects.nonNull(tagOffsets) ? new ArrayList<>(tagOffsets) :
null;
+ }
}
}
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/connector/PipeStatementPatternParseVisitorTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/connector/PipeStatementPatternParseVisitorTest.java
index a7e09addfe1..eb05ee906d2 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/connector/PipeStatementPatternParseVisitorTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/connector/PipeStatementPatternParseVisitorTest.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.commons.pipe.pattern.IoTDBPipePattern;
import
org.apache.iotdb.commons.schema.view.viewExpression.leaf.TimeSeriesViewOperand;
import
org.apache.iotdb.db.pipe.receiver.visitor.PipeStatementPatternParseVisitor;
+import
org.apache.iotdb.db.queryengine.plan.statement.metadata.AlterTimeSeriesStatement;
import
org.apache.iotdb.db.queryengine.plan.statement.metadata.CreateAlignedTimeSeriesStatement;
import
org.apache.iotdb.db.queryengine.plan.statement.metadata.CreateTimeSeriesStatement;
import
org.apache.iotdb.db.queryengine.plan.statement.metadata.template.ActivateTemplateStatement;
@@ -38,7 +39,7 @@ import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
-import java.util.HashMap;
+import java.util.Map;
public class PipeStatementPatternParseVisitorTest {
@@ -52,9 +53,9 @@ public class PipeStatementPatternParseVisitorTest {
createTimeSeriesStatement.setDataType(TSDataType.FLOAT);
createTimeSeriesStatement.setEncoding(TSEncoding.RLE);
createTimeSeriesStatement.setCompressor(CompressionType.SNAPPY);
- createTimeSeriesStatement.setProps(new HashMap<>());
- createTimeSeriesStatement.setTags(new HashMap<>());
- createTimeSeriesStatement.setAttributes(new HashMap<>());
+ createTimeSeriesStatement.setProps(Collections.emptyMap());
+ createTimeSeriesStatement.setTags(Collections.emptyMap());
+ createTimeSeriesStatement.setAttributes(Collections.emptyMap());
createTimeSeriesStatement.setAlias("a1");
final CreateTimeSeriesStatement createTimeSeriesStatementToFilter =
@@ -63,9 +64,9 @@ public class PipeStatementPatternParseVisitorTest {
createTimeSeriesStatementToFilter.setDataType(TSDataType.FLOAT);
createTimeSeriesStatementToFilter.setEncoding(TSEncoding.RLE);
createTimeSeriesStatementToFilter.setCompressor(CompressionType.SNAPPY);
- createTimeSeriesStatementToFilter.setProps(new HashMap<>());
- createTimeSeriesStatementToFilter.setTags(new HashMap<>());
- createTimeSeriesStatementToFilter.setAttributes(new HashMap<>());
+ createTimeSeriesStatementToFilter.setProps(Collections.emptyMap());
+ createTimeSeriesStatementToFilter.setTags(Collections.emptyMap());
+ createTimeSeriesStatementToFilter.setAttributes(Collections.emptyMap());
createTimeSeriesStatementToFilter.setAlias("a2");
Assert.assertEquals(
@@ -92,9 +93,9 @@ public class PipeStatementPatternParseVisitorTest {
expectedCreateAlignedTimeSeriesStatement.setCompressors(
Collections.singletonList(CompressionType.SNAPPY));
expectedCreateAlignedTimeSeriesStatement.setTagsList(
- Collections.singletonList(new HashMap<>()));
+ Collections.singletonList(Collections.emptyMap()));
expectedCreateAlignedTimeSeriesStatement.setAttributesList(
- Collections.singletonList(new HashMap<>()));
+ Collections.singletonList(Collections.emptyMap()));
expectedCreateAlignedTimeSeriesStatement.setAliasList(Collections.singletonList("a1"));
final CreateAlignedTimeSeriesStatement
originalCreateAlignedTimeSeriesStatement =
@@ -108,9 +109,9 @@ public class PipeStatementPatternParseVisitorTest {
originalCreateAlignedTimeSeriesStatement.setCompressors(
Arrays.asList(CompressionType.SNAPPY, CompressionType.SNAPPY));
originalCreateAlignedTimeSeriesStatement.setTagsList(
- Arrays.asList(new HashMap<>(), new HashMap<>()));
+ Arrays.asList(Collections.emptyMap(), Collections.emptyMap()));
originalCreateAlignedTimeSeriesStatement.setAttributesList(
- Arrays.asList(new HashMap<>(), new HashMap<>()));
+ Arrays.asList(Collections.emptyMap(), Collections.emptyMap()));
originalCreateAlignedTimeSeriesStatement.setAliasList(Arrays.asList("a1",
"a2"));
Assert.assertEquals(
@@ -120,6 +121,37 @@ public class PipeStatementPatternParseVisitorTest {
.orElseThrow(AssertionError::new));
}
+ @Test
+ public void testAlterTimeSeries() throws IllegalPathException {
+ final AlterTimeSeriesStatement alterTimeSeriesStatement = new
AlterTimeSeriesStatement(true);
+
+ final Map<String, String> attributeMap = Collections.singletonMap("k1",
"v1");
+ alterTimeSeriesStatement.setPath(new MeasurementPath("root.db.device.s1"));
+ alterTimeSeriesStatement.setAlterMap(attributeMap);
+ alterTimeSeriesStatement.setTagsMap(Collections.emptyMap());
+ alterTimeSeriesStatement.setAttributesMap(attributeMap);
+ alterTimeSeriesStatement.setAlias("");
+
+ final AlterTimeSeriesStatement alterTimeSeriesStatementToFilter =
+ new AlterTimeSeriesStatement(true);
+
+ alterTimeSeriesStatementToFilter.setPath(new
MeasurementPath("root.db1.device.s1"));
+ alterTimeSeriesStatementToFilter.setAlterMap(attributeMap);
+ alterTimeSeriesStatementToFilter.setTagsMap(Collections.emptyMap());
+ alterTimeSeriesStatementToFilter.setAttributesMap(attributeMap);
+ alterTimeSeriesStatementToFilter.setAlias("");
+
+ Assert.assertEquals(
+ alterTimeSeriesStatement,
+ new PipeStatementPatternParseVisitor()
+ .visitAlterTimeSeries(alterTimeSeriesStatement, fullPathPattern)
+ .orElseThrow(AssertionError::new));
+ Assert.assertFalse(
+ new PipeStatementPatternParseVisitor()
+ .visitAlterTimeSeries(alterTimeSeriesStatementToFilter,
prefixPathPattern)
+ .isPresent());
+ }
+
@Test
public void testActivateTemplate() throws IllegalPathException {
final ActivateTemplateStatement activateTemplateStatement =
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/extractor/PipePlanPatternParseVisitorTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/extractor/PipePlanPatternParseVisitorTest.java
index 6343fb50b49..61a52aa72af 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/extractor/PipePlanPatternParseVisitorTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/pipe/extractor/PipePlanPatternParseVisitorTest.java
@@ -68,9 +68,9 @@ public class PipePlanPatternParseVisitorTest {
TSDataType.FLOAT,
TSEncoding.RLE,
CompressionType.SNAPPY,
- new HashMap<>(),
- new HashMap<>(),
- new HashMap<>(),
+ Collections.emptyMap(),
+ Collections.emptyMap(),
+ Collections.emptyMap(),
"a1");
final CreateTimeSeriesNode createTimeSeriesNodeToFilter =
new CreateTimeSeriesNode(
@@ -79,9 +79,9 @@ public class PipePlanPatternParseVisitorTest {
TSDataType.FLOAT,
TSEncoding.RLE,
CompressionType.SNAPPY,
- new HashMap<>(),
- new HashMap<>(),
- new HashMap<>(),
+ Collections.emptyMap(),
+ Collections.emptyMap(),
+ Collections.emptyMap(),
"a1");
Assert.assertEquals(
@@ -106,8 +106,8 @@ public class PipePlanPatternParseVisitorTest {
Collections.singletonList(TSEncoding.RLE),
Collections.singletonList(CompressionType.SNAPPY),
Collections.singletonList("a1"),
- Collections.singletonList(new HashMap<>()),
- Collections.singletonList(new HashMap<>())),
+ Collections.singletonList(Collections.emptyMap()),
+ Collections.singletonList(Collections.emptyMap())),
IoTDBSchemaRegionExtractor.PATTERN_PARSE_VISITOR
.visitCreateAlignedTimeSeries(
new CreateAlignedTimeSeriesNode(
@@ -118,8 +118,8 @@ public class PipePlanPatternParseVisitorTest {
Arrays.asList(TSEncoding.RLE, TSEncoding.PLAIN),
Arrays.asList(CompressionType.SNAPPY,
CompressionType.SNAPPY),
Arrays.asList("a1", "a2"),
- Arrays.asList(new HashMap<>(), new HashMap<>()),
- Arrays.asList(new HashMap<>(), new HashMap<>())),
+ Arrays.asList(Collections.emptyMap(),
Collections.emptyMap()),
+ Arrays.asList(Collections.emptyMap(),
Collections.emptyMap())),
fullPathPattern)
.orElseThrow(AssertionError::new));
}
@@ -133,10 +133,10 @@ public class PipePlanPatternParseVisitorTest {
Collections.singletonList(TSDataType.FLOAT),
Collections.singletonList(TSEncoding.RLE),
Collections.singletonList(CompressionType.SNAPPY),
- Collections.singletonList(new HashMap<>()),
+ Collections.singletonList(Collections.emptyMap()),
Collections.singletonList("a1"),
- Collections.singletonList(new HashMap<>()),
- Collections.singletonList(new HashMap<>())),
+ Collections.singletonList(Collections.emptyMap()),
+ Collections.singletonList(Collections.emptyMap())),
IoTDBSchemaRegionExtractor.PATTERN_PARSE_VISITOR
.visitCreateMultiTimeSeries(
new CreateMultiTimeSeriesNode(
@@ -147,40 +147,35 @@ public class PipePlanPatternParseVisitorTest {
Arrays.asList(TSDataType.FLOAT, TSDataType.BOOLEAN),
Arrays.asList(TSEncoding.RLE, TSEncoding.PLAIN),
Arrays.asList(CompressionType.SNAPPY,
CompressionType.SNAPPY),
- Arrays.asList(new HashMap<>(), new HashMap<>()),
+ Arrays.asList(Collections.emptyMap(),
Collections.emptyMap()),
Arrays.asList("a1", "a2"),
- Arrays.asList(new HashMap<>(), new HashMap<>()),
- Arrays.asList(new HashMap<>(), new HashMap<>())),
+ Arrays.asList(Collections.emptyMap(),
Collections.emptyMap()),
+ Arrays.asList(Collections.emptyMap(),
Collections.emptyMap())),
fullPathPattern)
.orElseThrow(AssertionError::new));
}
@Test
public void testAlterTimeSeries() throws IllegalPathException {
- final Map<String, String> attributesMap =
- new HashMap<String, String>() {
- {
- put("k1", "v1");
- }
- };
+ final Map<String, String> attributesMap = Collections.singletonMap("k1",
"v1");
final AlterTimeSeriesNode alterTimeSeriesNode =
new AlterTimeSeriesNode(
new PlanNodeId("2024-04-30-1"),
- new PartialPath("root.db.device.s1"),
+ new MeasurementPath("root.db.device.s1"),
AlterTimeSeriesStatement.AlterType.ADD_ATTRIBUTES,
attributesMap,
"",
- new HashMap<>(),
+ Collections.emptyMap(),
attributesMap,
false);
final AlterTimeSeriesNode alterTimeSeriesNodeToFilter =
new AlterTimeSeriesNode(
new PlanNodeId("2024-04-30-2"),
- new PartialPath("root.db1.device.s1"),
+ new MeasurementPath("root.db1.device.s1"),
AlterTimeSeriesStatement.AlterType.ADD_ATTRIBUTES,
attributesMap,
"",
- new HashMap<>(),
+ Collections.emptyMap(),
attributesMap,
false);
@@ -200,10 +195,10 @@ public class PipePlanPatternParseVisitorTest {
final MeasurementGroup expectedMeasurementGroup = new MeasurementGroup();
expectedMeasurementGroup.addMeasurement(
"s1", TSDataType.FLOAT, TSEncoding.RLE, CompressionType.SNAPPY);
- expectedMeasurementGroup.addProps(new HashMap<>());
+ expectedMeasurementGroup.addProps(Collections.emptyMap());
expectedMeasurementGroup.addAlias("a1");
- expectedMeasurementGroup.addTags(new HashMap<>());
- expectedMeasurementGroup.addAttributes(new HashMap<>());
+ expectedMeasurementGroup.addTags(Collections.emptyMap());
+ expectedMeasurementGroup.addAttributes(Collections.emptyMap());
final ByteBuffer byteBuffer = ByteBuffer.allocate(1000);
expectedMeasurementGroup.serialize(byteBuffer);
@@ -213,10 +208,10 @@ public class PipePlanPatternParseVisitorTest {
originalMeasurementGroup.addMeasurement(
"s2", TSDataType.BOOLEAN, TSEncoding.PLAIN, CompressionType.SNAPPY);
- originalMeasurementGroup.addProps(new HashMap<>());
+ originalMeasurementGroup.addProps(Collections.emptyMap());
originalMeasurementGroup.addAlias("a2");
- originalMeasurementGroup.addTags(new HashMap<>());
- originalMeasurementGroup.addAttributes(new HashMap<>());
+ originalMeasurementGroup.addTags(Collections.emptyMap());
+ originalMeasurementGroup.addAttributes(Collections.emptyMap());
Assert.assertEquals(
new InternalCreateTimeSeriesNode(
@@ -259,11 +254,7 @@ public class PipePlanPatternParseVisitorTest {
Assert.assertEquals(
new InternalBatchActivateTemplateNode(
new PlanNodeId("2024-04-30-1"),
- new HashMap<PartialPath, Pair<Integer, Integer>>() {
- {
- put(new PartialPath("root.db.device"), new Pair<>(1, 1));
- }
- }),
+ Collections.singletonMap(new PartialPath("root.db.device"), new
Pair<>(1, 1))),
IoTDBSchemaRegionExtractor.PATTERN_PARSE_VISITOR
.visitInternalBatchActivateTemplate(
new InternalBatchActivateTemplateNode(
@@ -283,10 +274,10 @@ public class PipePlanPatternParseVisitorTest {
final MeasurementGroup expectedMeasurementGroup = new MeasurementGroup();
expectedMeasurementGroup.addMeasurement(
"s1", TSDataType.FLOAT, TSEncoding.RLE, CompressionType.SNAPPY);
- expectedMeasurementGroup.addProps(new HashMap<>());
+ expectedMeasurementGroup.addProps(Collections.emptyMap());
expectedMeasurementGroup.addAlias("a1");
- expectedMeasurementGroup.addTags(new HashMap<>());
- expectedMeasurementGroup.addAttributes(new HashMap<>());
+ expectedMeasurementGroup.addTags(Collections.emptyMap());
+ expectedMeasurementGroup.addAttributes(Collections.emptyMap());
final ByteBuffer byteBuffer = ByteBuffer.allocate(1000);
expectedMeasurementGroup.serialize(byteBuffer);
@@ -296,19 +287,16 @@ public class PipePlanPatternParseVisitorTest {
originalMeasurementGroup.addMeasurement(
"s2", TSDataType.BOOLEAN, TSEncoding.PLAIN, CompressionType.SNAPPY);
- originalMeasurementGroup.addProps(new HashMap<>());
+ originalMeasurementGroup.addProps(Collections.emptyMap());
originalMeasurementGroup.addAlias("a2");
- originalMeasurementGroup.addTags(new HashMap<>());
- originalMeasurementGroup.addAttributes(new HashMap<>());
+ originalMeasurementGroup.addTags(Collections.emptyMap());
+ originalMeasurementGroup.addAttributes(Collections.emptyMap());
Assert.assertEquals(
new InternalCreateMultiTimeSeriesNode(
new PlanNodeId("2024-04-30-1"),
- new HashMap<PartialPath, Pair<Boolean, MeasurementGroup>>() {
- {
- put(new PartialPath("root.db.device"), new Pair<>(false,
expectedMeasurementGroup));
- }
- }),
+ Collections.singletonMap(
+ new PartialPath("root.db.device"), new Pair<>(false,
expectedMeasurementGroup))),
IoTDBSchemaRegionExtractor.PATTERN_PARSE_VISITOR
.visitInternalCreateMultiTimeSeries(
new InternalCreateMultiTimeSeriesNode(
@@ -332,11 +320,7 @@ public class PipePlanPatternParseVisitorTest {
Assert.assertEquals(
new BatchActivateTemplateNode(
new PlanNodeId("2024-04-30-1"),
- new HashMap<PartialPath, Pair<Integer, Integer>>() {
- {
- put(new PartialPath("root.db.device"), new Pair<>(1, 1));
- }
- }),
+ Collections.singletonMap(new PartialPath("root.db.device"), new
Pair<>(1, 1))),
IoTDBSchemaRegionExtractor.PATTERN_PARSE_VISITOR
.visitBatchActivateTemplate(
new BatchActivateTemplateNode(
@@ -356,11 +340,8 @@ public class PipePlanPatternParseVisitorTest {
Assert.assertEquals(
new CreateLogicalViewNode(
new PlanNodeId("2024-04-30-1"),
- new HashMap<PartialPath, ViewExpression>() {
- {
- put(new PartialPath("root.db.device.a1"), new
TimeSeriesViewOperand("root.sg1.d1"));
- }
- }),
+ Collections.singletonMap(
+ new PartialPath("root.db.device.a1"), new
TimeSeriesViewOperand("root.sg1.d1"))),
IoTDBSchemaRegionExtractor.PATTERN_PARSE_VISITOR
.visitCreateLogicalView(
new CreateLogicalViewNode(
@@ -384,11 +365,8 @@ public class PipePlanPatternParseVisitorTest {
Assert.assertEquals(
new AlterLogicalViewNode(
new PlanNodeId("2024-04-30-1"),
- new HashMap<PartialPath, ViewExpression>() {
- {
- put(new PartialPath("root.db.device.a1"), new
TimeSeriesViewOperand("root.sg1.d1"));
- }
- }),
+ Collections.singletonMap(
+ new PartialPath("root.db.device.a1"), new
TimeSeriesViewOperand("root.sg1.d1"))),
IoTDBSchemaRegionExtractor.PATTERN_PARSE_VISITOR
.visitAlterLogicalView(
new AlterLogicalViewNode(