[ 
https://issues.apache.org/jira/browse/DRILL-3238?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Victoria Markman reopened DRILL-3238:
-------------------------------------

Sean,

I just realized that test failed for me and query now returns wrong result.
Please see below:

-- wrong result caused by a wrong plan (notice two window operators)
{code}
0: jdbc:drill:schema=dfs> select
. . . . . . . . . . . . >         a2,
. . . . . . . . . . . . >         sum(a2) over  (w),
. . . . . . . . . . . . >         count(*) over w
. . . . . . . . . . . . > from
. . . . . . . . . . . . >         t2
. . . . . . . . . . . . > window w as (partition by a2 order by a2);
+-----+---------+---------+
| a2  | EXPR$1  | EXPR$2  |
+-----+---------+---------+
| 0   | 0       | 1       |
| 1   | 1       | 1       |
| 2   | 7       | 3       |
| 2   | 7       | 3       |
| 2   | 7       | 3       |
| 3   | 10      | 1       |
| 4   | 14      | 1       |
| 5   | 19      | 1       |
| 6   | 25      | 1       |
| 7   | 39      | 2       |
| 7   | 39      | 2       |
| 8   | 47      | 1       |
| 9   | 56      | 1       |
+-----+---------+---------+
13 rows selected (0.305 seconds)

0: jdbc:drill:schema=dfs> explain plan for select a2, sum(a2) over(w), count(*) 
over w from t2 window w as (partition by a2 order by a2);
+------+------+
| text | json |
+------+------+
| 00-00    Screen
00-01      Project(a2=[$0], EXPR$1=[$1], EXPR$2=[$2])
00-02        Window(window#0=[window(partition {0} order by [0] range between 
UNBOUNDED PRECEDING and CURRENT ROW aggs [COUNT()])])
00-03          SelectionVectorRemover
00-04            Sort(sort0=[$0], sort1=[$0], dir0=[ASC], dir1=[ASC])
00-05              Window(window#0=[window(partition {} order by [0] range 
between UNBOUNDED PRECEDING and CURRENT ROW aggs [SUM($0)])])
00-06                SelectionVectorRemover
00-07                  Sort(sort0=[$0], dir0=[ASC])
00-08                    Scan(groupscan=[ParquetGroupScan 
[entries=[ReadEntryWithPath [path=maprfs:///drill/testdata/subqueries/t2]], 
selectionRoot=maprfs:/drill/testdata/subqueries/t2, numFiles=1, 
columns=[`a2`]]])
{code}

-- correct
{code}
0: jdbc:drill:schema=dfs> select a2, sum(a2) over (partition by a2 order by a2) 
from t2;
+-----+---------+
| a2  | EXPR$1  |
+-----+---------+
| 0   | 0       |
| 1   | 1       |
| 2   | 6       |
| 2   | 6       |
| 2   | 6       |
| 3   | 3       |
| 4   | 4       |
| 5   | 5       |
| 6   | 6       |
| 7   | 14      |
| 7   | 14      |
| 8   | 8       |
| 9   | 9       |
+-----+---------+
13 rows selected (0.303 seconds)
{code}

--correct
{code}
0: jdbc:drill:schema=dfs> select
. . . . . . . . . . . . >         a2,
. . . . . . . . . . . . >         sum(a2) over (partition by a2 order by a2),
. . . . . . . . . . . . >         count(*) over(partition by a2 order by a2)
. . . . . . . . . . . . > from
. . . . . . . . . . . . >         t2;
+-----+---------+---------+
| a2  | EXPR$1  | EXPR$2  |
+-----+---------+---------+
| 0   | 0       | 1       |
| 1   | 1       | 1       |
| 2   | 6       | 3       |
| 2   | 6       | 3       |
| 2   | 6       | 3       |
| 3   | 3       | 1       |
| 4   | 4       | 1       |
| 5   | 5       | 1       |
| 6   | 6       | 1       |
| 7   | 14      | 2       |
| 7   | 14      | 2       |
| 8   | 8       | 1       |
| 9   | 9       | 1       |
+-----+---------+---------+
13 rows selected (0.324 seconds)
{code}

-- correct
{code}
0: jdbc:drill:schema=dfs> select
. . . . . . . . . . . . >         a2,
. . . . . . . . . . . . >         sum(a2) over w,
. . . . . . . . . . . . >         count(*) over w
. . . . . . . . . . . . > from
. . . . . . . . . . . . >         t2
. . . . . . . . . . . . > window w as (partition by a2 order by a2);
+-----+---------+---------+
| a2  | EXPR$1  | EXPR$2  |
+-----+---------+---------+
| 0   | 0       | 1       |
| 1   | 1       | 1       |
| 2   | 6       | 3       |
| 2   | 6       | 3       |
| 2   | 6       | 3       |
| 3   | 3       | 1       |
| 4   | 4       | 1       |
| 5   | 5       | 1       |
| 6   | 6       | 1       |
| 7   | 14      | 2       |
| 7   | 14      | 2       |
| 8   | 8       | 1       |
| 9   | 9       | 1       |
+-----+---------+---------+
13 rows selected (0.29 seconds)
{code}

> Cannot Plan Exception is raised when the same window partition is defined in 
> select & window clauses
> ----------------------------------------------------------------------------------------------------
>
>                 Key: DRILL-3238
>                 URL: https://issues.apache.org/jira/browse/DRILL-3238
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Query Planning & Optimization
>            Reporter: Sean Hsuan-Yi Chu
>            Assignee: Sean Hsuan-Yi Chu
>              Labels: window_function
>             Fix For: 1.2.0
>
>
> While this works:
> {code}
> select sum(a2) over(partition by a2 order by a2), count(*) over(partition by 
> a2 order by a2) 
> from t
> {code}
> , this fails
> {code}
> select sum(a2) over(w), count(*) over(partition by a2 order by a2) 
> from t
> window w as (partition by a2 order by a2)
> {code}
> Notice these two queries are logically the same thing if we plug-in the 
> window definition back into the SELECT-CLAUSE in the 2nd query.



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

Reply via email to