Drop use of secondary set to track hash collisions -- closes apache/incubator-pirk#103
diff --git a/src/main/java/org/apache/pirk/querier/wideskies/encrypt/EncryptQuery.java b/src/main/java/org/apache/pirk/querier/wideskies/encrypt/EncryptQuery.java
index 91136d1..afa41c5 100644
--- a/src/main/java/org/apache/pirk/querier/wideskies/encrypt/EncryptQuery.java
+++ b/src/main/java/org/apache/pirk/querier/wideskies/encrypt/EncryptQuery.java
@@ -21,10 +21,8 @@
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.concurrent.ExecutionException;
@@ -163,7 +161,6 @@
String hashKey = queryInfo.getHashKey();
int keyCounter = 0;
int numSelectors = selectors.size();
- Set<Integer> hashes = new HashSet<>(numSelectors);
Map<Integer,Integer> selectorQueryVecMapping = new HashMap<>(numSelectors);
for (int index = 0; index < numSelectors; index++)
@@ -172,16 +169,14 @@
int hash = KeyedHash.hash(hashKey, queryInfo.getHashBitSize(), selector);
// All keyed hashes of the selectors must be unique
- if (hashes.add(hash))
+ if (selectorQueryVecMapping.put(hash, index) == null)
{
// The hash is unique
- selectorQueryVecMapping.put(hash, index);
logger.debug("index = " + index + "selector = " + selector + " hash = " + hash);
}
else
{
// Hash collision
- hashes.clear();
selectorQueryVecMapping.clear();
hashKey = queryInfo.getHashKey() + ++keyCounter;
logger.debug("index = " + index + "selector = " + selector + " hash collision = " + hash + " new key = " + hashKey);
diff --git a/src/main/java/org/apache/pirk/querier/wideskies/encrypt/EncryptQueryTask.java b/src/main/java/org/apache/pirk/querier/wideskies/encrypt/EncryptQueryTask.java
index 4f0bdf2..a32c0f1 100644
--- a/src/main/java/org/apache/pirk/querier/wideskies/encrypt/EncryptQueryTask.java
+++ b/src/main/java/org/apache/pirk/querier/wideskies/encrypt/EncryptQueryTask.java
@@ -66,7 +66,7 @@
BigInteger valToEnc = (selectorNum == null) ? BigInteger.ZERO : (BigInteger.valueOf(2)).pow(selectorNum * dataPartitionBitSize);
BigInteger encVal = paillier.encrypt(valToEnc);
encryptedValues.put(i, encVal);
- logger.debug("selectorNum = " + selectorNum + " valToEnc = " + valToEnc + " envVal = " + encVal);
+ logger.debug("selectorNum = " + selectorNum + " valToEnc = " + valToEnc + " encVal = " + encVal);
}
return encryptedValues;
diff --git a/src/main/java/org/apache/pirk/schema/data/DataSchema.java b/src/main/java/org/apache/pirk/schema/data/DataSchema.java
index 8728b96..e37fd56 100644
--- a/src/main/java/org/apache/pirk/schema/data/DataSchema.java
+++ b/src/main/java/org/apache/pirk/schema/data/DataSchema.java
@@ -143,7 +143,7 @@
* @param elementName
* the name of the element whose partitioner is required.
* @return the data partitioner, or <code>null</code> if the element does not exist.
- * @throws PIRExcpetion
+ * @throws PIRException
* if the partitioner cannot be instantiated.
* @see DataSchema#getPartitionerInstance(String)
*/