public void testCollectAggs2() throws QueryParserException { helpTestCollectAggregates("SELECT * FROM pm1.g1 HAVING MAX(e2) > 0", //$NON-NLS-1$ new String[] { "MAX(e2)"}, //$NON-NLS-1$ new String[] { }); }
public void helpTestCollectAggregates(String sql, String[] aggs, String[] elems) throws QueryParserException { // Parse command Command command = QueryParser.getQueryParser().parseCommand(sql); // Find aggregates List<Expression> foundAggs = new ArrayList<Expression>(); List<Expression> foundElements = new ArrayList<Expression>(); AggregateSymbolCollectorVisitor.getAggregates(command, foundAggs, foundElements, null, null, null); // Compare assertEquals("Incorrect number of aggregates: " + foundAggs, aggs.length, foundAggs.size()); //$NON-NLS-1$ for(int i=0; i<aggs.length; i++) { assertEquals("Incorrect agg match at " + i, aggs[i], foundAggs.get(i).toString()); //$NON-NLS-1$ } assertEquals("Incorrect number of elements: " + foundElements, elems.length, foundElements.size()); //$NON-NLS-1$ for(int i=0; i<elems.length; i++) { assertEquals("Incorrect agg match at " + i, elems[i], foundElements.get(i).toString()); //$NON-NLS-1$ } }
public void testCollectAggs4() throws QueryParserException { helpTestCollectAggregates( "SELECT e1 FROM pm1.g1 GROUP BY e1 HAVING MAX(e2) > 0 AND NOT MIN(e2) < 100 AND e3 < 200", //$NON-NLS-1$ new String[] { "MAX(e2)", "MIN(e2)"}, //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "e1", "e1", "e3"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ }
public void testCollectAggs3() throws QueryParserException { helpTestCollectAggregates( "SELECT COUNT(e1), MAX(DISTINCT e1) FROM pm1.g1 GROUP BY e1 HAVING MAX(e2) > 0 AND NOT MIN(e2) < 100", //$NON-NLS-1$ new String[] { "COUNT(e1)", "MAX(DISTINCT e1)", "MAX(e2)", "MIN(e2)"}, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ new String[] { "e1"}); //$NON-NLS-1$ }
public void testCollectAggs1() throws QueryParserException { helpTestCollectAggregates("SELECT COUNT(*) FROM pm1.g1", new String[] { "COUNT(*)"}, new String[] { }); //$NON-NLS-1$ //$NON-NLS-2$ }