@Override
    protected Expression visitIfExpression(IfExpression node, Context<C> context) {
      if (!context.isDefaultRewrite()) {
        Expression result =
            rewriter.rewriteIfExpression(node, context.get(), ExpressionTreeRewriter.this);
        if (result != null) {
          return result;
        }
      }

      Expression condition = rewrite(node.getCondition(), context.get());
      Expression trueValue = rewrite(node.getTrueValue(), context.get());
      Expression falseValue = null;
      if (node.getFalseValue().isPresent()) {
        falseValue = rewrite(node.getFalseValue().get(), context.get());
      }

      if ((condition != node.getCondition())
          || (trueValue != node.getTrueValue())
          || (falseValue != node.getFalseValue().orElse(null))) {
        return new IfExpression(condition, trueValue, falseValue);
      }

      return node;
    }
Invoke the default rewrite logic explicitly. Specifically, it skips the invocation of the
expression rewriter for the provided node.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/ir/ExpressionTreeRewriter.java