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

ulysses you updated SPARK-33131:
--------------------------------
    Description: 
Grouping sets construct new aggregate lost the qualified name of grouping 
expression. Here is a example:
{code:java}
-- Works resolved by ResolveReferences
select c1 from values (1) as t1(c1) group by grouping sets(t1.c1) having c1 = 1

-- Works because of the extra expression c1
select c1 as c2 from values (1) as t1(c1) group by grouping sets(t1.c1) having 
t1.c1 = 1

-- Failed
select c1 from values (1) as t1(c1) group by grouping sets(t1.c1) having t1.c1 
= 1{code}

  was:
The method `ResolveAggregateFunctions.resolveFilterCondInAggregate` aims to do 
the two things
1. resolve the expression in having.
2. push the having extra agg expression to `Aggregate`

However we only care about 2 now. If having clause resolution is successful but 
not exists extra agg expression, we will ignore the resolution. Here is a 
example:


{code:java}
-- Works resolved by ResolveReferences
select c1 from values (1) as t1(c1) group by grouping sets(t1.c1) having c1 = 1

-- Works because of the extra expression c1
select c1 as c2 from values (1) as t1(c1) group by grouping sets(t1.c1) having 
t1.c1 = 1

-- Failed
select c1 from values (1) as t1(c1) group by grouping sets(t1.c1) having t1.c1 
= 1{code}


> Fix grouping sets with having clause can not resolve qualified col name
> -----------------------------------------------------------------------
>
>                 Key: SPARK-33131
>                 URL: https://issues.apache.org/jira/browse/SPARK-33131
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 3.1.0
>            Reporter: ulysses you
>            Priority: Minor
>
> Grouping sets construct new aggregate lost the qualified name of grouping 
> expression. Here is a example:
> {code:java}
> -- Works resolved by ResolveReferences
> select c1 from values (1) as t1(c1) group by grouping sets(t1.c1) having c1 = 
> 1
> -- Works because of the extra expression c1
> select c1 as c2 from values (1) as t1(c1) group by grouping sets(t1.c1) 
> having t1.c1 = 1
> -- Failed
> select c1 from values (1) as t1(c1) group by grouping sets(t1.c1) having 
> t1.c1 = 1{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to