You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@impala.apache.org by "Jacobo Sanchez (Jira)" <ji...@apache.org> on 2024/10/15 09:13:00 UTC

[jira] [Created] (IMPALA-13447) GROUP BY using CASE expression with literals at the WHEN clause fails

Jacobo Sanchez created IMPALA-13447:
---------------------------------------

             Summary: GROUP BY using CASE expression with literals at the WHEN clause fails
                 Key: IMPALA-13447
                 URL: https://issues.apache.org/jira/browse/IMPALA-13447
             Project: IMPALA
          Issue Type: Bug
    Affects Versions: Impala 3.4.0
            Reporter: Jacobo Sanchez


Impala throws an error when executing a group by having the same expression at projection and group by. The requirements are grouping by a CASE statement with an directly evaluable expression in the WHEN clause and a field reference in the chosen branch

The error points to the query having different expressions: _select list expression not produced by aggregation output_

 
 * Using any table execute the following replacing <field name> and <table name>:

{color:#800000}SELECT{color} {color:#800000}CASE{color} {color:#800000}WHEN{color} -{color:#0000ff}1{color} > {color:#0000ff}0{color} {color:#800000}THEN{color} {color:#8e00c6}t0{color}.{color:#006464}<field name> {color}{color:#800000}ELSE{color} {color:#008000}'X'{color} {color:#800000}END{color}

{color:#800000}FROM{color} <table name> {color:#8e00c6}t0{color}

{color:#800000}GROUP{color} {color:#800000}BY{color} {color:#800000}CASE{color} {color:#800000}WHEN{color} -{color:#0000ff}1{color} > {color:#0000ff}0{color} {color:#800000}THEN{color} {color:#000000}t0{color}.<field name> {color:#800000}ELSE{color} {color:#008000}'X'{color} {color:#800000}END{color}{color:#ff0000};{color}

           __           This is working as WHEN is false and 'X' is printed at the output
 * Changing the WHEN condition to make the CASE evaluate the THEN instead of ELSE

{color:#800000}SELECT{color} {color:#800000}CASE{color} {color:#800000}WHEN{color} -{color:#0000ff}1{color} < {color:#0000ff}0{color} {color:#800000}THEN{color} {color:#8e00c6}t0{color}.{color:#006464}<field name> {color}{color:#800000}ELSE{color} {color:#008000}'X'{color} {color:#800000}END{color}

{color:#800000}FROM{color} <table name> {color:#8e00c6}t0{color}

{color:#800000}GROUP{color} {color:#800000}BY{color} {color:#800000}CASE{color} {color:#800000}WHEN{color} -{color:#0000ff}1{color} < {color:#0000ff}0{color} {color:#800000}THEN{color} {color:#000000}t0{color}.<field name> {color:#800000}ELSE{color} {color:#008000}'X'{color} {color:#800000}END{color}{color:#ff0000};{color}

 

{color:#172b4d}          This fails like if the projected and grouped expressions were not the same.{color}

 

{color:#172b4d}           Using any field reference at the WHEN clause does also make the query to work. My guess is that internally the CASE expression is being evaluated to the resulting branch value but only in one of the clauses{color}

 

 

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)