private static StatementContext compileStatement( String query, Scan scan, List<Object> binds, Integer limit, Set<Expression> extractedNodes) throws SQLException { SQLParser parser = new SQLParser(query); SelectStatement statement = parser.parseQuery(); statement = RHSLiteralStatementRewriter.normalizeWhereClause(statement); PhoenixConnection pconn = DriverManager.getConnection(getUrl(), TEST_PROPERTIES).unwrap(PhoenixConnection.class); ColumnResolver resolver = FromCompiler.getResolver(statement, pconn); StatementContext context = new StatementContext(pconn, resolver, binds, statement.getBindCount(), scan); Integer actualLimit = LimitCompiler.getLimit(context, statement.getLimit()); assertEquals(limit, actualLimit); GroupBy groupBy = GroupByCompiler.getGroupBy(statement, context); statement = HavingCompiler.moveToWhereClause(statement, context, groupBy); WhereCompiler.compileWhereClause( context, statement.getWhere(), extractedNodes, statement.getHint()); return context; }