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

Reply via email to