GitHub user shixuan-fan opened a pull request:

    https://github.com/apache/incubator-quickstep/pull/39

    QUICKSTEP-20: Resolver support for Window Aggregate Function

    Now the resolver could form a logical plan for window aggregate function 
based on the parsed result.
    
    Suppose we have the following query:
    SELECT attr0, avg(attr1) OVER
    (PARTITION BY attr2
    ORDER BY attr3
    ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING)
    FROM table1;
    
    The logical plan will look like this:
    input_table -> sort on (attr2, attr3) -> window aggregate -> project on 
(attr0, avg(attr1)).
    
    Two new classes are introduced: 
quickstep::optimizer::expressions::WindowAggregateFunction and 
quickstep::optimizer::logical::WindowAggregate:
      -WindowAggregateFunction will keep the function information and window 
information. 
      -WindowAggregate will store the input logical node and an alias wrapper 
of WindowAggregateFunction.
    
    In current version, we only support one window aggregate function. When the 
PhysicalPlanGenerator sees a logical node with type kWindowAggregate, it will 
throw an error saying that "window aggregate function is not supported".

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/apache/incubator-quickstep 
SQL-window-aggregation

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/incubator-quickstep/pull/39.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #39
    
----
commit ae66fbe467cfad0667efe87412f472e673c7cdc7
Author: shixuan <shixuan....@wisc.edu>
Date:   2016-06-21T20:08:52Z

    Window Aggregation Function in optimizer::expression added
    The resolver could understand optional window clause.
    The resolver could understand window aggregation functions.
    Only one window aggregation function is allowed

commit a540e82ecf64a0c1dffaa6a338b6a69966724bb3
Author: Shixuan Fan <shix...@apache.org>
Date:   2016-06-21T21:12:19Z

    add has_window_aggregate_per_expression and update it while resolving 
SELECT list

commit 9434e6c730023d66728e59482259ee8da7df514c
Author: shixuan-fan <shix...@apache.org>
Date:   2016-06-22T14:49:24Z

    Pass the reference of window_aggregation_expressions into 
ExpressionResolutionInfo to keep it updated as resolving

commit 614d17deed54b26c250301fbb305cd2811c87909
Author: shixuan-fan <shix...@apache.org>
Date:   2016-06-22T20:19:28Z

    Added window aggregation class in logical

commit 9ac2fb0d7544475a3c76e81e28ba59db4378aef1
Author: shixuan-fan <shix...@apache.org>
Date:   2016-06-23T14:40:44Z

    added window name checking: duplicate definition and undefined

commit 160761c82407d6e6da2283fabdffae68607a7c08
Author: shixuan-fan <shix...@apache.org>
Date:   2016-06-23T15:59:42Z

    Formed logical plan.
    A window aggregate function could form a logical plan now.
    It will be intercepted by the stratagy in physical plan generator.

commit 5aa705835ced856dba35cbfd09d6fd95c1f99be2
Author: shixuan-fan <shix...@apache.org>
Date:   2016-06-23T20:09:01Z

    Added unittest for resolver and logical generator

commit 0210099e0655813311a973581f70cb69886320d9
Author: shixuan-fan <shix...@apache.org>
Date:   2016-06-23T21:03:02Z

    fixed cpplint issue

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to