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;