@@ -36,7 +36,7 @@ class InferFiltersFromGenerateSuite extends PlanTest {
3636 val testRelation = LocalRelation (' a .array(StructType (Seq (
3737 StructField (" x" , IntegerType ),
3838 StructField (" y" , IntegerType )
39- ))), ' c1 .string, ' c2 .string)
39+ ))), ' c1 .string, ' c2 .string, ' c3 .int )
4040
4141 Seq (Explode (_), PosExplode (_), Inline (_)).foreach { f =>
4242 val generator = f(' a )
@@ -74,6 +74,13 @@ class InferFiltersFromGenerateSuite extends PlanTest {
7474 val optimized = Optimize .execute(originalQuery)
7575 comparePlans(optimized, originalQuery)
7676 }
77+
78+ val fromJson = f(JsonToStructs (ArrayType (new StructType ().add(" s" , " string" )), Map .empty, ' c1 ))
79+ test(" SPARK-37392: Don't infer filters from " + fromJson) {
80+ val originalQuery = testRelation.generate(fromJson).analyze
81+ val optimized = Optimize .execute(originalQuery)
82+ comparePlans(optimized, originalQuery)
83+ }
7784 }
7885
7986 // setup rules to test inferFilters with ConstantFolding to make sure
@@ -91,28 +98,28 @@ class InferFiltersFromGenerateSuite extends PlanTest {
9198 }
9299
93100 Seq (Explode (_), PosExplode (_)).foreach { f =>
94- val createArrayExplode = f(CreateArray (Seq (' c1 )))
95- test(" SPARK-33544: Don't infer filters from CreateArray " + createArrayExplode) {
96- val originalQuery = testRelation.generate(createArrayExplode).analyze
97- val optimized = OptimizeInferAndConstantFold .execute(originalQuery)
98- comparePlans(optimized, originalQuery)
99- }
100- val createMapExplode = f(CreateMap (Seq (' c1 , ' c2 )))
101- test(" SPARK-33544: Don't infer filters from CreateMap " + createMapExplode) {
102- val originalQuery = testRelation.generate(createMapExplode).analyze
103- val optimized = OptimizeInferAndConstantFold .execute(originalQuery)
104- comparePlans(optimized, originalQuery)
105- }
106- }
101+ val createArrayExplode = f(CreateArray (Seq (' c1 )))
102+ test(" SPARK-33544: Don't infer filters from CreateArray " + createArrayExplode) {
103+ val originalQuery = testRelation.generate(createArrayExplode).analyze
104+ val optimized = OptimizeInferAndConstantFold .execute(originalQuery)
105+ comparePlans(optimized, originalQuery)
106+ }
107+ val createMapExplode = f(CreateMap (Seq (' c1 , ' c2 )))
108+ test(" SPARK-33544: Don't infer filters from CreateMap " + createMapExplode) {
109+ val originalQuery = testRelation.generate(createMapExplode).analyze
110+ val optimized = OptimizeInferAndConstantFold .execute(originalQuery)
111+ comparePlans(optimized, originalQuery)
112+ }
113+ }
107114
108- Seq (Inline (_)).foreach { f =>
109- val createArrayStructExplode = f(CreateArray (Seq (CreateStruct (Seq (' c1 )))))
110- test(" SPARK-33544: Don't infer filters from CreateArray " + createArrayStructExplode) {
111- val originalQuery = testRelation.generate(createArrayStructExplode).analyze
112- val optimized = OptimizeInferAndConstantFold .execute(originalQuery)
113- comparePlans(optimized, originalQuery)
114- }
115- }
115+ Seq (Inline (_)).foreach { f =>
116+ val createArrayStructExplode = f(CreateArray (Seq (CreateStruct (Seq (' c1 )))))
117+ test(" SPARK-33544: Don't infer filters from CreateArray " + createArrayStructExplode) {
118+ val originalQuery = testRelation.generate(createArrayStructExplode).analyze
119+ val optimized = OptimizeInferAndConstantFold .execute(originalQuery)
120+ comparePlans(optimized, originalQuery)
121+ }
122+ }
116123
117124 test(" SPARK-36715: Don't infer filters from udf" ) {
118125 Seq (Explode (_), PosExplode (_), Inline (_)).foreach { f =>
0 commit comments