manuzhang opened a new pull request, #1019: URL: https://github.com/apache/iceberg-cpp/pull/1019
MurmurHash3's block readers interpreted input as native 32/64-bit words, producing different bucket hashes on big-endian hosts and making unaligned byte spans undefined behavior. Replace those loads with the existing `ReadLittleEndian` helper and keep block pointers byte-addressed in all three MurmurHash3 variants. Part of #1000. For example, hashing int/long `34` on s390x now yields the specified hash `2017239379` and `bucket[100] = 79`, instead of the reported `1403955681` / `81`. Add canonical bucket values for int, long, string, binary, fixed, and UUID inputs. Add numeric hash-word fixtures from the original SMHasher implementation covering block/tail boundaries, multiple blocks, a nonzero seed, and input offsets 0–7 for all three variants. Register the new regression in `util_test`. Validation: - Native macOS arm64: focused bucket/Murmur GTests compiled with UBSan against the patched hash source and unchanged prebuilt main core/data libraries; all 4 tests passed. The original hash source fails the unaligned-input UBSan regression. - Actual statically linked s390x binaries under QEMU 8.2.2, compiled with GCC 14.2: original source fails 152 golden-vector expectations; patched source passes all 264 comparisons and a runtime big-endian check. This validates the hash implementation, not a full Iceberg integration build. - CMake configuration confirms the new regression is included in `util_test`. - Clang-tidy on the changed C++ files with warnings treated as errors: passed. - `pre-commit run --all-files` and `git diff --check`: passed. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
