Deterministic and consistent output with and without duplicate removal - #26
Open
patrickbr wants to merge 8 commits into
Open
Deterministic and consistent output with and without duplicate removal#26patrickbr wants to merge 8 commits into
patrickbr wants to merge 8 commits into
Conversation
…asets and two new manually created datasets with or without duplicate removal and with only one thread or with multiple threads and check if the (sorted) result is equivalent, also check a contains/overlaps contradiction which was possible in rare cases before
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fix some issues which made the spatialjoin output not completely deterministic (modulo output ordering, which is non-deterministic).
1.) Make the sweep ordering deterministic for equivalent pairs which also makes it deterministic which input geometry will be the reference geometry for duplicates (note that this should not be necessary for a full deterministic output, but makes testing and debugging easier because failures become deterministic)
2.) Fix an issue with crosses: there never was a method for
writeCrosseswhich only writes crosses in one direction, and the rawwiteRelwas used instead here. But that circumvented the refs mechanisms, and therefore the output for these triples depended on which geometry was the duplication reference (and it may have also missed some "crosses" triples).3.) Fix a nasty issue:
writeNotOverlaps(inmultiOut(used a dummy sub id of 1 the signal "is a multigeometry", but that may have overwritten a real overlap of sub id 1.4.) Data race in
overlapsbetween TWO multi geometries, a non-overlap for one side may not be recorded depending on which multi geom is OUTed first