Details
-
Bug
-
Resolution: Fixed
-
Trivial
-
7.6.2
-
Untriaged
-
0
-
Unknown
Description
The IsParallel() function returns the same value as IsSerializable() when not overridden. It should be the inverse - this only really affects Offset, Limit & Stream operators and only when max_parallelism == 1.
In Sequence when the children are chained, an attempt is made to run some consumers inline - but with IsParallel() returning the same value as IsSerializable() we can't chain for example Offset->Limit->Stream since each is serialisable and thus IsParallel() returns true for each; a chain like this needs to be all non-parallel operators.
It seems to have been a minor mistake in the initial implementation of MB-43985; if we invert the default value we are able to chain an Offset->Limit-Stream sequence.
(This will only impact these three operators as they're the only serializable ones; in theory a sequence containing only these would also be affected - not marked a parallel - but we don't generate sequences containing just these.)