You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "yanjing.wang (Jira)" <ji...@apache.org> on 2021/11/24 12:28:00 UTC

[jira] [Created] (CALCITE-4901) RelToSqlConverter adds redundant order by output column for the result sql

yanjing.wang created CALCITE-4901:
-------------------------------------

             Summary: RelToSqlConverter adds redundant order by output column for the result sql
                 Key: CALCITE-4901
                 URL: https://issues.apache.org/jira/browse/CALCITE-4901
             Project: Calcite
          Issue Type: Improvement
          Components: core
    Affects Versions: 1.26.0
         Environment: jdk8
            Reporter: yanjing.wang


In RelToSqlConverterTest, I add the following case

 
{code:java}
@Test void testOrderByNotInSelectList() {
  String query = "select count(1)\n"
      + "from \"foodmart\".\"product\"\n"
      + "group by \"product_id\"\n"
      + "order by \"product_id\" desc\n";
  final String expected = "SELECT COUNT(1)\n"
      + "FROM \"foodmart\".\"product\"\n"
      + "GROUP BY \"product_id\"\n"
      + "ORDER BY \"product_id\" desc\n";
  sql(query).withBigQuery().ok(expected);
}{code}
But I get the actual sql is

 

 
{code:java}
SELECT COUNT(*), product_id
FROM foodmart.product
GROUP BY product_id
ORDER BY product_id IS NULL DESC, product_id DESC {code}
 

It has redundant product_id output column.

 

Wage Through code, I find that the sort operator contains product_id. When I put a project with product_id only on the sort operator, the result sql has redundant subquery.
{code:java}
SELECT `EXPR$0`
FROM (SELECT COUNT(*) AS `EXPR$0`, product_id
FROM foodmart.product
GROUP BY product_id
ORDER BY product_id IS NULL DESC, product_id DESC) AS t2 {code}
 

 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)