Kenneth Knowles created CALCITE-2634:
----------------------------------------

             Summary: Query parses but fails to convert to rel
                 Key: CALCITE-2634
                 URL: https://issues.apache.org/jira/browse/CALCITE-2634
             Project: Calcite
          Issue Type: Improvement
            Reporter: Kenneth Knowles
            Assignee: Julian Hyde


The following query parses but fails to convert to logical rels:
{code:sql}
WITH BidCount (auction, num, hopstart) AS (
  SELECT
    Bid.auction,
    count(*),
    HOP_START(Bid.dateTime, INTERVAL '1' SECOND, INTERVAL '60' SECOND)
  FROM Bid
  GROUP BY
    Bid.auction,
    HOP(Bid.dateTime, INTERVAL '1' SECOND, INTERVAL '60' SECOND)
  )
SELECT HotAuction.auction, HotAuction.num, HotAuction.hopstart
FROM BidCount as HotAuction
WHERE HotAuction.num >= ALL (
  SELECT num FROM BidCount
  WHERE HotAuction.hopstart = BidCount.hopstart)
{code}

The validated SQL node pretty prints like so:

{code:sql}
WITH `BidCount` (`auction`, `num`, `hopstart`) AS (SELECT `Bid`.`auction`, 
COUNT(*), HOP_START(`Bid`.`dateTime`, INTERVAL '5' SECOND, INTERVAL '10' SECOND)
FROM `beam`.`Bid` AS `Bid`
GROUP BY `Bid`.`auction`, HOP(`Bid`.`dateTime`, INTERVAL '5' SECOND, INTERVAL 
'10' SECOND)) (SELECT `HotAuction`.`auction`, `HotAuction`.`num`, 
`HotAuction`.`hopstart`
FROM `BidCount` AS `HotAuction`
WHERE `HotAuction`.`num` >= ALL (SELECT `BidCount`.`num`
FROM `BidCount` AS `BidCount`
WHERE `HotAuction`.`hopstart` = `BidCount`.`hopstart`))
{code}

The stack trace is here:
{code:java}
java.lang.ClassCastException: org.apache.calcite.rel.logical.LogicalFilter 
cannot be cast to org.apache.calcite.rel.core.Join
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.translateIn(SqlToRelConverter.java:1242)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.substituteSubQuery(SqlToRelConverter.java:1129)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.replaceSubQueries(SqlToRelConverter.java:997)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertWhere(SqlToRelConverter.java:964)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:643)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:621)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3051)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:557)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertWith(SqlToRelConverter.java:3891)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3065)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:557)
        at oorg.apache.calcite.prepare.PlannerImpl.rel(PlannerImpl.java:235)
{code}
For context, this is working with Beam SQL but the failure occurs before any 
Beam-related code is reached: [https://github.com/apache/beam/pull/6757/files]

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to