-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Description
Describe the bug
Similar to #1939, HashJoinExec drives its first child to completion within HashJoinExec::execute, see here, instead of returning a stream that performs this operation lazily.
This effectively stalls out constructing the rest of the physical plan until the child has been fully evaluated, and prevents result streaming from working correctly. It is also highly probable that one could construct a diamond shaped plan that would block indefinitely as a result.
To Reproduce
Run query incorporating a join
Expected behavior
ExecutionPlan::execute should return a stream of results, but should not block on those results being available
Additional context
I am currently experimenting with custom scheduling of physical plans, and this requires the construction of the physical plan to be correctly decoupled from its evaluation