Till Westmann has submitted this change and it was merged.

Change subject: Fix ASTERIXDB-1255
......................................................................


Fix ASTERIXDB-1255

This changes enable dynamic hashtable size in SimilarityJaccardEvaluator

Change-Id: I08c550d35d864df08792369d38ff81012e3976af
Reviewed-on: https://asterix-gerrit.ics.uci.edu/586
Sonar-Qube: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>
Integration-Tests: Jenkins <[email protected]>
Reviewed-by: Till Westmann <[email protected]>
---
M 
asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
1 file changed, 10 insertions(+), 4 deletions(-)

Approvals:
  Till Westmann: Looks good to me, approved
  Jenkins: Verified; No violations found; Verified

Objections:
  Jenkins: Violations found



diff --git 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
index e9928a1..ab817bd 100644
--- 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
+++ 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
@@ -50,11 +50,11 @@
 public class SimilarityJaccardEvaluator implements IScalarEvaluator {
 
     // Parameters for hash table.
-    protected final int TABLE_SIZE = 100;
-    protected final int TABLE_FRAME_SIZE = 32768;
+    protected static final int MIN_TABLE_SIZE = 100;
+    protected static final int TABLE_FRAME_SIZE = 32768;
 
     // Assuming type indicator in serde format.
-    protected final int TYPE_INDICATOR_SIZE = 1;
+    protected static final int TYPE_INDICATOR_SIZE = 1;
 
     protected final ArrayBackedValueStorage resultStorage = new 
ArrayBackedValueStorage();
     protected final DataOutput out = resultStorage.getDataOutput();
@@ -88,6 +88,8 @@
 
     // Ignore case for strings. Defaults to true.
     protected final boolean ignoreCase = true;
+
+    protected int hashTableSize = MIN_TABLE_SIZE;
 
     public SimilarityJaccardEvaluator(IScalarEvaluatorFactory[] args, 
IHyracksTaskContext context)
             throws HyracksDataException {
@@ -140,6 +142,10 @@
         if (firstListIter.size() == 0 || secondListIter.size() == 0) {
             return false;
         }
+
+        // Set the size of the table dynamically
+        hashTableSize = Math.max(Math.max(firstListIter.size(), 
secondListIter.size()), MIN_TABLE_SIZE);
+
         // TODO: Check item types are compatible.
         return true;
     }
@@ -229,7 +235,7 @@
                 .createBinaryHashFunction(probeItemTypeTag, ignoreCase);
         IBinaryComparator cmp = 
ListItemBinaryComparatorFactory.INSTANCE.createBinaryComparator(buildItemTypeTag,
                 probeItemTypeTag, ignoreCase);
-        hashMap = new BinaryHashMap(TABLE_SIZE, TABLE_FRAME_SIZE, putHashFunc, 
getHashFunc, cmp);
+        hashMap = new BinaryHashMap(hashTableSize, TABLE_FRAME_SIZE, 
putHashFunc, getHashFunc, cmp);
     }
 
     protected boolean checkArgTypes(ATypeTag typeTag1, ATypeTag typeTag2) 
throws HyracksDataException {

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/586
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I08c550d35d864df08792369d38ff81012e3976af
Gerrit-PatchSet: 9
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Heri Ramampiaro <[email protected]>
Gerrit-Reviewer: Chen Li <[email protected]>
Gerrit-Reviewer: Heri Ramampiaro <[email protected]>
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Reviewer: Michael Blow <[email protected]>
Gerrit-Reviewer: Till Westmann <[email protected]>
Gerrit-Reviewer: Yingyi Bu <[email protected]>
Gerrit-Reviewer: abdullah alamoudi <[email protected]>

Reply via email to