You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Deneche A. Hakim (JIRA)" <ji...@apache.org> on 2016/01/12 18:41:39 UTC

[jira] [Created] (DRILL-4267) Multiple window function operators instead of one

Deneche A. Hakim created DRILL-4267:
---------------------------------------

             Summary: Multiple window function operators instead of one
                 Key: DRILL-4267
                 URL: https://issues.apache.org/jira/browse/DRILL-4267
             Project: Apache Drill
          Issue Type: Bug
          Components: Query Planning & Optimization
    Affects Versions: 1.5.0
            Reporter: Deneche A. Hakim
            Priority: Minor


Changing the order of window functions in a query changes the number of window function operators in the plan.

The following query generates a plan with a single window function operator:
{noformat}
0: jdbc:drill:zk=local> EXPLAIN PLAN FOR SELECT ROW_NUMBER() OVER w, COUNT(*) OVER w FROM cp.`employee.json` WINDOW w AS (PARTITION BY position_id ORDER BY salary);
+------+------+
| text | json |
+------+------+
| 00-00    Screen
00-01      Project(EXPR$0=[$0], EXPR$1=[$1])
00-02        Project(EXPR$0=[$0], EXPR$1=[$1])
00-03          Project($0=[$2], $1=[$3])
00-04            Window(window#0=[window(partition {0} order by [1] rows between UNBOUNDED PRECEDING and CURRENT ROW aggs [ROW_NUMBER(), COUNT()])])
00-05              SelectionVectorRemover
00-06                Sort(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC])
00-07                  Scan(groupscan=[EasyGroupScan [selectionRoot=classpath:/employee.json, numFiles=1, columns=[`position_id`, `salary`], files=[classpath:/employee.json]]])
{noformat}

But when we permute the window functions in the query we get 2 window function operators in the plan:
{noformat}
0: jdbc:drill:zk=local> EXPLAIN PLAN FOR SELECT COUNT(*) OVER w, ROW_NUMBER() OVER w FROM cp.`employee.json` WINDOW w AS (PARTITION BY position_id ORDER BY salary);
+------+------+
| text | json |
+------+------+
| 00-00    Screen
00-01      Project(EXPR$0=[$0], EXPR$1=[$1])
00-02        Project(EXPR$0=[$0], EXPR$1=[$1])
00-03          Project($0=[$2], $1=[$3])
00-04            Window(window#0=[window(partition {0} order by [1] rows between UNBOUNDED PRECEDING and CURRENT ROW aggs [ROW_NUMBER()])])
00-05              Window(window#0=[window(partition {0} order by [1] range between UNBOUNDED PRECEDING and CURRENT ROW aggs [COUNT()])])
00-06                SelectionVectorRemover
00-07                  Sort(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC])
00-08                    Scan(groupscan=[EasyGroupScan [selectionRoot=classpath:/employee.json, numFiles=1, columns=[`position_id`, `salary`], files=[classpath:/employee.json]]])
{noformat}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)