[ 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