This is an automated email from the ASF dual-hosted git repository.

hui pushed a commit to branch lmh/removeWithoutNull
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 53d6e1bc9f15ffb19c5af9cb5aa6be888d6642a8
Author: Minghui Liu <[email protected]>
AuthorDate: Tue Jul 12 16:04:33 2022 +0800

    remove redundant code
---
 .../apache/iotdb/db/mpp/plan/analyze/Analysis.java |  12 --
 .../iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java  |  72 -----------
 .../db/mpp/plan/analyze/ConcatPathRewriter.java    |  43 -------
 .../db/mpp/plan/planner/LocalExecutionPlanner.java |   7 --
 .../db/mpp/plan/planner/LogicalPlanBuilder.java    |  13 --
 .../db/mpp/plan/planner/LogicalPlanVisitor.java    |   1 -
 .../plan/planner/plan/node/PlanGraphPrinter.java   |   8 --
 .../mpp/plan/planner/plan/node/PlanNodeType.java   |   4 -
 .../db/mpp/plan/planner/plan/node/PlanVisitor.java |   5 -
 .../planner/plan/node/process/FilterNullNode.java  | 136 ---------------------
 .../plan/parameter/FilterNullParameter.java        | 109 -----------------
 .../statement/component/FilterNullComponent.java   |  97 ---------------
 .../db/mpp/plan/statement/crud/QueryStatement.java |  12 --
 .../mpp/plan/plan/FragmentInstanceSerdeTest.java   |  13 +-
 .../db/mpp/plan/plan/QueryLogicalPlanUtil.java     |  13 +-
 .../plan/node/process/FilterNullNodeSerdeTest.java |  58 ---------
 16 files changed, 3 insertions(+), 600 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java
index 2a7137dd22..5dd5958e77 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analysis.java
@@ -27,7 +27,6 @@ import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
 import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
 import org.apache.iotdb.db.mpp.plan.expression.Expression;
 import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.FillDescriptor;
-import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.FilterNullParameter;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.mpp.plan.statement.Statement;
 import org.apache.iotdb.tsfile.read.filter.basic.Filter;
@@ -124,9 +123,6 @@ public class Analysis {
   // a global time filter used in `initQueryDataSource` and filter push down
   private Filter globalTimeFilter;
 
-  // parameter of `WITHOUT NULL` clause
-  private FilterNullParameter filterNullParameter;
-
   // parameter of `FILL` clause
   private FillDescriptor fillDescriptor;
 
@@ -248,14 +244,6 @@ public class Analysis {
         String.format("GROUP BY LEVEL: Unknown input expression '%s'", 
expression));
   }
 
-  public FilterNullParameter getFilterNullParameter() {
-    return filterNullParameter;
-  }
-
-  public void setFilterNullParameter(FilterNullParameter filterNullParameter) {
-    this.filterNullParameter = filterNullParameter;
-  }
-
   public FillDescriptor getFillDescriptor() {
     return fillDescriptor;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
index 83554d8ccb..a75536f5b1 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
@@ -42,7 +42,6 @@ import org.apache.iotdb.db.mpp.plan.expression.Expression;
 import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand;
 import org.apache.iotdb.db.mpp.plan.expression.multi.FunctionExpression;
 import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.FillDescriptor;
-import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.FilterNullParameter;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.mpp.plan.statement.Statement;
 import org.apache.iotdb.db.mpp.plan.statement.StatementNode;
@@ -381,24 +380,6 @@ public class AnalyzeVisitor extends 
StatementVisitor<Analysis, MPPQueryContext>
         analysis.setGroupByTimeParameter(new 
GroupByTimeParameter(groupByTimeComponent));
       }
 
-      if (queryStatement.getFilterNullComponent() != null) {
-        FilterNullParameter filterNullParameter = new FilterNullParameter();
-        filterNullParameter.setFilterNullPolicy(
-            queryStatement.getFilterNullComponent().getWithoutPolicyType());
-        List<Expression> resultFilterNullColumns;
-        if (queryStatement.isAlignByDevice()) {
-          resultFilterNullColumns =
-              analyzeWithoutNullAlignByDevice(
-                  queryStatement,
-                  
outputExpressions.stream().map(Pair::getLeft).collect(Collectors.toSet()));
-        } else {
-          resultFilterNullColumns =
-              analyzeWithoutNull(queryStatement, schemaTree, 
analysis.getTransformExpressions());
-        }
-        filterNullParameter.setFilterNullColumns(resultFilterNullColumns);
-        analysis.setFilterNullParameter(filterNullParameter);
-      }
-
       if (queryStatement.getFillComponent() != null) {
         FillComponent fillComponent = queryStatement.getFillComponent();
         List<Expression> fillColumnList =
@@ -718,59 +699,6 @@ public class AnalyzeVisitor extends 
StatementVisitor<Analysis, MPPQueryContext>
     return groupByLevelExpressions;
   }
 
