apache / apache/arrow-java

[Java] MurmurHasher doesn't take the final bytes into account if size % 4 != 0

Offen
#248 0 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Type: bug
Vorherrschende Sprache
Java
Sterne
94
Forks
152
Ø Merge
3 T. 16 Std.
Gemergte PRs (30 T.)
11

Beschreibung

Minimal test case: all buffers of size 1 currently hash to the same value (-1684229222)

To my (admittedly untrained) eye, it looks like should range from `length - 1` rather than `index - 1`?

Also, should the nearby `index += 1` be removed, so that `i` and `index` don't meet in the middle? (`index` is being checked in the loop condition)

**Reporter**: [James Henderson](https://issues.apache.org/jira/browse/ARROW-15175) / @jarohen

**Note**: *This issue was originally created as [ARROW-15175](https://issues.apache.org/jira/browse/ARROW-15175). Please see the [migration documentation](https://github.com/apache/arrow/issues/14542) for further details.*

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Öffne java/memory/memory-core/src/main/java/org/apache/arrow/memory/util/hash/MurmurHasher.java in der referenzierten Zeile und reproduziere das Problem mit Puffern, deren Größe nicht durch vier teilbar ist, insbesondere mit der Größe 1. Verfolge die Grenzen der Schleife und die Verarbeitung des letzten Bytes. Überprüfe anschließend, dass Puffer mit unterschiedlichen letzten Bytes nicht mehr denselben Hash erzeugen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
data
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.