This is an automated email from the ASF dual-hosted git repository. jackietien pushed a commit to branch mergemaster0808 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit fb49a47ff3c6161b6f10f6f253d9a73cd2f00799 Author: Caideyipi <[email protected]> AuthorDate: Mon Jul 29 15:00:51 2024 +0800 Pipe: Fixed the NPE in pipe schema pattern parsing (#13047) (cherry picked from commit 67af4ea13cb5ad55c3dafc5ac3d17237f530cc1b) --- .../schemaregion/PipePlanPatternParseVisitor.java | 16 ++++++++++++---- .../visitor/PipeStatementPatternParseVisitor.java | 1 + .../receiver/visitor/PipeStatementToBatchVisitor.java | 1 + .../db/queryengine/plan/parser/StatementGenerator.java | 2 +- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/schemaregion/PipePlanPatternParseVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/schemaregion/PipePlanPatternParseVisitor.java index de46b2c6143..a0d70e7f211 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/schemaregion/PipePlanPatternParseVisitor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/extractor/schemaregion/PipePlanPatternParseVisitor.java @@ -145,10 +145,18 @@ public class PipePlanPatternParseVisitor extends PlanVisitor<Optional<PlanNode>, group.getDataTypes().get(index), group.getEncodings().get(index), group.getCompressors().get(index)); - targetMeasurementGroup.addTags(group.getTagsList().get(index)); - targetMeasurementGroup.addAttributes(group.getAttributesList().get(index)); - targetMeasurementGroup.addAlias(group.getAliasList().get(index)); - targetMeasurementGroup.addProps(group.getPropsList().get(index)); + if (Objects.nonNull(group.getTagsList())) { + targetMeasurementGroup.addTags(group.getTagsList().get(index)); + } + if (Objects.nonNull(group.getAttributesList())) { + targetMeasurementGroup.addAttributes(group.getAttributesList().get(index)); + } + if (Objects.nonNull(group.getAliasList())) { + targetMeasurementGroup.addAlias(group.getAliasList().get(index)); + } + if (Objects.nonNull(group.getPropsList())) { + targetMeasurementGroup.addProps(group.getPropsList().get(index)); + } }); return targetMeasurementGroup; } 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 26c22f89b3a..25b117633c4 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 @@ -92,6 +92,7 @@ public class PipeStatementPatternParseVisitor statement.getEncodings().get(index)); targetCreateAlignedTimeSeriesStatement.addCompressor( statement.getCompressors().get(index)); + // Non-null lists targetCreateAlignedTimeSeriesStatement.addTagsList( statement.getTagsList().get(index)); targetCreateAlignedTimeSeriesStatement.addAttributesList( 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 213730a6c90..f48a2bc002c 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 @@ -143,6 +143,7 @@ public class PipeStatementToBatchVisitor extends StatementVisitor<Optional<State statement.getCompressors().get(i)); group.addProps(new HashMap<>()); } + // Non-null lists statement.getTagsList().forEach(group::addTags); statement.getAttributesList().forEach(group::addAttributes); statement.getAliasList().forEach(group::addAlias); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java index 985214362c5..3cd8ebc0516 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/StatementGenerator.java @@ -560,7 +560,7 @@ public class StatementGenerator { public static CreateAlignedTimeSeriesStatement createStatement(TSCreateAlignedTimeseriesReq req) throws IllegalPathException { final long startTime = System.nanoTime(); - // construct create aligned timeseries statement + // construct create aligned time series statement CreateAlignedTimeSeriesStatement statement = new CreateAlignedTimeSeriesStatement(); statement.setDevicePath(DEVICE_PATH_CACHE.getPartialPath(req.prefixPath)); List<TSDataType> dataTypes = new ArrayList<>();
