Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-1381

Function quantifier should be retained in a cloned Sql call

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 1.8.0, 1.6.0
    • 1.10.0
    • core
    • None

    Description

      I found Calcite can’t execute queries like select nullif(count(distinct colunm),0) from table, and dumped ‘Plan after trimming unused fields’ like this:

      LogicalProject(NAME=[$0], GENDER=[CASE(=($1, 0), null, CAST($2):BIGINT)])
        LogicalAggregate(group=[{0}], agg#0=[COUNT(DISTINCT $1)], agg#1=[COUNT($1)])
          LogicalProject(NAME=[$1], GENDER=[$3])
            CsvTableScan(table=[[SALES, EMPS]], fields=[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
      

      Then, I checked SqlNullifFunction rewriteCall method which used SqlNode.clone(SqlParserPos pos) method to create SqlCase call.

      Finally, I guess the root cause may be that the clone(SqlParserPos pos) method discard the functionQuantifier which holds such as ‘distinct’ symbol when create new SqlCall instance.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            julianhyde Julian Hyde
            zhengd zhengdong
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment