Uploaded image for project: 'IMPALA'
  1. IMPALA
  2. IMPALA-9589

Parser failures on valid SQL

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • Impala 3.3.0
    • None
    • Frontend
    • None
    • ghx-label-9

    Description

      The impala parser fails to parse the following valid SQL:

       

      SELECT 
        * 
      FROM 
        (
          (
            SELECT 
              `sr_item_sk`, 
              `sr_reason_sk`, 
              `sr_ticket_number`, 
              `sr_return_quantity` 
            FROM 
              `tpcds_10000_decimal_parquet`.`store_returns` 
            WHERE 
              `sr_reason_sk` IS NOT NULL
          ) AS `t1` 
          INNER JOIN (
            SELECT 
              `r_reason_sk` 
            FROM 
              `tpcds_10000_decimal_parquet`.`reason` 
            WHERE 
              `r_reason_desc` = 'reason 66'
          ) AS `t3` ON `t1`.`sr_reason_sk` = `t3`.`r_reason_sk`
        );
      
      ERROR: ParseException: Syntax error in line 14:
          ) AS `t1`
            ^
      Encountered: AS
      Expected: LIMIT, ORDER, UNION
      

       

      The query parses fine when you remove the outer set of parentheses:

      SELECT 
        * 
      FROM 
        (
          SELECT 
            `sr_item_sk`, 
            `sr_reason_sk`, 
            `sr_ticket_number`, 
            `sr_return_quantity` 
          FROM 
            `tpcds_10000_decimal_parquet`.`store_returns` 
          WHERE 
            `sr_reason_sk` IS NOT NULL
        ) AS `t1` 
        INNER JOIN (
          SELECT 
            `r_reason_sk` 
          FROM 
            `tpcds_10000_decimal_parquet`.`reason` 
          WHERE 
            `r_reason_desc` = 'reason 66'
        ) AS `t3` ON `t1`.`sr_reason_sk` = `t3`.`r_reason_sk`;
      

       

      The failing query is a simplified subset of the following query (a rewrite of TPC-DS query 93) which also fails to parse:

      Query: SELECT `t`.`ss_customer_sk`,
        SUM(
          CASE WHEN `t1`.`sr_return_quantity` IS NOT NULL THEN CAST(
            `t`.`ss_quantity` - `t1`.`sr_return_quantity` AS DECIMAL(10, 0)
          ) * `t`.`ss_sales_price` ELSE CAST(
            `t`.`ss_quantity` AS DECIMAL(10, 0)
          ) * `t`.`ss_sales_price` END
        ) AS `$f1`
      FROM
        (
          SELECT
            `ss_item_sk`,
            `ss_customer_sk`,
            `ss_ticket_number`,
            `ss_quantity`,
            `ss_sales_price`
          FROM
            `tpcds_10000_decimal_parquet`.`store_sales`
        ) AS `t`
        INNER JOIN (
          (
            SELECT
              `sr_item_sk`,
              `sr_reason_sk`,
              `sr_ticket_number`,
              `sr_return_quantity`
            FROM
              `tpcds_10000_decimal_parquet`.`store_returns`
            WHERE
              `sr_reason_sk` IS NOT NULL
          ) AS `t1`
          INNER JOIN (
            SELECT
              `r_reason_sk`
            FROM
              `tpcds_10000_decimal_parquet`.`reason`
            WHERE
              `r_reason_desc` = 'reason 66'
          ) AS `t3` ON `t1`.`sr_reason_sk` = `t3`.`r_reason_sk`
        ) ON `t`.`ss_item_sk` = `t1`.`sr_item_sk`
        AND `t`.`ss_ticket_number` = `t1`.`sr_ticket_number`
      GROUP BY
        `t`.`ss_customer_sk`
      ORDER BY
        SUM(
          CASE WHEN `t1`.`sr_return_quantity` IS NOT NULL THEN CAST(
            `t`.`ss_quantity` - `t1`.`sr_return_quantity` AS DECIMAL(10, 0)
          ) * `t`.`ss_sales_price` ELSE CAST(
            `t`.`ss_quantity` AS DECIMAL(10, 0)
          ) * `t`.`ss_sales_price` END
        ),
        `t`.`ss_customer_sk`
      LIMIT
        100
      Query submitted at: 2020-03-31 18:04:21 (Coordinator: https://drorke-dm-perf-coordinator3.drorke-d.xcu2-8y8x.dev.cldr.work:25000)
      ERROR: ParseException: Syntax error in line 31:
          ) AS `t1`
            ^
      Encountered: AS
      Expected: LIMIT, ORDER, UNION
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            drorke David Rorke
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: