You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "ZheHu (Jira)" <ji...@apache.org> on 2021/11/05 14:53:00 UTC
[jira] [Created] (CALCITE-4876) Converting RelNode to SQL with
CalciteSqlDialect gets wrong result while EnumerableIntersect is followed
by EnumerableLimit
ZheHu created CALCITE-4876:
------------------------------
Summary: 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
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)