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

Apache Spark reassigned SPARK-36715:
------------------------------------

    Assignee:     (was: Apache Spark)

> explode(UDF) throw an exception
> -------------------------------
>
>                 Key: SPARK-36715
>                 URL: https://issues.apache.org/jira/browse/SPARK-36715
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 3.1.2
>            Reporter: Fu Chen
>            Priority: Major
>
> Code to reproduce:
>  
> {code:java}
> spark.udf.register("vec", (i: Int) => (0 until i).toArray)
> sql("select explode(vec(8)) as c1").show{code}
> {code:java}
> Once strategy's idempotence is broken for batch Infer FiltersOnce strategy's 
> idempotence is broken for batch Infer Filters GlobalLimit 21                  
>                                       GlobalLimit 21 +- LocalLimit 21         
>                                              +- LocalLimit 21    +- Project 
> [cast(c1#3 as string) AS c1#12]                            +- Project 
> [cast(c1#3 as string) AS c1#12]       +- Generate explode(vec(8)), false, 
> [c1#3]                            +- Generate explode(vec(8)), false, [c1#3]  
>         +- Filter ((size(vec(8), true) > 0) AND isnotnull(vec(8)))            
> +- Filter ((size(vec(8), true) > 0) AND isnotnull(vec(8)))!            +- 
> OneRowRelation                                                     +- Filter 
> ((size(vec(8), true) > 0) AND isnotnull(vec(8)))!                             
>                                                         +- OneRowRelation     
>   java.lang.RuntimeException: Once strategy's idempotence is broken for batch 
> Infer Filters GlobalLimit 21                                                  
>       GlobalLimit 21 +- LocalLimit 21                                         
>              +- LocalLimit 21    +- Project [cast(c1#3 as string) AS c1#12]   
>                          +- Project [cast(c1#3 as string) AS c1#12]       +- 
> Generate explode(vec(8)), false, [c1#3]                            +- 
> Generate explode(vec(8)), false, [c1#3]          +- Filter ((size(vec(8), 
> true) > 0) AND isnotnull(vec(8)))            +- Filter ((size(vec(8), true) > 
> 0) AND isnotnull(vec(8)))!            +- OneRowRelation                       
>                               +- Filter ((size(vec(8), true) > 0) AND 
> isnotnull(vec(8)))!                                                           
>                           +- OneRowRelation        at 
> org.apache.spark.sql.errors.QueryExecutionErrors$.onceStrategyIdempotenceIsBrokenForBatchError(QueryExecutionErrors.scala:1200)
>  at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.checkBatchIdempotence(RuleExecutor.scala:168)
>  at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$execute$1(RuleExecutor.scala:254)
>  at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$execute$1$adapted(RuleExecutor.scala:200)
>  at scala.collection.immutable.List.foreach(List.scala:431) at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.execute(RuleExecutor.scala:200)
>  at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.$anonfun$executeAndTrack$1(RuleExecutor.scala:179)
>  at 
> org.apache.spark.sql.catalyst.QueryPlanningTracker$.withTracker(QueryPlanningTracker.scala:88)
>  at 
> org.apache.spark.sql.catalyst.rules.RuleExecutor.executeAndTrack(RuleExecutor.scala:179)
>  at 
> org.apache.spark.sql.execution.QueryExecution.$anonfun$optimizedPlan$1(QueryExecution.scala:138)
>  at 
> org.apache.spark.sql.catalyst.QueryPlanningTracker.measurePhase(QueryPlanningTracker.scala:111)
>  at 
> org.apache.spark.sql.execution.QueryExecution.$anonfun$executePhase$1(QueryExecution.scala:196)
>  at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:775) at 
> org.apache.spark.sql.execution.QueryExecution.executePhase(QueryExecution.scala:196)
>  at 
> org.apache.spark.sql.execution.QueryExecution.optimizedPlan$lzycompute(QueryExecution.scala:134)
>  at 
> org.apache.spark.sql.execution.QueryExecution.optimizedPlan(QueryExecution.scala:130)
>  at 
> org.apache.spark.sql.execution.QueryExecution.assertOptimized(QueryExecution.scala:148)
>  at 
> org.apache.spark.sql.execution.QueryExecution.$anonfun$executedPlan$1(QueryExecution.scala:166)
>  at 
> org.apache.spark.sql.execution.QueryExecution.withCteMap(QueryExecution.scala:73)
>  at 
> org.apache.spark.sql.execution.QueryExecution.executedPlan$lzycompute(QueryExecution.scala:163)
>  at 
> org.apache.spark.sql.execution.QueryExecution.executedPlan(QueryExecution.scala:163)
>  at 
> org.apache.spark.sql.execution.QueryExecution.simpleString(QueryExecution.scala:214)
>  at 
> org.apache.spark.sql.execution.QueryExecution.org$apache$spark$sql$execution$QueryExecution$$explainString(QueryExecution.scala:259)
>  at 
> org.apache.spark.sql.execution.QueryExecution.explainString(QueryExecution.scala:228)
>  at 
> org.apache.spark.sql.execution.SQLExecution$.$anonfun$withNewExecutionId$5(SQLExecution.scala:98)
>  at 
> org.apache.spark.sql.execution.SQLExecution$.withSQLConfPropagated(SQLExecution.scala:163)
>  at 
> org.apache.spark.sql.execution.SQLExecution$.$anonfun$withNewExecutionId$1(SQLExecution.scala:90)
>  at org.apache.spark.sql.SparkSession.withActive(SparkSession.scala:775) at 
> org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:64)
>  at org.apache.spark.sql.Dataset.withAction(Dataset.scala:3731) at 
> org.apache.spark.sql.Dataset.head(Dataset.scala:2755) at 
> org.apache.spark.sql.Dataset.take(Dataset.scala:2962) at 
> org.apache.spark.sql.Dataset.getRows(Dataset.scala:288) at 
> org.apache.spark.sql.Dataset.showString(Dataset.scala:327) at 
> org.apache.spark.sql.Dataset.show(Dataset.scala:807) at 
> org.apache.spark.sql.Dataset.show(Dataset.scala:766) at 
> org.apache.spark.sql.Dataset.show(Dataset.scala:775) at 
> org.apache.spark.sql.jdbc.SimpleSuite.$anonfun$new$268(JDBCSuite.scala:3125) 
> at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23) at 
> org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85) at 
> org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83) at 
> org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) at 
> org.scalatest.Transformer.apply(Transformer.scala:22) at 
> org.scalatest.Transformer.apply(Transformer.scala:20) at 
> org.scalatest.funsuite.AnyFunSuiteLike$$anon$1.apply(AnyFunSuiteLike.scala:226)
>  at org.apache.spark.SparkFunSuite.withFixture(SparkFunSuite.scala:190) at 
> org.scalatest.funsuite.AnyFunSuiteLike.invokeWithFixture$1(AnyFunSuiteLike.scala:224)
>  at 
> org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$runTest$1(AnyFunSuiteLike.scala:236)
>  at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306) at 
> org.scalatest.funsuite.AnyFunSuiteLike.runTest(AnyFunSuiteLike.scala:236) at 
> org.scalatest.funsuite.AnyFunSuiteLike.runTest$(AnyFunSuiteLike.scala:218) at 
> org.apache.spark.SparkFunSuite.org$scalatest$BeforeAndAfterEach$$super$runTest(SparkFunSuite.scala:62)
>  at org.scalatest.BeforeAndAfterEach.runTest(BeforeAndAfterEach.scala:234) at 
> org.scalatest.BeforeAndAfterEach.runTest$(BeforeAndAfterEach.scala:227) at 
> org.apache.spark.sql.jdbc.SimpleSuite.org$scalatest$BeforeAndAfter$$super$runTest(JDBCSuite.scala:2048)
>  at org.scalatest.BeforeAndAfter.runTest(BeforeAndAfter.scala:213) at 
> org.scalatest.BeforeAndAfter.runTest$(BeforeAndAfter.scala:203) at 
> org.apache.spark.sql.jdbc.SimpleSuite.runTest(JDBCSuite.scala:2048) at 
> org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$runTests$1(AnyFunSuiteLike.scala:269)
>  at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413) 
> at scala.collection.immutable.List.foreach(List.scala:431) at 
> org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401) at 
> org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396) at 
> org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475) at 
> org.scalatest.funsuite.AnyFunSuiteLike.runTests(AnyFunSuiteLike.scala:269) at 
> org.scalatest.funsuite.AnyFunSuiteLike.runTests$(AnyFunSuiteLike.scala:268) 
> at org.scalatest.funsuite.AnyFunSuite.runTests(AnyFunSuite.scala:1563) at 
> org.scalatest.Suite.run(Suite.scala:1112) at 
> org.scalatest.Suite.run$(Suite.scala:1094) at 
> org.scalatest.funsuite.AnyFunSuite.org$scalatest$funsuite$AnyFunSuiteLike$$super$run(AnyFunSuite.scala:1563)
>  at 
> org.scalatest.funsuite.AnyFunSuiteLike.$anonfun$run$1(AnyFunSuiteLike.scala:273)
>  at org.scalatest.SuperEngine.runImpl(Engine.scala:535) at 
> org.scalatest.funsuite.AnyFunSuiteLike.run(AnyFunSuiteLike.scala:273) at 
> org.scalatest.funsuite.AnyFunSuiteLike.run$(AnyFunSuiteLike.scala:272) at 
> org.apache.spark.SparkFunSuite.org$scalatest$BeforeAndAfterAll$$super$run(SparkFunSuite.scala:62)
>  at 
> org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:213) at 
> org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210) at 
> org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208) at 
> org.apache.spark.sql.jdbc.SimpleSuite.org$scalatest$BeforeAndAfter$$super$run(JDBCSuite.scala:2048)
>  at org.scalatest.BeforeAndAfter.run(BeforeAndAfter.scala:273) at 
> org.scalatest.BeforeAndAfter.run$(BeforeAndAfter.scala:271) at 
> org.apache.spark.sql.jdbc.SimpleSuite.run(JDBCSuite.scala:2048) at 
> org.scalatest.tools.SuiteRunner.run(SuiteRunner.scala:45) at 
> org.scalatest.tools.Runner$.$anonfun$doRunRunRunDaDoRunRun$13(Runner.scala:1322)
>  at 
> org.scalatest.tools.Runner$.$anonfun$doRunRunRunDaDoRunRun$13$adapted(Runner.scala:1316)
>  at scala.collection.immutable.List.foreach(List.scala:431) at 
> org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:1316) at 
> org.scalatest.tools.Runner$.$anonfun$runOptionallyWithPassFailReporter$24(Runner.scala:993)
>  at 
> org.scalatest.tools.Runner$.$anonfun$runOptionallyWithPassFailReporter$24$adapted(Runner.scala:971)
>  at 
> org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:1482)
>  at 
> org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:971)
>  at org.scalatest.tools.Runner$.run(Runner.scala:798) at 
> org.scalatest.tools.Runner.run(Runner.scala) at 
> org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:133)
>  at 
> org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:27){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