You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Jiajun Xie (Jira)" <ji...@apache.org> on 2023/04/19 09:33:00 UTC
[jira] [Commented] (CALCITE-5630) Window with rows equivalence error in volcano planner
[ https://issues.apache.org/jira/browse/CALCITE-5630?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17714012#comment-17714012 ]
Jiajun Xie commented on CALCITE-5630:
-------------------------------------
HepPlanner has same issue
[https://github.com/apache/calcite/blob/2d0b3acb11169b307dc165c1fae8b7c92b888ae9/core/src/main/java/org/apache/calcite/plan/hep/HepPlanner.java#L830]
> Window with rows equivalence error in volcano planner
> -----------------------------------------------------
>
> Key: CALCITE-5630
> URL: https://issues.apache.org/jira/browse/CALCITE-5630
> Project: Calcite
> Issue Type: Bug
> Reporter: Jiajun Xie
> Priority: Major
>
> Here is UT
> {code:java}
> @Test void testUnionWindow() {
> String selectSqlBase =
> "SELECT 'col{?}' as col, sum(\"salary\" ) OVER("
> + "PARTITION BY \"deptno\" "
> + "ORDER BY \"empid\" "
> + "ROWS BETWEEN CURRENT ROW AND {?} FOLLOWING) "
> + "FROM \"hr\".\"emps\"";
> String selectSql1 = selectSqlBase.replace("{?}", "1"); // window1
> String selectSql2 = selectSqlBase.replace("{?}", "2"); // window2
> String sql = selectSql1 + "\nunion all\n" + selectSql2;
> CalciteAssert.hr().query(sql).runs()
> .returns("COL=col1; EXPR$1=8000.0\n"
> + "COL=col1; EXPR$1=21500.0\n"
> + "COL=col1; EXPR$1=18500.0\n"
> + "COL=col1; EXPR$1=7000.0\n"
> + "COL=col2; EXPR$1=8000.0\n"
> + "COL=col2; EXPR$1=21500.0\n"
> + "COL=col2; EXPR$1=18500.0\n"
> + "COL=col2; EXPR$1=7000.0\n");
> // sum that for col1 is same as sum that for col2, this is error
> }
> {code}
> Because RelDigest is same between window1 and window2[1],
> volcano planner use window1 replace window2.
>
> [[1] https://github.com/apache/calcite/blob/2d0b3acb11169b307dc165c1fae8b7c92b888ae9/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoPlanner.java#L1289|https://github.com/apache/calcite/blob/2d0b3acb11169b307dc165c1fae8b7c92b888ae9/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoPlanner.java#L1289]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)