Hi,

TPC-DS Q70 has a subquery like this:

  select s_state as s_state, 
//       sum(ss_net_profit),  // added by baofeng
         rank() over ( partition by s_state order by sum(ss_net_profit) desc) 
as ranking 
  from   tpcds.store_sales, tpcds.store, tpcds.date_dim 
  where  d_month_seq between 1212 and 1212+11 
       and d_date_sk = ss_sold_date_sk
       and s_store_sk  = ss_store_sk 
  group by s_state


It is a special case, differs from any other window query of TPC-DS, that the 
“sum(ss_net_profit)” in order by does not appear in select clause. It fails 
validation, exception like this:

java.lang.AssertionError: Internal error: invariant violated: conversion result 
not null

        at org.apache.calcite.util.Util.newInternal(Util.java:777)
        at org.apache.calcite.util.Util.permAssert(Util.java:889)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:4193)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertSortExpression(SqlToRelConverter.java:4210)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertSortExpression(SqlToRelConverter.java:4208)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertOver(SqlToRelConverter.java:1871)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.access$1500(SqlToRelConverter.java:200)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:4185)
        at 
mypackage.planner.MyConvertletTable$11.convertCall(MyConvertletTable.java:208)
        at 
org.apache.calcite.sql2rel.SqlNodeToRexConverterImpl.convertCall(SqlNodeToRexConverterImpl.java:60)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:4300)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:3664)
        at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:137)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:4192)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.createAggImpl(SqlToRelConverter.java:2641)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertAgg(SqlToRelConverter.java:2457)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:660)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:622)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:2868)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:556)

If sum(ss_net_profit) appears in select clause, it works.

Does this an expected constraints on window operation? Or we can try to improve 
this?

Thx,
Baofeng Zhang.

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to