[ https://issues.apache.org/jira/browse/CALCITE-4876?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17439705#comment-17439705 ]
Julian Hyde commented on CALCITE-4876: -------------------------------------- If INTERSECT now has the same precedence as UNION there is the possibility that you’ve broken queries where those two interact. You should write tests to prove that you have not, if there are no existing tests. > Converting RelNode to SQL with CalciteSqlDialect gets wrong result while > EnumerableIntersect is followed by EnumerableLimit > --------------------------------------------------------------------------------------------------------------------------- > > Key: CALCITE-4876 > URL: https://issues.apache.org/jira/browse/CALCITE-4876 > Project: Calcite > Issue Type: Bug > Components: core > Affects Versions: 1.28.0 > Reporter: ZheHu > Priority: Major > > When I convert the following RelNode to SQL(with CalciteSqlDialect) in > ToLogicalConverterTest.java: > {code:java} > @Test void testIntersect() { > final RelBuilder builder = builder(); > RelNode rel = > builder.scan("DEPT") > .project(builder.field("DEPTNO")) > .scan("EMP") > .project(builder.field("DEPTNO")) > .intersect(true) > .limit(0, 2) > .build(); > System.out.println(new > RelToSqlConverter(SqlDialect.DatabaseProduct.CALCITE.getDialect()).visitRoot(rel).asStatement()); > {code} > I get: > {code:java} > SELECT * > FROM SELECT `DEPTNO` > FROM `scott`.`DEPT` > INTERSECT ALL > SELECT `DEPTNO` > FROM `scott`.`EMP` > FETCH NEXT 2 ROWS ONLY > {code} > But the expected SQL should be: > {code:java} > SELECT * > FROM (SELECT `DEPTNO` > FROM `scott`.`DEPT` > INTERSECT ALL > SELECT `DEPTNO` > FROM `scott`.`EMP`) > FETCH NEXT 2 ROWS ONLY > {code} > Other SetOperators like UNION、MINUS can be converted correctly. -- This message was sent by Atlassian Jira (v8.3.4#803005)