Github user omalley commented on a diff in the pull request:

    https://github.com/apache/orc/pull/299#discussion_r208393137
  
    --- Diff: java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java 
---
    @@ -543,35 +551,73 @@ public void reset() {
           super.reset();
           minimum = null;
           maximum = null;
    +      isLowerBoundSet = false;
    +      isUpperBoundSet = false;
           sum = 0;
         }
     
         @Override
         public void updateString(Text value) {
           if (minimum == null) {
    -        maximum = minimum = new Text(value);
    +        if(value.getLength() > MAX_BYTES_RECORDED) {
    +         minimum = truncateLowerBound(value);
    +         maximum = truncateUpperBound(value);
    +         isLowerBoundSet = true;
    +         isUpperBoundSet = true;
    +        } else {
    +          maximum = minimum = new Text(value);
    +        }
           } else if (minimum.compareTo(value) > 0) {
    -        minimum = new Text(value);
    +        if(value.getLength() > MAX_BYTES_RECORDED) {
    +          minimum = truncateLowerBound(value);
    +          isLowerBoundSet = true;
    +        }else {
    +          minimum = new Text(value);
    +        }
           } else if (maximum.compareTo(value) < 0) {
    -        maximum = new Text(value);
    +        if(value.getLength() > MAX_BYTES_RECORDED) {
    +          maximum = truncateUpperBound(value);
    +          isUpperBoundSet = true;
    +        } else {
    +          maximum = new Text(value);
    +        }
           }
           sum += value.getLength();
         }
     
    +
         @Override
         public void updateString(byte[] bytes, int offset, int length,
                                  int repetitions) {
    +      byte[] input = Arrays.copyOfRange(bytes, offset, offset+(length));
    --- End diff --
    
    Please don't copy the array unless it is needed.


---

Reply via email to