@Override
  public void merge(ColumnStatisticsObj aggregateColStats, ColumnStatisticsObj newColStats) {
    LOG.debug("Merging statistics: [aggregateColStats:{}, newColStats: {}]", aggregateColStats, newColStats);

    BinaryColumnStatsData aggregateData = aggregateColStats.getStatsData().getBinaryStats();
    BinaryColumnStatsData newData = newColStats.getStatsData().getBinaryStats();

    aggregateData.setMaxColLen(mergeMaxColLen(aggregateData.getMaxColLen(), newData.getMaxColLen()));
    aggregateData.setAvgColLen(mergeAvgColLen(aggregateData.getAvgColLen(), newData.getAvgColLen()));
    aggregateData.setNumNulls(mergeNumNulls(aggregateData.getNumNulls(), newData.getNumNulls()));
  }
@Test
  public void testMergeNonNullValues() {
    ColumnStatisticsObj aggrObj = createColumnStatisticsObj(new ColStatsBuilder<>(byte[].class)
        .avgColLen(3)
        .maxColLen(2)
        .numNulls(2)
        .build());
    ColumnStatisticsObj newObj = createColumnStatisticsObj(new ColStatsBuilder<>(byte[].class)
        .avgColLen(2)
        .maxColLen(3)
        .numNulls(3)
        .build());
    MERGER.merge(aggrObj, newObj);

    newObj = createColumnStatisticsObj(new ColStatsBuilder<>(byte[].class)
        .avgColLen(3)
        .maxColLen(3)
        .numNulls(1)
        .build());
    MERGER.merge(aggrObj, newObj);

    ColumnStatisticsData expectedColumnStatisticsData = new ColStatsBuilder<>(byte[].class)
        .avgColLen(3)
        .maxColLen(3)
        .numNulls(6)
        .build();
    assertEquals(expectedColumnStatisticsData, aggrObj.getStatsData());
  }