maropu commented on a change in pull request #25274: [SPARK-28537][SQL]
DebugExec cannot debug broadcast or columnar related queries.
URL: https://github.com/apache/spark/pull/25274#discussion_r308023617
##########
File path:
sql/core/src/test/scala/org/apache/spark/sql/execution/debug/DebuggingSuite.scala
##########
@@ -48,4 +50,49 @@ class DebuggingSuite extends SparkFunSuite with
SharedSQLContext {
assert(res.forall{ case (subtree, code) =>
subtree.contains("Range") && code.contains("Object[]")})
}
+
+ test("SPARK-28537: DebugExec cannot debug broadcast or columnar related
queries") {
+ val rightDF = spark.range(10)
+ val leftDF = spark.range(10)
+ val joinedDF = leftDF.join(rightDF, leftDF("id") === rightDF("id"))
+ try {
+ val captured = new ByteArrayOutputStream()
+ Console.withOut(captured) {
+ joinedDF.debug()
+ }
+
+ val output = captured.toString()
+ assert(output.contains(
+ """== BroadcastExchange HashedRelationBroadcastMode(List(input[0,
bigint, false])) ==
+ |Tuples output: 0
+ | id LongType: {}
+ |== WholeStageCodegen ==
+ |Tuples output: 10
+ | id LongType: {java.lang.Long}
+ |== Range (0, 10, step=1, splits=2) ==
+ |Tuples output: 0
+ | id LongType: {}""".stripMargin))
+ } catch {
+ case e: Throwable => fail("debug() for broadcast failed with exception",
e)
+ }
+
+ val df = spark.range(5)
+ df.persist()
+ try {
+ val captured = new ByteArrayOutputStream()
+ Console.withOut(captured) {
+ df.debug()
+ }
+
+ val exprId = df.queryExecution.executedPlan.output.head.toString
+ val output = captured.toString()
+ assert(output.contains(
Review comment:
For these kinds of tests, substring matching seems to be better than exact
matching.
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]