You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by wy...@apache.org on 2023/10/25 15:42:03 UTC
[asterixdb] branch master updated: [ASTERIXDB-3289][OTH] Make MurmurHash128Bit get the acutal field data
This is an automated email from the ASF dual-hosted git repository.
wyk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push:
new aabe3fa58b [ASTERIXDB-3289][OTH] Make MurmurHash128Bit get the acutal field data
aabe3fa58b is described below
commit aabe3fa58b84d7e58a1fbef4b8d40930d80fa165
Author: Wail Alkowaileet <wa...@gmail.com>
AuthorDate: Tue Oct 24 18:38:12 2023 -0700
[ASTERIXDB-3289][OTH] Make MurmurHash128Bit get the acutal field data
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
See ASTERIXDB-3289
Change-Id: I32588052b9d5d621d0fefed27e91727ea4736319
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17879
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <mh...@apache.org>
Tested-by: Wail Alkowaileet <wa...@gmail.com>
---
.../am/bloomfilter/impls/MurmurHash128Bit.java | 85 +++++++++++++---------
1 file changed, 49 insertions(+), 36 deletions(-)
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/MurmurHash128Bit.java b/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/MurmurHash128Bit.java
index 3aa9cc4c9c..dc6cb2536b 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/MurmurHash128Bit.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/MurmurHash128Bit.java
@@ -27,8 +27,6 @@ import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
**/
public class MurmurHash128Bit {
- private final static int DUMMY_FIELD = 0;
-
public static long rotl64(long v, int n) {
return ((v << n) | (v >>> (64 - n)));
}
@@ -65,8 +63,9 @@ public class MurmurHash128Bit {
long k1 = 0L;
for (int j = 0; j < 8; ++j) {
- k1 += (((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos] & 0xff) << (j << 3));
+ k1 += (((long) tuple.getFieldData(
+ keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex]) + bytePos]
+ & 0xff) << (j << 3));
++bytePos;
if (tuple.getFieldLength(keyFields[currentFieldIndex]) == bytePos) {
++currentFieldIndex;
@@ -75,8 +74,9 @@ public class MurmurHash128Bit {
}
long k2 = 0L;
for (int j = 0; j < 8; ++j) {
- k2 += (((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos] & 0xff) << (j << 3));
+ k2 += (((long) tuple.getFieldData(
+ keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex]) + bytePos]
+ & 0xff) << (j << 3));
++bytePos;
if (tuple.getFieldLength(keyFields[currentFieldIndex]) == bytePos) {
++currentFieldIndex;
@@ -113,56 +113,62 @@ public class MurmurHash128Bit {
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
switch (length & 15) {
case 15:
- k2 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]) << 48;
+ k2 ^= ((long) tuple
+ .getFieldData(keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex])
+ + bytePos]) << 48;
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
}
case 14:
- k2 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]) << 40;
+ k2 ^= ((long) tuple
+ .getFieldData(keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex])
+ + bytePos]) << 40;
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
}
case 13:
- k2 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]) << 32;
+ k2 ^= ((long) tuple
+ .getFieldData(keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex])
+ + bytePos]) << 32;
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
}
case 12:
- k2 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]) << 24;
+ k2 ^= ((long) tuple
+ .getFieldData(keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex])
+ + bytePos]) << 24;
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
}
case 11:
- k2 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]) << 16;
+ k2 ^= ((long) tuple
+ .getFieldData(keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex])
+ + bytePos]) << 16;
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
}
case 10:
- k2 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]) << 8;
+ k2 ^= ((long) tuple
+ .getFieldData(keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex])
+ + bytePos]) << 8;
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
}
case 9:
- k2 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]);
+ k2 ^= ((long) tuple.getFieldData(
+ keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex]) + bytePos]);
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
@@ -174,64 +180,71 @@ public class MurmurHash128Bit {
h2 ^= k2;
case 8:
- k1 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]) << 56;
+ k1 ^= ((long) tuple
+ .getFieldData(keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex])
+ + bytePos]) << 56;
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
}
case 7:
- k1 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]) << 48;
+ k1 ^= ((long) tuple
+ .getFieldData(keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex])
+ + bytePos]) << 48;
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
}
case 6:
- k1 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]) << 40;
+ k1 ^= ((long) tuple
+ .getFieldData(keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex])
+ + bytePos]) << 40;
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
}
case 5:
- k1 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]) << 32;
+ k1 ^= ((long) tuple
+ .getFieldData(keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex])
+ + bytePos]) << 32;
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
}
case 4:
- k1 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]) << 24;
+ k1 ^= ((long) tuple
+ .getFieldData(keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex])
+ + bytePos]) << 24;
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
}
case 3:
- k1 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]) << 16;
+ k1 ^= ((long) tuple
+ .getFieldData(keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex])
+ + bytePos]) << 16;
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
}
case 2:
- k1 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]) << 8;
+ k1 ^= ((long) tuple
+ .getFieldData(keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex])
+ + bytePos]) << 8;
--bytePos;
if (bytePos == -1) {
--currentFieldIndex;
bytePos = tuple.getFieldLength(keyFields[currentFieldIndex]) - 1;
}
case 1:
- k1 ^= ((long) tuple.getFieldData(DUMMY_FIELD)[tuple.getFieldStart(keyFields[currentFieldIndex])
- + bytePos]);
+ k1 ^= ((long) tuple.getFieldData(
+ keyFields[currentFieldIndex])[tuple.getFieldStart(keyFields[currentFieldIndex]) + bytePos]);
k1 *= c1;
k1 = rotl64(k1, 31);
k1 *= c2;