Github user ilooner commented on a diff in the pull request:
https://github.com/apache/drill/pull/1101#discussion_r164614812
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableTemplate.java
---
@@ -805,7 +803,12 @@ private IntVector allocMetadataVector(int size, int
initialValue) {
}
@Override
- public void setMaxVarcharSize(int size) { maxVarcharSize = size; }
+ public void setKeySizes(Map<String, Integer> keySizes) {
+ Preconditions.checkNotNull(keySizes);
+
+ this.keySizes = CaseInsensitiveMap.newHashMap();
--- End diff --
It helps to avoid bugs. It is assumed that the keySizes map will never
change once it is set, copying the map helps enforce that constraint. If we
don't copy the map and a user calls this method and passes a keySizes map and
then later updates the keySizes map or reuses it, errors would occur. Some
languages like Scala have immutable flavors of data structures for this reason.
---