davidm-db commented on code in PR #47442:
URL: https://github.com/apache/spark/pull/47442#discussion_r1700345738
##########
sql/core/src/test/scala/org/apache/spark/sql/scripting/SqlScriptingExecutionNodeSuite.scala:
##########
@@ -77,11 +93,157 @@ class SqlScriptingExecutionNodeSuite extends SparkFunSuite
{
TestLeafStatement("three"),
TestNestedStatementIterator(Seq(TestLeafStatement("four"),
TestLeafStatement("five")))))
.getTreeIterator
- val statements = iter.map {
- case TestLeafStatement(v) => v
- case _ => fail("Unexpected statement type")
- }.toList
-
+ val statements = iter.map(extractStatementValue).toSeq
assert(statements === Seq("one", "two", "three", "four", "five"))
}
+
+ test("if else - enter body of the IF clause") {
+ val iter = TestNestedStatementIterator(Seq(
+ TestIfElse(
+ conditions = Seq(
+ TestSingleStatement("con1")
Review Comment:
how would I do that exactly? that would require logic for if/else execution
node to be re-implemented for testing as well? because in the if/else iterator,
in case we are visiting the condition, we are invoking the evaluator to
evaluate the condition to boolean. if we were not to have the evaluator in
tests, we would need to change the iteration logic for the tests as well?
we could create a statement whose logical plan is some simple projection of
true/false value and that would be fine for now, but it seems like it would be
too complicated to extend that logic for the loops for example, where we need
to return true few times before returning false - which is quite simple with
`RetVal` evaluator introduced here.
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]