You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by GitBox <gi...@apache.org> on 2021/08/09 15:22:39 UTC

[GitHub] [incubator-doris] qidaye opened a new issue #6399: [Bug][Fold constant] analyze exception in `FoldConstantRule.getConstExpr`

qidaye opened a new issue #6399:
URL: https://github.com/apache/incubator-doris/issues/6399


   **Describe the bug**
   
   Given the analysis process before rewrite, when collect constant exprs in `FoldConstantRule`, there is no necessary reanalyzing the expr.
   
   When reanalyzing the expr in the subquery, Doris current only supports to associate the outer query columns in parent level.
   See https://github.com/apache/incubator-doris/blob/d9fc1bf3ca67b2f0d8925425cf9a4362829f8b62/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java#L630-L640
   When a expr is associating the grandparent level, there will be a exception. Because the single expr does not contain the parent information.
   
   **To Reproduce**
   
   Steps to reproduce the behavior:
   1. Create table 
   ```sql 
   
   CREATE TABLE `test` (
     `vehicleId` int(11) NOT NULL COMMENT "",
     `workDateTime` datetime NOT NULL COMMENT "",
     `vinCode` varchar(64) NULL COMMENT "",
     `modelCode` varchar(64) NULL COMMENT "",
     `saleOrgName` varchar(150) NULL COMMENT "",
     `serviceOrgName` varchar(150) NULL COMMENT "",
     `dayWorkHours` decimal(20, 3) NULL COMMENT "",
     `actualHours` decimal(10, 3) NULL COMMENT "",
     `idleHours` decimal(10, 3) NULL COMMENT "",
     `totalWorkHours` decimal(20, 3) NULL COMMENT "",
     `totalFuel` decimal(20, 3) NULL COMMENT "",
     `dayFuel` decimal(20, 3) NULL COMMENT "",
     `adminDivisionCode` varchar(64) NULL COMMENT "",
     `idleErrorType` int(11) NULL COMMENT "",
     `oilErrorType` int(11) NULL COMMENT "",
     `createdOn` datetime NULL COMMENT ""
   ) ENGINE=OLAP
   UNIQUE KEY(`vehicleId`, `workDateTime`)
   DISTRIBUTED BY HASH(`vehicleId`, `workDateTime`) BUCKETS 10
   PROPERTIES (
   "replication_num" = "1",
   "in_memory" = "false",
   "storage_format" = "DEFAULT"
   ); 
   ```
   2. Enable fold constant by BE 
   ```sql
   set enable_fold_constant_by_be=true;
   ```
   3. Submit a query 
   
   The `workDateTime` field is the grandchild in subquery `bb`.
   
   ```sql
   WITH aa AS
     (SELECT DATE_FORMAT(workDateTime, '%Y-%m') mon,
             vincode,
             sum(dayworkhours) AS workhours
      FROM test
      WHERE workDateTime >= concat(year(now())-1, '-01-01 00:00:00')
        AND workDateTime < now()
      GROUP BY vincode,
               DATE_FORMAT(workDateTime, '%Y-%m')),
        bb AS
     (SELECT mon,
             count(DISTINCT vincode) total
      FROM aa
      GROUP BY mon),
        cc AS
     (SELECT mon,
             count(DISTINCT vincode) num
      FROM aa
      WHERE aa.workhours >= 0
      GROUP BY mon)
   SELECT bb.mon,
          round(cc.num / bb.total, 4) rate
   FROM bb
   LEFT JOIN cc ON cc.mon = bb.mon
   ORDER BY mon
   LIMIT 0,
         5000;
   ```
   4. See error
   ```sql
   errCode = 2, detailMessage = Unknown column 'workDateTime' in 'table list'
   ```
   
   # How to fix 
   
   Since the reanalyzing in `getConstExpr` is redundant, we should remove it.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org


[GitHub] [incubator-doris] morningman closed issue #6399: [Bug][Fold constant] analyze exception in `FoldConstantRule.getConstExpr`

Posted by GitBox <gi...@apache.org>.
morningman closed issue #6399:
URL: https://github.com/apache/incubator-doris/issues/6399


   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org