Fix endian issue in CityHash for s390x #46096
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.
On s390x, 00322_disable_checksumming fails because of the following:
CityHash128 returns same uint128 values on both little endian and big endian machines(after a fix in contrib/cityhash102/src/config.h), however the byte order of low and high 64 bit integers of uint128 are reversed on big endian machines compared with those on little endian machines. It means that verification of the binary checksum data generated in little endian machine will fail on big endian machine. Taking checksum in 00322_disable_checksumming as an example:
In big endian:
In little endian:
The fix does the following:
00322_disable_checksumming
, use checksum generated in big endian machine for big endian machines like s390x.Changelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):
Fixed endian issue in CityHash for s390x.
Documentation entry for user-facing changes