fix #2461 &=
in the bool DSL is viral.
#2467
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The performance and allocations fixes in #2235 also introduced virality
on the QueryContainer when using &= assignment. The composed result was
correct but the QueryContainer composed of
&=
would be left marked asCreatedByTheBoolDsl
which meant it was marked for reuse.If you then later combined it with && (e.g
andAssignedQuery
&&newQuery
) the resultingquery would be correct but if you rely on
andAssignedQuery
not beingmutated you'd be in for a nasty suprise.
A QueryContainer composed with
&&
did not expose the same viralityproblems.
This was due to a difference in how the
&
operator overload onQueryContainer
andQueryBase
behaved.Removed the notion of trying to reuse all together since the big
performance gain from #2235 is that we can flatten many boolean should
queries using
&=
or&&
or visa versa many boolean must queries with|=
or||
.