@Override
    public Expression visitCast(Cast node, Context<C> context) {
      if (!context.isDefaultRewrite()) {
        Expression result = rewriter.rewriteCast(node, context.get(), ExpressionTreeRewriter.this);
        if (result != null) {
          return result;
        }
      }

      Expression expression = rewrite(node.getExpression(), context.get());
      DataType type = rewrite(node.getType(), context.get());

      if (node.getExpression() != expression || node.getType() != type) {
        return new Cast(expression, type, node.isSafe());
      }

      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