public static ExpressionAnalysis analyzeExpression(
Session session,
Metadata metadata,
AccessControl accessControl,
SqlParser sqlParser,
RelationType tupleDescriptor,
Analysis analysis,
boolean approximateQueriesEnabled,
AnalysisContext context,
Expression expression)
{
ExpressionAnalyzer analyzer = create(analysis, session, metadata, sqlParser, accessControl, approximateQueriesEnabled);
analyzer.analyze(expression, tupleDescriptor, context);
IdentityHashMap<Expression, Type> expressionTypes = analyzer.getExpressionTypes();
IdentityHashMap<Expression, Type> expressionCoercions = analyzer.getExpressionCoercions();
IdentityHashMap<FunctionCall, Signature> resolvedFunctions = analyzer.getResolvedFunctions();
analysis.addTypes(expressionTypes);
analysis.addCoercions(expressionCoercions);
analysis.addFunctionSignatures(resolvedFunctions);
analysis.addResolvedNames(analyzer.getResolvedNames());
return new ExpressionAnalysis(
expressionTypes,
expressionCoercions,
analyzer.getSubqueryInPredicates(),
analyzer.getScalarSubqueries(),
analyzer.getColumnReferences());
}