-  private List<Expression> analyzeWithoutNullAlignByDevice(
-      QueryStatement queryStatement, Set<Expression> outputExpressions) {
-    List<Expression> resultFilterNullColumns = new ArrayList<>();
-    List<Expression> rawFilterNullColumns =
-        queryStatement.getFilterNullComponent().getWithoutNullColumns();
-
-    // don't specify columns, by default, it is effective for all columns
-    if (rawFilterNullColumns.isEmpty()) {
-      resultFilterNullColumns.addAll(outputExpressions);
-      return resultFilterNullColumns;
-    }
-
-    for (Expression filterNullColumn : rawFilterNullColumns) {
-      if (!outputExpressions.contains(filterNullColumn)) {
-        throw new SemanticException(
-            String.format(
-                "The without null column '%s' don't match the columns 
queried.", filterNullColumn));
-      }
-      resultFilterNullColumns.add(filterNullColumn);
-    }
-    return resultFilterNullColumns;
-  }
-
-  private List<Expression> analyzeWithoutNull(
-      QueryStatement queryStatement, SchemaTree schemaTree, Set<Expression> 
transformExpressions) {
-    List<Expression> resultFilterNullColumns = new ArrayList<>();
-    List<Expression> rawFilterNullColumns =
-        queryStatement.getFilterNullComponent().getWithoutNullColumns();
-
-    // don't specify columns, by default, it is effective for all columns
-    if (rawFilterNullColumns.isEmpty()) {
-      resultFilterNullColumns.addAll(transformExpressions);
-      return resultFilterNullColumns;
-    }
-
-    for (Expression filterNullColumn : rawFilterNullColumns) {
-      List<Expression> resultExpressions =
-          ExpressionAnalyzer.removeWildcardInExpression(filterNullColumn, 
schemaTree);
-      for (Expression expression : resultExpressions) {
-        Expression expressionWithoutAlias =
-            ExpressionAnalyzer.removeAliasFromExpression(expression);
-        if (!transformExpressions.contains(expressionWithoutAlias)) {
-          throw new SemanticException(
-              String.format(
-                  "The without null column '%s' don't match the columns 
queried.",
-                  filterNullColumn));
-        }
-        resultFilterNullColumns.add(expressionWithoutAlias);
-      }
-    }
-    return resultFilterNullColumns;
-  }
-
   private DatasetHeader analyzeOutput(
       QueryStatement queryStatement, List<Pair<Expression, String>> 
outputExpressions) {
     boolean isIgnoreTimestamp =
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ConcatPathRewriter.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ConcatPathRewriter.java
index f3816fd289..f4ee8a2794 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ConcatPathRewriter.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ConcatPathRewriter.java
@@ -24,14 +24,12 @@ import 
org.apache.iotdb.db.exception.sql.StatementAnalyzeException;
 import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
 import org.apache.iotdb.db.mpp.plan.expression.Expression;
 import org.apache.iotdb.db.mpp.plan.statement.Statement;
-import org.apache.iotdb.db.mpp.plan.statement.component.FilterNullComponent;
 import org.apache.iotdb.db.mpp.plan.statement.component.ResultColumn;
 import org.apache.iotdb.db.mpp.plan.statement.component.SelectComponent;
 import org.apache.iotdb.db.mpp.plan.statement.crud.QueryStatement;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -69,30 +67,6 @@ public class ConcatPathRewriter {
       queryStatement.getSelectComponent().setResultColumns(resultColumns);
     }
 
-    // concat WITHOUT NULL with FROM
-    if (queryStatement.getFilterNullComponent() != null
-        && 
!queryStatement.getFilterNullComponent().getWithoutNullColumns().isEmpty()) {
-      FilterNullComponent filterNullComponent = 
queryStatement.getFilterNullComponent();
-      Map<String, Expression> aliasToColumnMap =
-          queryStatement.getSelectComponent().getAliasToColumnMap();
-
-      // replace alias
-      List<Expression> replacedWithoutNullColumns =
-          filterNullComponent.getWithoutNullColumns().stream()
-              .map(
-                  expression ->
-                      
aliasToColumnMap.getOrDefault(expression.getExpressionString(), expression))
-              .collect(Collectors.toList());
-
-      if (queryStatement.isAlignByDevice()) {
-        
queryStatement.getFilterNullComponent().setWithoutNullColumns(replacedWithoutNullColumns);
-      } else {
-        List<Expression> withoutNullColumns =
-            concatWithoutNullColumnsWithFrom(replacedWithoutNullColumns, 
prefixPaths);
-        
queryStatement.getFilterNullComponent().setWithoutNullColumns(withoutNullColumns);
-      }
-    }
-
     // concat WHERE with FROM
     if (queryStatement.getWhereCondition() != null) {
       ExpressionAnalyzer.constructPatternTreeFromExpression(
@@ -130,21 +104,4 @@ public class ConcatPathRewriter {
     }
     return resultColumns;
   }
-
-  /**
-   * Concat the prefix path in the WITHOUT NULL clause and the suffix path in 
the FROM clause into a
-   * full path pattern. And construct pattern tree.
-   */
-  private List<Expression> concatWithoutNullColumnsWithFrom(
-      List<Expression> withoutNullColumns, List<PartialPath> prefixPaths)
-      throws StatementAnalyzeException {
-    // result after concat
-    return withoutNullColumns.stream()
-        .map(
-            expression ->
-                ExpressionAnalyzer.concatExpressionWithSuffixPaths(
-                    expression, prefixPaths, patternTree))
-        .flatMap(List::stream)
-        .collect(Collectors.toList());
-  }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LocalExecutionPlanner.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LocalExecutionPlanner.java
index 343c328eea..5789687a82 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LocalExecutionPlanner.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LocalExecutionPlanner.java
@@ -132,7 +132,6 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.process.DeviceViewNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.ExchangeNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FillNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNode;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNullNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.GroupByLevelNode;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.process.LastQueryMergeNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.LimitNode;
@@ -182,7 +181,6 @@ import static 
com.google.common.base.Preconditions.checkArgument;
 import static java.util.Objects.requireNonNull;
 import static 
org.apache.iotdb.db.mpp.execution.operator.LastQueryUtil.satisfyFilter;
 import static 
org.apache.iotdb.db.mpp.plan.constant.DataNodeEndPoints.isSameNode;
-import static org.apache.iotdb.tsfile.file.metadata.enums.TSDataType.BOOLEAN;
 
 /**
  * Used to plan a fragment instance. Currently, we simply change it from 
PlanNode to executable
@@ -823,11 +821,6 @@ public class LocalExecutionPlanner {
       }
     }
 
-    @Override
-    public Operator visitFilterNull(FilterNullNode node, 
LocalExecutionPlanContext context) {
-      return super.visitFilterNull(node, context);
-    }
-
     @Override
     public Operator visitGroupByLevel(GroupByLevelNode node, 
LocalExecutionPlanContext context) {
       checkArgument(
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanBuilder.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanBuilder.java
index 2eb94df12f..2c264e57fd 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanBuilder.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanBuilder.java
@@ -50,7 +50,6 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.process.AggregationNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.DeviceViewNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FillNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNode;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNullNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.GroupByLevelNode;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.process.LastQueryMergeNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.LimitNode;
@@ -68,7 +67,6 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.source.SeriesScanNode;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.parameter.AggregationDescriptor;
 import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.AggregationStep;
 import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.FillDescriptor;
-import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.FilterNullParameter;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByLevelDescriptor;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByTimeParameter;
 import org.apache.iotdb.db.mpp.plan.statement.component.OrderBy;
@@ -623,17 +621,6 @@ public class LogicalPlanBuilder {
     return this;
   }
 
-  public LogicalPlanBuilder planFilterNull(FilterNullParameter 
filterNullParameter) {
-    if (filterNullParameter == null) {
-      return this;
-    }
-
-    this.root =
-        new FilterNullNode(
-            context.getQueryId().genPlanNodeId(), this.getRoot(), 
filterNullParameter);
-    return this;
-  }
-
   public LogicalPlanBuilder planFill(FillDescriptor fillDescriptor, OrderBy 
scanOrder) {
     if (fillDescriptor == null) {
       return this;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanVisitor.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanVisitor.java
index f711c9a387..1575c5d635 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanVisitor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanVisitor.java
@@ -143,7 +143,6 @@ public class LogicalPlanVisitor extends 
StatementVisitor<PlanNode, MPPQueryConte
     // other common upstream node
     planBuilder =
         planBuilder
-            .planFilterNull(analysis.getFilterNullParameter())
             .planFill(analysis.getFillDescriptor(), 
queryStatement.getResultOrder())
             .planOffset(queryStatement.getRowOffset())
             .planLimit(queryStatement.getRowLimit());
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanGraphPrinter.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanGraphPrinter.java
index 3c88a9f69a..0a862b7cd2 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanGraphPrinter.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanGraphPrinter.java
@@ -27,7 +27,6 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.process.DeviceViewNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.ExchangeNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FillNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNode;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNullNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.GroupByLevelNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.LimitNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.OffsetNode;
@@ -159,13 +158,6 @@ public class PlanGraphPrinter extends 
PlanVisitor<List<String>, PlanGraphPrinter
     return render(node, boxValue, context);
   }
 
-  @Override
-  public List<String> visitFilterNull(FilterNullNode node, GraphContext 
context) {
-    List<String> boxValue = new ArrayList<>();
-    boxValue.add(String.format("FilterNull-%s", node.getPlanNodeId().getId()));
-    return render(node, boxValue, context);
-  }
-
   @Override
   public List<String> visitGroupByLevel(GroupByLevelNode node, GraphContext 
context) {
     List<String> boxValue = new ArrayList<>();
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanNodeType.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanNodeType.java
index a7e50182a4..0dfa202822 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanNodeType.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanNodeType.java
@@ -46,7 +46,6 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.process.DeviceViewNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.ExchangeNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FillNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNode;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNullNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.GroupByLevelNode;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.process.LastQueryMergeNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.LimitNode;
@@ -81,7 +80,6 @@ public enum PlanNodeType {
   DEVICE_VIEW((short) 1),
   FILL((short) 2),
   FILTER((short) 3),
-  FILTER_NULL((short) 4),
   GROUP_BY_LEVEL((short) 5),
   LIMIT((short) 6),
   OFFSET((short) 7),
@@ -166,8 +164,6 @@ public enum PlanNodeType {
         return FillNode.deserialize(buffer);
       case 3:
         return FilterNode.deserialize(buffer);
-      case 4:
-        return FilterNullNode.deserialize(buffer);
       case 5:
         return GroupByLevelNode.deserialize(buffer);
       case 6:
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanVisitor.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanVisitor.java
index f1f9092b86..fc83e2a5a7 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanVisitor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/PlanVisitor.java
@@ -45,7 +45,6 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.process.DeviceViewNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.ExchangeNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FillNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNode;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNullNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.GroupByLevelNode;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.process.LastQueryMergeNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.LimitNode;
@@ -109,10 +108,6 @@ public abstract class PlanVisitor<R, C> {
     return visitPlan(node, context);
   }
 
-  public R visitFilterNull(FilterNullNode node, C context) {
-    return visitPlan(node, context);
-  }
-
   public R visitGroupByLevel(GroupByLevelNode node, C context) {
     return visitPlan(node, context);
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/FilterNullNode.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/FilterNullNode.java
deleted file mode 100644
index 535ed4fa95..0000000000
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/FilterNullNode.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.mpp.plan.planner.plan.node.process;
-
-import org.apache.iotdb.db.mpp.plan.expression.Expression;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeType;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanVisitor;
-import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.FilterNullParameter;
-import org.apache.iotdb.db.mpp.plan.statement.component.FilterNullPolicy;
-
-import com.google.common.collect.ImmutableList;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.List;
-import java.util.Objects;
-
-/** FilterNullNode is used to discard specific rows from upstream node. */
-public class FilterNullNode extends ProcessNode {
-
-  private final FilterNullParameter filterNullParameter;
-
-  private PlanNode child;
-
-  public FilterNullNode(PlanNodeId id, FilterNullParameter 
filterNullParameter) {
-    super(id);
-    this.filterNullParameter = filterNullParameter;
-  }
-
-  public FilterNullNode(
-      PlanNodeId id, FilterNullPolicy filterNullPolicy, List<Expression> 
filterNullColumns) {
-    super(id);
-    this.filterNullParameter = new FilterNullParameter(filterNullPolicy, 
filterNullColumns);
-  }
-
-  public FilterNullNode(
-      PlanNodeId id,
-      PlanNode child,
-      FilterNullPolicy filterNullPolicy,
-      List<Expression> filterNullColumns) {
-    this(id, filterNullPolicy, filterNullColumns);
-    this.child = child;
-  }
-
-  public FilterNullNode(PlanNodeId id, PlanNode child, FilterNullParameter 
filterNullParameter) {
-    this(id, filterNullParameter);
-    this.child = child;
-  }
-
-  @Override
-  public List<PlanNode> getChildren() {
-    return ImmutableList.of(child);
-  }
-
-  @Override
-  public void addChild(PlanNode child) {
-    this.child = child;
-  }
-
-  @Override
-  public int allowedChildCount() {
-    return ONE_CHILD;
-  }
-
-  @Override
-  public PlanNode clone() {
-    return new FilterNullNode(getPlanNodeId(), filterNullParameter);
-  }
-
-  @Override
-  public List<String> getOutputColumnNames() {
-    return child.getOutputColumnNames();
-  }
-
-  @Override
-  public <R, C> R accept(PlanVisitor<R, C> visitor, C context) {
-    return visitor.visitFilterNull(this, context);
-  }
-
-  @Override
-  protected void serializeAttributes(ByteBuffer byteBuffer) {
-    PlanNodeType.FILTER_NULL.serialize(byteBuffer);
-    filterNullParameter.serialize(byteBuffer);
-  }
-
-  @Override
-  protected void serializeAttributes(DataOutputStream stream) throws 
IOException {
-    PlanNodeType.FILTER_NULL.serialize(stream);
-    filterNullParameter.serialize(stream);
-  }
-
-  public static FilterNullNode deserialize(ByteBuffer byteBuffer) {
-    FilterNullParameter filterNullParameter = 
FilterNullParameter.deserialize(byteBuffer);
-    PlanNodeId planNodeId = PlanNodeId.deserialize(byteBuffer);
-    return new FilterNullNode(planNodeId, filterNullParameter);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    if (!super.equals(o)) {
-      return false;
-    }
-    FilterNullNode that = (FilterNullNode) o;
-    return filterNullParameter.equals(that.filterNullParameter) && 
child.equals(that.child);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(super.hashCode(), filterNullParameter, child);
-  }
-}
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/FilterNullParameter.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/FilterNullParameter.java
deleted file mode 100644
index 803dff7c00..0000000000
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/FilterNullParameter.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.db.mpp.plan.planner.plan.parameter;
-
-import org.apache.iotdb.db.mpp.plan.expression.Expression;
-import org.apache.iotdb.db.mpp.plan.statement.component.FilterNullPolicy;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-public class FilterNullParameter {
-
-  // The policy to discard the result from upstream npde
-  private FilterNullPolicy filterNullPolicy;
-
-  // indicate columns used to filter null
-  private List<Expression> filterNullColumns;
-
-  public FilterNullParameter() {}
-
-  public FilterNullParameter(
-      FilterNullPolicy filterNullPolicy, List<Expression> filterNullColumns) {
-    this.filterNullPolicy = filterNullPolicy;
-    this.filterNullColumns = filterNullColumns;
-  }
-
-  public FilterNullPolicy getFilterNullPolicy() {
-    return filterNullPolicy;
-  }
-
-  public List<Expression> getFilterNullColumns() {
-    return filterNullColumns;
-  }
-
-  public void setFilterNullPolicy(FilterNullPolicy filterNullPolicy) {
-    this.filterNullPolicy = filterNullPolicy;
-  }
-
-  public void setFilterNullColumns(List<Expression> filterNullColumns) {
-    this.filterNullColumns = filterNullColumns;
-  }
-
-  public void serialize(ByteBuffer byteBuffer) {
-    ReadWriteIOUtils.write(filterNullPolicy.ordinal(), byteBuffer);
-    ReadWriteIOUtils.write(filterNullColumns.size(), byteBuffer);
-    for (Expression filterNullColumn : filterNullColumns) {
-      Expression.serialize(filterNullColumn, byteBuffer);
-    }
-  }
-
-  public void serialize(DataOutputStream stream) throws IOException {
-    ReadWriteIOUtils.write(filterNullPolicy.ordinal(), stream);
-    ReadWriteIOUtils.write(filterNullColumns.size(), stream);
-    for (Expression filterNullColumn : filterNullColumns) {
-      Expression.serialize(filterNullColumn, stream);
-    }
-  }
-
-  public static FilterNullParameter deserialize(ByteBuffer byteBuffer) {
-    FilterNullPolicy filterNullPolicy =
-        FilterNullPolicy.values()[ReadWriteIOUtils.readInt(byteBuffer)];
-    int size = ReadWriteIOUtils.readInt(byteBuffer);
-    List<Expression> filterNullColumns = new ArrayList<>(size);
-    for (int i = 0; i < size; i++) {
-      filterNullColumns.add(Expression.deserialize(byteBuffer));
-    }
-    return new FilterNullParameter(filterNullPolicy, filterNullColumns);
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    FilterNullParameter that = (FilterNullParameter) o;
-    return filterNullPolicy == that.filterNullPolicy
-        && Objects.equals(filterNullColumns, that.filterNullColumns);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(filterNullPolicy, filterNullColumns);
-  }
-}
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FilterNullComponent.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FilterNullComponent.java
deleted file mode 100644
index e0e2c4c6e9..0000000000
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/FilterNullComponent.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.db.mpp.plan.statement.component;
-
-import org.apache.iotdb.db.mpp.plan.expression.Expression;
-import org.apache.iotdb.db.mpp.plan.statement.StatementNode;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-/** This class maintains information of {@code WITHOUT NULL} clause. */
-public class FilterNullComponent extends StatementNode {
-
-  FilterNullPolicy filterNullPolicy = FilterNullPolicy.NO_FILTER;
-
-  List<Expression> withoutNullColumns = new ArrayList<>();
-
-  public FilterNullPolicy getWithoutPolicyType() {
-    return filterNullPolicy;
-  }
-
-  public void setWithoutPolicyType(FilterNullPolicy filterNullPolicy) {
-    this.filterNullPolicy = filterNullPolicy;
-  }
-
-  public void addWithoutNullColumn(Expression e) {
-    withoutNullColumns.add(e);
-  }
-
-  public List<Expression> getWithoutNullColumns() {
-    return withoutNullColumns;
-  }
-
-  public void setWithoutNullColumns(List<Expression> withoutNullColumns) {
-    this.withoutNullColumns = withoutNullColumns;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    FilterNullComponent that = (FilterNullComponent) o;
-    return filterNullPolicy == that.filterNullPolicy
-        && Objects.equals(withoutNullColumns, that.withoutNullColumns);
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(filterNullPolicy, withoutNullColumns);
-  }
-
-  public void serialize(ByteBuffer byteBuffer) {
-    ReadWriteIOUtils.write(filterNullPolicy.ordinal(), byteBuffer);
-    ReadWriteIOUtils.write(withoutNullColumns.size(), byteBuffer);
-    for (Expression expression : withoutNullColumns) {
-      Expression.serialize(expression, byteBuffer);
-    }
-  }
-
-  public static FilterNullComponent deserialize(ByteBuffer byteBuffer) {
-    FilterNullPolicy filterNullPolicy =
-        FilterNullPolicy.values()[ReadWriteIOUtils.readInt(byteBuffer)];
-    int withoutNullSize = ReadWriteIOUtils.readInt(byteBuffer);
-    List<Expression> withoutNullColumns = new ArrayList<>();
-    for (int i = 0; i < withoutNullSize; i++) {
-      withoutNullColumns.add(Expression.deserialize(byteBuffer));
-    }
-    FilterNullComponent filterNullComponent = new FilterNullComponent();
-    filterNullComponent.withoutNullColumns = withoutNullColumns;
-    filterNullComponent.filterNullPolicy = filterNullPolicy;
-    return filterNullComponent;
-  }
-}
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java
index 9406307a38..17f433a2e7 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/crud/QueryStatement.java
@@ -28,7 +28,6 @@ import 
org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand;
 import org.apache.iotdb.db.mpp.plan.statement.Statement;
 import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
 import org.apache.iotdb.db.mpp.plan.statement.component.FillComponent;
-import org.apache.iotdb.db.mpp.plan.statement.component.FilterNullComponent;
 import org.apache.iotdb.db.mpp.plan.statement.component.FromComponent;
 import org.apache.iotdb.db.mpp.plan.statement.component.GroupByLevelComponent;
 import org.apache.iotdb.db.mpp.plan.statement.component.GroupByTimeComponent;
@@ -55,7 +54,6 @@ import java.util.List;
  *   <li>[FILL ({PREVIOUS | LINEAR | constant})]
  *   <li>[LIMIT rowLimit] [OFFSET rowOffset]
  *   <li>[SLIMIT seriesLimit] [SOFFSET seriesOffset]
- *   <li>[WITHOUT NULL {ANY | ALL} [resultColumn [, resultColumn] ...]]
  *   <li>[ORDER BY TIME {ASC | DESC}]
  *   <li>[{ALIGN BY DEVICE | DISABLE ALIGN}]
  * </ul>
@@ -78,8 +76,6 @@ public class QueryStatement extends Statement {
 
   protected FillComponent fillComponent;
 
-  protected FilterNullComponent filterNullComponent;
-
   protected OrderBy resultOrder = OrderBy.TIMESTAMP_ASC;
 
   protected ResultSetFormat resultSetFormat = ResultSetFormat.ALIGN_BY_TIME;
@@ -163,14 +159,6 @@ public class QueryStatement extends Statement {
     this.fillComponent = fillComponent;
   }
 
-  public FilterNullComponent getFilterNullComponent() {
-    return filterNullComponent;
-  }
-
-  public void setFilterNullComponent(FilterNullComponent filterNullComponent) {
-    this.filterNullComponent = filterNullComponent;
-  }
-
   public OrderBy getResultOrder() {
     return resultOrder;
   }
diff --git 
a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/FragmentInstanceSerdeTest.java
 
b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/FragmentInstanceSerdeTest.java
index 007f7fad07..ebcd805c0b 100644
--- 
a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/FragmentInstanceSerdeTest.java
+++ 
b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/FragmentInstanceSerdeTest.java
@@ -31,12 +31,10 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.FragmentInstance;
 import org.apache.iotdb.db.mpp.plan.planner.plan.PlanFragment;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNullNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.LimitNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.OffsetNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.TimeJoinNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.source.SeriesScanNode;
-import org.apache.iotdb.db.mpp.plan.statement.component.FilterNullPolicy;
 import org.apache.iotdb.db.mpp.plan.statement.component.OrderBy;
 import org.apache.iotdb.tsfile.read.filter.GroupByFilter;
 
@@ -44,7 +42,6 @@ import com.google.common.collect.ImmutableList;
 import org.junit.Test;
 
 import java.nio.ByteBuffer;
-import java.util.ArrayList;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
@@ -118,13 +115,6 @@ public class FragmentInstanceSerdeTest {
     OffsetNode offsetNode = new OffsetNode(new PlanNodeId("OffsetNode"), 100);
     LimitNode limitNode = new LimitNode(new PlanNodeId("LimitNode"), 100);
 
-    FilterNullNode filterNullNode =
-        new FilterNullNode(
-            new PlanNodeId("TestFilterNullNode"),
-            null,
-            FilterNullPolicy.ALL_NULL,
-            new ArrayList<>());
-
     TimeJoinNode timeJoinNode =
         new TimeJoinNode(new PlanNodeId("TimeJoinNode"), 
OrderBy.TIMESTAMP_DESC);
     SeriesScanNode seriesScanNode1 =
@@ -141,8 +131,7 @@ public class FragmentInstanceSerdeTest {
     timeJoinNode.addChild(seriesScanNode1);
     timeJoinNode.addChild(seriesScanNode2);
     timeJoinNode.addChild(seriesScanNode3);
-    filterNullNode.addChild(timeJoinNode);
-    limitNode.addChild(filterNullNode);
+    limitNode.addChild(timeJoinNode);
     offsetNode.addChild(limitNode);
 
     return offsetNode;
diff --git 
a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/QueryLogicalPlanUtil.java
 
b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/QueryLogicalPlanUtil.java
index c62da3bc79..753dee8c19 100644
--- 
a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/QueryLogicalPlanUtil.java
+++ 
b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/QueryLogicalPlanUtil.java
@@ -35,7 +35,6 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.AggregationNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.DeviceViewNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNode;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNullNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.GroupByLevelNode;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.process.LastQueryMergeNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.LimitNode;
@@ -50,7 +49,6 @@ import 
org.apache.iotdb.db.mpp.plan.planner.plan.node.source.SeriesScanNode;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.parameter.AggregationDescriptor;
 import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.AggregationStep;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByLevelDescriptor;
-import org.apache.iotdb.db.mpp.plan.statement.component.FilterNullPolicy;
 import org.apache.iotdb.db.mpp.plan.statement.component.OrderBy;
 import org.apache.iotdb.db.query.aggregation.AggregationType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -185,7 +183,7 @@ public class QueryLogicalPlanUtil {
   static {
     String sql =
         "SELECT s1 FROM root.sg.* WHERE time > 100 and s2 > 10 "
-            + "ORDER BY TIME DESC WITHOUT NULL ANY LIMIT 100 OFFSET 100 SLIMIT 
1 SOFFSET 1";
+            + "ORDER BY TIME DESC LIMIT 100 OFFSET 100 SLIMIT 1 SOFFSET 1";
 
     QueryId queryId = new QueryId("test");
     List<PlanNode> sourceNodeList = new ArrayList<>();
@@ -234,14 +232,7 @@ public class QueryLogicalPlanUtil {
             ZonedDateTime.now().getOffset(),
             OrderBy.TIMESTAMP_DESC);
 
-    FilterNullNode filterNullNode =
-        new FilterNullNode(
-            queryId.genPlanNodeId(),
-            filterNode,
-            FilterNullPolicy.CONTAINS_NULL,
-            Collections.singletonList(new 
TimeSeriesOperand(schemaMap.get("root.sg.d2.s1"))));
-
-    OffsetNode offsetNode = new OffsetNode(queryId.genPlanNodeId(), 
filterNullNode, 100);
+    OffsetNode offsetNode = new OffsetNode(queryId.genPlanNodeId(), 
filterNode, 100);
     LimitNode limitNode = new LimitNode(queryId.genPlanNodeId(), offsetNode, 
100);
 
     querySQLs.add(sql);
diff --git 
a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/node/process/FilterNullNodeSerdeTest.java
 
b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/node/process/FilterNullNodeSerdeTest.java
deleted file mode 100644
index 360b644d8d..0000000000
--- 
a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/node/process/FilterNullNodeSerdeTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.mpp.plan.plan.node.process;
-
-import org.apache.iotdb.commons.exception.IllegalPathException;
-import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand;
-import org.apache.iotdb.db.mpp.plan.plan.node.PlanNodeDeserializeHelper;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.FilterNullNode;
-import org.apache.iotdb.db.mpp.plan.planner.plan.node.process.TimeJoinNode;
-import org.apache.iotdb.db.mpp.plan.statement.component.FilterNullPolicy;
-import org.apache.iotdb.db.mpp.plan.statement.component.OrderBy;
-
-import org.junit.Test;
-
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-
-import static org.junit.Assert.assertEquals;
-
-public class FilterNullNodeSerdeTest {
-
-  @Test
-  public void testSerializeAndDeserialize() throws IllegalPathException {
-    TimeJoinNode timeJoinNode =
-        new TimeJoinNode(new PlanNodeId("TestTimeJoinNode"), 
OrderBy.TIMESTAMP_ASC);
-    FilterNullNode filterNullNode =
-        new FilterNullNode(
-            new PlanNodeId("TestFilterNullNode"),
-            timeJoinNode,
-            FilterNullPolicy.ALL_NULL,
-            Arrays.asList(
-                new TimeSeriesOperand(new PartialPath("root.sg.d1.s1")),
-                new TimeSeriesOperand(new PartialPath("root.sg.d1.s2"))));
-
-    ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
-    filterNullNode.serialize(byteBuffer);
-    byteBuffer.flip();
-    assertEquals(PlanNodeDeserializeHelper.deserialize(byteBuffer), 
filterNullNode);
-  }
-}

Reply via email to