cloud-fan commented on code in PR #39479: URL: https://github.com/apache/spark/pull/39479#discussion_r1067639729
########## sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/OptimizeOneRowRelationSubquerySuite.scala: ########## @@ -177,4 +177,27 @@ class OptimizeOneRowRelationSubquerySuite extends PlanTest { val optimized = Optimize.execute(query2.analyze) assertHasDomainJoin(optimized) } + + test("SPARK-41961: optimize lateral subquery with table-valued functions") { + // SELECT * FROM t3 JOIN LATERAL EXPLODE(arr) + val query1 = t3.lateralJoin(UnresolvedTableValuedFunction("explode", $"arr" :: Nil)) + comparePlans( + Optimize.execute(query1.analyze), + t3.generate(Explode($"arr")).analyze) + + // SELECT * FROM t3 JOIN LATERAL EXPLODE(arr) t(v) + val query2 = t3.lateralJoin( + UnresolvedTVFAliases("explode" :: Nil, + UnresolvedTableValuedFunction("explode", $"arr" :: Nil), "v" :: Nil)) + comparePlans( + Optimize.execute(query2.analyze), + t3.generate(Explode($"arr")).select($"a", $"b", $"arr", $"col".as("v")).analyze) + + // SELECT col FROM t3 JOIN LATERAL (SELECT * FROM EXPLODE(arr) WHERE col > 0) + val query3 = t3.lateralJoin( + UnresolvedTableValuedFunction("explode", $"arr" :: Nil).where($"col" > 0)) + val optimized = Optimize.execute(query3.analyze) + optimized.exists(_.isInstanceOf[Generate]) + assertHasDomainJoin(optimized) Review Comment: Does this mean we can't run this query today as we can't decorrelate Generate? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org