@Override
  protected Filter visitInPredicate(InPredicate node, Void context) {
    Expression valueList = node.getValueList();
    checkArgument(valueList instanceof InListExpression);
    List<Expression> values = ((InListExpression) valueList).getValues();
    for (Expression value : values) {
      checkArgument(value instanceof LongLiteral);
    }
    if (values.size() == 1) {
      return TimeFilterApi.eq(getLongValue(values.get(0)));
    }
    Set<Long> longValues = new HashSet<>();
    for (Expression value : values) {
      longValues.add(((LongLiteral) value).getParsedValue());
    }
    return TimeFilterApi.in(longValues);
  }
The caller must make sure that the Expression only contains valid time predicate
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/predicate/ConvertPredicateToTimeFilterVisitor.java