protected KllHistogramEstimator mergeHistogramEstimator(
      String columnName, KllHistogramEstimator oldEst, KllHistogramEstimator newEst) {
    if (oldEst != null && newEst != null) {
      if (oldEst.canMerge(newEst)) {
        LOG.trace("Merging old sketch {} with new sketch {}...", oldEst.getSketch(), newEst.getSketch());
        oldEst.mergeEstimators(newEst);
        LOG.trace("Resulting sketch is {}", oldEst.getSketch());
        return oldEst;
      }
      LOG.debug("Merging histograms of column {}", columnName);
    } else if (newEst != null) {
      LOG.trace("Old sketch is empty, the new sketch is used {}", newEst.getSketch());
      return newEst;
    }
    return oldEst;
  }
@Test
  public void testMergeNonNullHistogramEstimators() {
    KllHistogramEstimator estimator1 =
        KllHistogramEstimatorFactory.getKllHistogramEstimator(KLL_1.toByteArray());
    KllHistogramEstimator estimator2 =
        KllHistogramEstimatorFactory.getKllHistogramEstimator(KLL_2.toByteArray());

    KllHistogramEstimator computedEstimator = MERGER.mergeHistogramEstimator("", estimator1, estimator2);

    KllFloatsSketch expectedKll = StatisticsTestUtils.createKll(Longs.concat(VALUES_1, VALUES_2));
    KllHistogramEstimator expectedEstimator =
        KllHistogramEstimatorFactory.getKllHistogramEstimator(expectedKll.toByteArray());

    assertEquals(expectedEstimator.getSketch().toString(), computedEstimator.getSketch().toString());
  }