public SqlType getExpressionSqlType(final Expression expression) {
    return getExpressionSqlType(expression, Collections.emptyMap());
  }
@Test
  public void shouldEvaluateTypeForMultiParamUdaf() {
    // Given:
    givenUdafWithNameAndReturnType("TEST_ETM", SqlTypes.STRING, aggregateFactory, aggregateFunction);
    final Expression expression = new FunctionCall(
            FunctionName.of("TEST_ETM"),
            ImmutableList.of(
                    COL7,
                    new UnqualifiedColumnReferenceExp(ColumnName.of("COL4")),
                    new StringLiteral("hello world")
            )
    );

    // When:
    final SqlType exprType = expressionTypeManager.getExpressionSqlType(expression);

    // Then:
    assertThat(exprType, is(SqlTypes.STRING));
    verify(aggregateFactory).getFunction(ImmutableList.of(SqlTypes.INTEGER, SqlArray.of(SqlTypes.DOUBLE), SqlTypes.STRING));
    verify(aggCreator).apply("hello world");
    verify(aggregateFunction).returnType();
  }