Index: src/main/java/org/apache/hadoop/hbase/client/coprocessor/AggregationClient.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/client/coprocessor/AggregationClient.java (revision 1327523) +++ src/main/java/org/apache/hadoop/hbase/client/coprocessor/AggregationClient.java (working copy) @@ -94,7 +94,7 @@ @Override public synchronized void update(byte[] region, byte[] row, R result) { - max = ci.compare(max, result) < 0 ? result : max; + max = (max == null || (result != null && ci.compare(max, result) < 0)) ? result : max; } } MaxCallBack aMaxCallBack = new MaxCallBack(); @@ -144,7 +144,7 @@ @Override public synchronized void update(byte[] region, byte[] row, R result) { - min = (min == null || ci.compare(result, min) < 0) ? result : min; + min = (min == null || (result != null && ci.compare(result, min) < 0)) ? result : min; } } HTable table = new HTable(conf, tableName); Index: src/main/java/org/apache/hadoop/hbase/coprocessor/AggregateImplementation.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/coprocessor/AggregateImplementation.java (revision 1327523) +++ src/main/java/org/apache/hadoop/hbase/coprocessor/AggregateImplementation.java (working copy) @@ -67,7 +67,7 @@ hasMoreRows = scanner.next(results); for (KeyValue kv : results) { temp = ci.getValue(colFamily, qualifier, kv); - max = (max == null || ci.compare(temp, max) > 0) ? temp : max; + max = (max == null || (temp != null && ci.compare(temp, max) > 0)) ? temp : max; } results.clear(); } while (hasMoreRows); @@ -96,7 +96,7 @@ hasMoreRows = scanner.next(results); for (KeyValue kv : results) { temp = ci.getValue(colFamily, qualifier, kv); - min = (min == null || ci.compare(temp, min) < 0) ? temp : min; + min = (min == null || (temp != null && ci.compare(temp, min) < 0)) ? temp : min; } results.clear(); } while (hasMoreRows);