cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sylvain Lebresne (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-4914) Aggregation functions in CQL
Date Mon, 06 Oct 2014 11:43:36 GMT


Sylvain Lebresne commented on CASSANDRA-4914:

The last patch looks almost good to go (provided it's rebased) for me but there seems to be
some confusion around the {{reset}} method for {{Selection}}. You've removed the abstract
one in {{Selection}} itself, but both {{SimpleSelection}} and {{SelectionWithFunctions}} still
have a {{reset}} method which, as far as I can tell, is never called. And while the one in
{{SimpleSelection}} does nothing, the one in {{SelectionWithFunctions}} seems to do something.
I think what you'd want is add back the {{reset}} method to {{Selection}} but actually call
it in {{ResultSetBuilder.newRow/build}} (as a nit, you can then move the {{current = null}}
in {{SimpleSelection}} in the {{reset}} method for consistency).

bq.  Postgres's approach to user-defined aggregation functions is almost exactly this:

I agree that it's where we want to go (there was some discussion around this at the bootcamp
that ended up with the same conclusion but it sound like I forgot to update JIRA with said
conclusions). That said, this ticket is mostly about the internal interface for aggregation
functions and as far as I can tell, nothing in the attached patch limit us from going with
a "reduce-style" approach for UDF (it will be in fact rather simple). So let's maybe leave
the discussion on UDF in CASSANDRA-8053.

> Aggregation functions in CQL
> ----------------------------
>                 Key: CASSANDRA-4914
>                 URL:
>             Project: Cassandra
>          Issue Type: New Feature
>            Reporter: Vijay
>            Assignee: Benjamin Lerer
>              Labels: cql, docs
>             Fix For: 3.0
>         Attachments: CASSANDRA-4914-V2.txt, CASSANDRA-4914-V3.txt, CASSANDRA-4914-V4.txt,
> The requirement is to do aggregation of data in Cassandra (Wide row of column values
of int, double, float etc).
> With some basic agree gate functions like AVG, SUM, Mean, Min, Max, etc (for the columns
within a row).
> Example:
> SELECT * FROM emp WHERE empID IN (130) ORDER BY deptID DESC;                        
>  empid | deptid | first_name | last_name | salary
> -------+--------+------------+-----------+--------
>    130 |      3 |     joe    |     doe   |   10.1
>    130 |      2 |     joe    |     doe   |    100
>    130 |      1 |     joe    |     doe   |  1e+03
> SELECT sum(salary), empid FROM emp WHERE empID IN (130);                            
>  sum(salary) | empid
> -------------+--------
>    1110.1    |  130

This message was sent by Atlassian JIRA

View raw message