@Override
  protected Pair<Expression, Boolean> visitBetweenPredicate(
      BetweenPredicate node, Context context) {
    Expression firstExpression = node.getValue();
    Expression secondExpression = node.getMin();
    Expression thirdExpression = node.getMax();

    boolean isTimeFilter = false;
    if (isTimeColumn(firstExpression, context.timeColumnName)) {
      isTimeFilter = checkBetweenConstantSatisfy(secondExpression, thirdExpression);
    }
    // TODO After Constant-Folding introduced
    /*else if (isTimeIdentifier(secondExpression)) {
      isTimeFilter = checkBetweenConstantSatisfy(firstExpression, thirdExpression);
    } else if (isTimeIdentifier(thirdExpression)) {
      isTimeFilter = checkBetweenConstantSatisfy(secondExpression, firstExpression);
    }*/
    if (isTimeFilter) {
      return new Pair<>(node, false);
    }
    return new Pair<>(null, true);
  }
Extract global time predicate from query predicate.

@param predicate raw query predicate
@return Pair, left is globalTimePredicate, right is if hasValueFilter.
@throws UnknownExpressionTypeException unknown expression type
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/GlobalTimePredicateExtractVisitor.java