Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
Impala 3.3.0
-
None
-
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