Fu Chen created SPARK-36715:
-------------------------------
Summary: 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
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: [email protected]
For additional commands, e-mail: [email protected]