You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@impala.apache.org by "Sheng Wang (Jira)" <ji...@apache.org> on 2021/12/12 09:51:00 UTC

[jira] [Resolved] (IMPALA-11040) Query get stuck when containing multiple nested union

     [ https://issues.apache.org/jira/browse/IMPALA-11040?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sheng Wang resolved IMPALA-11040.
---------------------------------
    Resolution: Fixed

> Query get stuck when containing multiple nested union
> -----------------------------------------------------
>
>                 Key: IMPALA-11040
>                 URL: https://issues.apache.org/jira/browse/IMPALA-11040
>             Project: IMPALA
>          Issue Type: Question
>          Components: Frontend
>    Affects Versions: Impala 4.0.0
>            Reporter: Sheng Wang
>            Assignee: Sheng Wang
>            Priority: Major
>             Fix For: Impala 4.1.0
>
>
> When query contains multiple union, and encounter a expr rewrite. Then this query will do 'reAnalyze', and get stuck in 'reset' method. Here is the example to reproduce this bug:
> {code:java}
> SELECT `t1`.`dt`
> FROM
>   (SELECT *
>    FROM
>      (SELECT *
>       FROM
>         (SELECT *
>          FROM
>            (SELECT *
>             FROM
>               (SELECT *
>                FROM
>                  (SELECT *
>                   FROM
>                     (SELECT *
>                      FROM
>                        (SELECT *
>                         FROM
>                           (SELECT *
>                            FROM
>                              (SELECT *
>                               FROM
>                                 (SELECT *
>                                  FROM
>                                    (SELECT *
>                                     FROM
>                                       (SELECT *
>                                        FROM
>                                          (SELECT *
>                                           FROM
>                                             (SELECT *
>                                              FROM
>                                                (SELECT *
>                                                 FROM
>                                                   (SELECT *
>                                                    FROM
>                                                      (SELECT *
>                                                       FROM
>                                                         (SELECT *
>                                                          FROM
>                                                            (SELECT *
>                                                             FROM
>                                                               (SELECT *
>                                                                FROM
>                                                                  (SELECT *
>                                                                   FROM
>                                                                     (SELECT *
>                                                                      FROM
>                                                                        (SELECT *
>                                                                         FROM
>                                                                           (SELECT *
>                                                                            FROM
>                                                                              (SELECT *
>                                                                               FROM
>                                                                                 (SELECT *
>                                                                                  FROM
>                                                                                    (SELECT *
>                                                                                     FROM
>                                                                                       (SELECT *
>                                                                                        FROM
>                                                                                          (SELECT *
>                                                                                           FROM
>                                                                                             (SELECT '20211020' AS `dt`
>                                                                                              UNION ALL SELECT '20211021' AS `dt`) AS `t`
>                                                                                           UNION ALL SELECT '20211022' AS `dt`) AS `t`
>                                                                                        UNION ALL SELECT '20211023' AS `dt`) AS `t`
>                                                                                     UNION ALL SELECT '20211024' AS `dt`) AS `t`
>                                                                                  UNION ALL SELECT '20211025' AS `dt`) AS `t`
>                                                                               UNION ALL SELECT '20211026' AS `dt`) AS `t`
>                                                                            UNION ALL SELECT '20211027' AS `dt`) AS `t`
>                                                                         UNION ALL SELECT '20211028' AS `dt`) AS `t`
>                                                                      UNION ALL SELECT '20211029' AS `dt`) AS `t`
>                                                                   UNION ALL SELECT '20211030' AS `dt`) AS `t`
>                                                                UNION ALL SELECT '20211031' AS `dt`) AS `t`
>                                                             UNION ALL SELECT '20211101' AS `dt`) AS `t`
>                                                          UNION ALL SELECT '20211102' AS `dt`) AS `t`
>                                                       UNION ALL SELECT '20211103' AS `dt`) AS `t`
>                                                    UNION ALL SELECT '20211104' AS `dt`) AS `t`
>                                                 UNION ALL SELECT '20211105' AS `dt`) AS `t`
>                                              UNION ALL SELECT '20211106' AS `dt`) AS `t`
>                                           UNION ALL SELECT '20211107' AS `dt`) AS `t`
>                                        UNION ALL SELECT '20211108' AS `dt`) AS `t`
>                                     UNION ALL SELECT '20211109' AS `dt`) AS `t`
>                                  UNION ALL SELECT '20211110' AS `dt`) AS `t`
>                               UNION ALL SELECT '20211111' AS `dt`) AS `t`
>                            UNION ALL SELECT '20211112' AS `dt`) AS `t`
>                         UNION ALL SELECT '20211113' AS `dt`) AS `t`
>                      UNION ALL SELECT '20211114' AS `dt`) AS `t`
>                   UNION ALL SELECT '20211115' AS `dt`) AS `t`
>                UNION ALL SELECT '20211116' AS `dt`) AS `t`
>             UNION ALL SELECT '20211117' AS `dt`) AS `t`
>          UNION ALL SELECT '20211118' AS `dt`) AS `t`
>       UNION ALL SELECT '20211119' AS `dt`) AS `t`
>    UNION ALL SELECT '20211120' AS `dt`) AS `t1`
> CROSS JOIN
>   (SELECT 1000+1000) AS `t2`
> GROUP BY `t1`.`dt`;
> {code}
> This query may take long time to execute, such as ten minutes. If we reduce 'UNION', the query will execute quickly.



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