private static void updateAnalysis(
      Analysis analysis,
      ExpressionAnalyzer analyzer,
      SessionInfo session,
      AccessControl accessControl) {
    analysis.addTypes(analyzer.getExpressionTypes());
    analyzer
        .getResolvedFunctions()
        .forEach(
            (key, value) ->
                analysis.addResolvedFunction(key.getNode(), value, session.getUserName()));
    analysis.addColumnReferences(analyzer.getColumnReferences());
    analysis.addTableColumnReferences(
        accessControl, session.getIdentity(), analyzer.getTableColumnReferences());
    analysis.addPredicateCoercions(analyzer.getPredicateCoercions());
    analysis.addLabels(analyzer.getLabels());
    analysis.setRanges(analyzer.getRanges());
    analysis.setUndefinedLabels(analyzer.getUndefinedLabels());
    analysis.addResolvedLabels(analyzer.getResolvedLabels());
    analysis.addSubsetLabels(analyzer.getSubsetLabels());
    analysis.addPatternRecognitionInputs(analyzer.getPatternRecognitionInputs());
    analysis.addPatternNavigationFunctions(analyzer.getPatternNavigationFunctions());
  }
@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