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.


---

Reply via email to