public static void analyzeExpressionWithoutSubqueries(
      Metadata metadata,
      MPPQueryContext context,
      SessionInfo session,
      AccessControl accessControl,
      Scope scope,
      Analysis analysis,
      Expression expression,
      String message,
      WarningCollector warningCollector,
      CorrelationSupport correlationSupport) {
    ExpressionAnalyzer analyzer =
        new ExpressionAnalyzer(
            metadata,
            context,
            accessControl,
            (node, ignored) -> {
              throw new SemanticException(message);
            },
            session,
            TypeProvider.empty(),
            analysis.getParameters(),
            warningCollector,
            analysis::getType,
            analysis::getWindow);
    analyzer.analyze(expression, scope, correlationSupport);

    updateAnalysis(analysis, analyzer, session, accessControl);
    analysis.addExpressionFields(expression, analyzer.getSourceFields());
  }
@return the common supertype between the value type and subquery type
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ExpressionAnalyzer.java