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

Function quantifier should be retained in a cloned Sql call

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 1.8.0, 1.6.0
    • Fix Version/s: 1.10.0
    • Component/s: core
    • Labels:
      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

            People

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

              Dates

              • Created:
                Updated:
                Resolved: