Details
-
Improvement
-
Status: Review In Progress
-
Normal
-
Resolution: Unresolved
-
None
-
Semantic
-
Low Hanging Fruit
-
All
-
None
-
Description
CASSANDRA-18060 has added generic CQL functions to get the min, max, sum, avg and number of items in a collection. These functions can only be applied to collection values. The functions throw an InvalidRequestEception when applied to not-collection values.
CASSANDRA-18078 has been pointed out that those functions could be applied also to not-collection values, considering that the not-collection argument can be considered a collection of a single element. For example:
- collection_min(7) = collection_min([7]) = collection_min({7}) = 7
- collection_max(7) = collection_max([7]) = collection_max({7}) = 7
- collection_sum(7) = collection_sum([7]) = collection_sum({7}) = 7
- collection_avg(7) = collection_avg([7]) = collection_avg({7}) = 7
- collection_count(7) = collection_count([7]) = collection_count({7}) = 1
This would be particularly useful when used in combination with functions such as writetime and ttl. Those functions can return either single values or collections of values depending on whether the column passed as argument is multicell. Thus, users interested on getting the min/max/sum/avg of the writetimes/ttls of a column need to consider the type of the column when choosing what functions they should use. With the proposed change they could just use, for example, collection_max(writetime(column)) regardless of the column type.
Attachments
Issue Links
- is depended upon by
-
CASSANDRA-18078 Consider removing MAXWRITETIME function
- Open
- is related to
-
CASSANDRA-18060 Add aggregation scalar functions on collections
- Resolved