[ https://issues.apache.org/jira/browse/SPARK-52157?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mihailo Aleksic updated SPARK-52157: ------------------------------------ Description: In the following query we would have min(outer(t2.t2a)) as a name for min(t2a) expression. {code:java} SELECT t1a FROM t1 WHERE t1a IN (SELECT t2a FROM t2 WHERE EXISTS (SELECT min(t2a) FROM t3)) {code} This is a problem in compatibility between single-pass resolver and fixed-point analyzer because names in single-pass are generated after we finish resolution of aggregate expression min(t2a) (bottom-up manner) and at that point we have OuterReference wrapped around aggregate expression (name looks like outer(min(t2a))). In this issue I propose that we store the name earlier (in a form of a tag) and use it when needed was: In the following query we would have min(outer(t2.t2a)) as a name for min(t2a) expression. {code:java} SELECT t1a FROM t1 WHERE t1a IN (SELECT t2a FROM t2 WHERE EXISTS (SELECT min(t2a) FROM t3)) {code} This is a problem in compatibility between single-pass resolver and fixed-point analyzer because names in single-pass are generated after we finish resolution of aggregate expression min(t2a) (bottom-up manner) and at that point we have OuterReference wrapped around aggregate expression (name looks like outer(min(t2a))). > Use earlier computed name for OuterReference in single-pass resolver > -------------------------------------------------------------------- > > Key: SPARK-52157 > URL: https://issues.apache.org/jira/browse/SPARK-52157 > Project: Spark > Issue Type: Improvement > Components: SQL > Affects Versions: 4.1.0 > Reporter: Mihailo Aleksic > Priority: Major > > In the following query we would have min(outer(t2.t2a)) as a name for > min(t2a) expression. > {code:java} > SELECT t1a > FROM t1 > WHERE t1a IN (SELECT t2a > FROM t2 > WHERE EXISTS (SELECT min(t2a) > FROM t3)) > {code} > This is a problem in compatibility between single-pass resolver and > fixed-point analyzer because names in single-pass are generated after we > finish resolution of aggregate expression min(t2a) (bottom-up manner) and at > that point we have OuterReference wrapped around aggregate expression (name > looks like outer(min(t2a))). > In this issue I propose that we store the name earlier (in a form of a tag) > and use it when needed -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org