Avoid mutation of join slice for separate datasets when joins
slice capacity is not yet reached
#261
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.
I have encountered a bug, when having two separate
SelectDataset
s with some common part, they can override one anothers joins. Example datasets (build in order):Expected behavior would be to see:
But the result actually is:
Therefore
derived2
dataset overrides the joins ofderived1
. This can happen for all additional joins for common parts with number of joins < 2^n. This is consequence of append(ret.joins, jc), which reallocates the data only whencap(ret.joins)
is reached.IMHO reslicing
joins
to a slice with maxed-out cap should fix this issue (practically enforcing copy-on-write) and (hopefully) shouldn't cause issues elsewhere.I would be glad if this issue could be fixed soon, so we can continue to use this great library without an issue.
Cheers!