Merge branch 'cassandra-2.2' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/7dff1501 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/7dff1501 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/7dff1501 Branch: refs/heads/trunk Commit: 7dff15011a64d296c3d2f8488fc17ab42974f873 Parents: 056115f 01f3d0a Author: Robert Stupp <[email protected]> Authored: Sun Jul 12 21:20:18 2015 +0200 Committer: Robert Stupp <[email protected]> Committed: Sun Jul 12 21:20:18 2015 +0200 ---------------------------------------------------------------------- .../cassandra/cql3/functions/AggregateFcts.java | 160 +++++++++++++++++++ .../validation/operations/AggregationTest.java | 45 ++++-- 2 files changed, 192 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/7dff1501/src/java/org/apache/cassandra/cql3/functions/AggregateFcts.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/cql3/functions/AggregateFcts.java index 8c36864,1b22da6..153e5eb --- a/src/java/org/apache/cassandra/cql3/functions/AggregateFcts.java +++ b/src/java/org/apache/cassandra/cql3/functions/AggregateFcts.java @@@ -32,42 -37,6 +32,46 @@@ import org.apache.cassandra.db.marshal. */ public abstract class AggregateFcts { + public static Collection<AggregateFunction> all() + { + Collection<AggregateFunction> functions = new ArrayList<>(); + + functions.add(countRowsFunction); + + // sum for primitives ++ functions.add(sumFunctionForByte); ++ functions.add(sumFunctionForShort); + functions.add(sumFunctionForInt32); + functions.add(sumFunctionForLong); + functions.add(sumFunctionForFloat); + functions.add(sumFunctionForDouble); + functions.add(sumFunctionForDecimal); + functions.add(sumFunctionForVarint); + + // avg for primitives ++ functions.add(avgFunctionForByte); ++ functions.add(avgFunctionForShort); + functions.add(avgFunctionForInt32); + functions.add(avgFunctionForLong); + functions.add(avgFunctionForFloat); + functions.add(avgFunctionForDouble); + functions.add(avgFunctionForDecimal); + functions.add(avgFunctionForVarint); + + // count, max, and min for all standard types + for (CQL3Type type : CQL3Type.Native.values()) + { + if (type != CQL3Type.Native.VARCHAR) // varchar and text both mapping to UTF8Type + { + functions.add(AggregateFcts.makeCountFunction(type.getType())); + functions.add(AggregateFcts.makeMaxFunction(type.getType())); + functions.add(AggregateFcts.makeMinFunction(type.getType())); + } + } + + return functions; + } + /** * The function used to count the number of rows of a result set. This function is called when COUNT(*) or COUNT(1) * is specified. http://git-wip-us.apache.org/repos/asf/cassandra/blob/7dff1501/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java ----------------------------------------------------------------------
