@Override
  protected @Nullable SchemaFilter visitComparisonExpression(
      final ComparisonExpression node, final Context context) {
    final String columnName;
    final String value;
    final boolean isOrdered;
    if (node.getLeft() instanceof Literal) {
      value = ((StringLiteral) (node.getLeft())).getValue();
      checkArgument(isSymbolReference(node.getRight()));
      columnName = ((SymbolReference) (node.getRight())).getName();
      isOrdered = false;
    } else if (node.getRight() instanceof Literal) {
      value = ((StringLiteral) (node.getRight())).getValue();
      checkArgument(isSymbolReference(node.getLeft()));
      columnName = ((SymbolReference) (node.getLeft())).getName();
      isOrdered = true;
    } else {
      return null;
    }

    return wrapIdOrAttributeFilter(
        node.getOperator() == ComparisonExpression.Operator.EQUAL
            ? new PreciseFilter(value)
            : new ComparisonFilter(
                convertExpressionOperator2SchemaOperator(node.getOperator(), isOrdered), value),
        columnName,
        context);
  }
The {@link ConvertSchemaPredicateToFilterVisitor} will convert a predicate to {@link
SchemaFilter}. For the predicates which can not be converted, this will return {@code null}.
However, for IdDeterminedPredicate, this visitor shall never return {@code null}.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/predicate/schema/ConvertSchemaPredicateToFilterVisitor.java