/** * Convertes to DecimalColumnStatsDataInspector * if it's a DecimalColumnStatsData. * @param cso ColumnStatisticsObj * @return DecimalColumnStatsDataInspector */ public static DecimalColumnStatsDataInspector decimalInspectorFromStats(ColumnStatisticsObj cso) { DecimalColumnStatsDataInspector columnStats; if (cso.getStatsData().getDecimalStats() instanceof DecimalColumnStatsDataInspector) { columnStats = (DecimalColumnStatsDataInspector)(cso.getStatsData().getDecimalStats()); } else { columnStats = new DecimalColumnStatsDataInspector(cso.getStatsData().getDecimalStats()); } return columnStats; } }
private static void unpackDecimalStats(ObjectInspector oi, Object o, String fName, ColumnStatisticsObj statsObj) { if (fName.equals("countnulls")) { long v = ((LongObjectInspector) oi).get(o); statsObj.getStatsData().getDecimalStats().setNumNulls(v); } else if (fName.equals("numdistinctvalues")) { long v = ((LongObjectInspector) oi).get(o); statsObj.getStatsData().getDecimalStats().setNumDVs(v); } else if (fName.equals("max")) { HiveDecimal d = ((HiveDecimalObjectInspector) oi).getPrimitiveJavaObject(o); statsObj.getStatsData().getDecimalStats().setHighValue(convertToThriftDecimal(d)); } else if (fName.equals("min")) { HiveDecimal d = ((HiveDecimalObjectInspector) oi).getPrimitiveJavaObject(o); statsObj.getStatsData().getDecimalStats().setLowValue(convertToThriftDecimal(d)); } else if (fName.equals("ndvbitvector")) { PrimitiveObjectInspector poi = (PrimitiveObjectInspector) oi; byte[] buf = ((BinaryObjectInspector) poi).getPrimitiveJavaObject(o); statsObj.getStatsData().getDecimalStats().setBitVectors(buf); ; } }
private void unpackDecimalStats(ObjectInspector oi, Object o, String fName, ColumnStatisticsObj statsObj) { if (fName.equals("countnulls")) { long v = ((LongObjectInspector) oi).get(o); statsObj.getStatsData().getDecimalStats().setNumNulls(v); } else if (fName.equals("numdistinctvalues")) { long v = ((LongObjectInspector) oi).get(o); statsObj.getStatsData().getDecimalStats().setNumDVs(v); } else if (fName.equals("max")) { HiveDecimal d = ((HiveDecimalObjectInspector) oi).getPrimitiveJavaObject(o); statsObj.getStatsData().getDecimalStats().setHighValue(convertToThriftDecimal(d)); } else if (fName.equals("min")) { HiveDecimal d = ((HiveDecimalObjectInspector) oi).getPrimitiveJavaObject(o); statsObj.getStatsData().getDecimalStats().setLowValue(convertToThriftDecimal(d)); } else if (fName.equals("ndvbitvector")) { PrimitiveObjectInspector poi = (PrimitiveObjectInspector) oi; String v = ((StringObjectInspector) poi).getPrimitiveJavaObject(o); statsObj.getStatsData().getDecimalStats().setBitVectors(v);; } }
Map<String, DecimalColumnStatsData> extractedAdjustedStatsMap = new HashMap<>(); for (Map.Entry<String, ColumnStatisticsData> entry : adjustedStatsMap.entrySet()) { extractedAdjustedStatsMap.put(entry.getKey(), entry.getValue().getDecimalStats());
@Test public void testMergeNullMinMaxValues() { ColumnStatisticsObj objNulls = new ColumnStatisticsObj(); createData(objNulls, null, null); merger.merge(objNulls, objNulls); Assert.assertNull(objNulls.getStatsData().getDecimalStats().getLowValue()); Assert.assertNull(objNulls.getStatsData().getDecimalStats().getHighValue()); }
convertToString(bcsd.getBitVectors()))); } else if (csd.isSetDecimalStats()) { DecimalColumnStatsData dcsd = csd.getDecimalStats(); ret.addAll(Lists.newArrayList( convertToString(dcsd.getLowValue()), convertToString(dcsd.getHighValue()), "" + dcsd.getNumNulls(), "" + dcsd.getNumDVs(),
bcsd.getNumTrues(), bcsd.getNumFalses()); } else if (csd.isSetDecimalStats()) { DecimalColumnStatsData dcsd = csd.getDecimalStats(); appendColumnStats(tableInfo, convertToString(dcsd.getLowValue()), convertToString(dcsd.getHighValue()), dcsd.getNumNulls(), dcsd.getNumDVs(),
@Test public void testMergeNonNullAndNullLowerValuesOldIsNull() { ColumnStatisticsObj oldObj = new ColumnStatisticsObj(); createData(oldObj, null, null); ColumnStatisticsObj newObj = new ColumnStatisticsObj(); createData(newObj, DECIMAL_3, null); merger.merge(oldObj, newObj); Assert.assertEquals(DECIMAL_3, oldObj.getStatsData().getDecimalStats().getLowValue()); }
@Test public void testMergeNonNullAndNullLowerValuesNewIsNull() { ColumnStatisticsObj oldObj = new ColumnStatisticsObj(); createData(oldObj, DECIMAL_3, null); ColumnStatisticsObj newObj = new ColumnStatisticsObj(); createData(newObj, null, null); merger.merge(oldObj, newObj); Assert.assertEquals(DECIMAL_3, oldObj.getStatsData().getDecimalStats().getLowValue()); }
@Test public void testMergeNonNullAndNullHigherValuesNewIsNull() { ColumnStatisticsObj oldObj = new ColumnStatisticsObj(); createData(oldObj, null, DECIMAL_3); ColumnStatisticsObj newObj = new ColumnStatisticsObj(); createData(newObj, null, null); merger.merge(oldObj, newObj); Assert.assertEquals(DECIMAL_3, oldObj.getStatsData().getDecimalStats().getHighValue()); }
@Test public void testMergeLowValuesSecondWins() { ColumnStatisticsObj oldObj = new ColumnStatisticsObj(); createData(oldObj, DECIMAL_5, null); ColumnStatisticsObj newObj = new ColumnStatisticsObj(); createData(newObj, DECIMAL_3, null); merger.merge(oldObj, newObj); Assert.assertEquals(DECIMAL_3, oldObj.getStatsData().getDecimalStats().getLowValue()); }
@Test public void testMergeHighValuesFirstWins() { ColumnStatisticsObj oldObj = new ColumnStatisticsObj(); createData(oldObj, null, DECIMAL_5); ColumnStatisticsObj newObj = new ColumnStatisticsObj(); createData(newObj, null, DECIMAL_3); merger.merge(oldObj, newObj); Assert.assertEquals(DECIMAL_5, oldObj.getStatsData().getDecimalStats().getHighValue()); }
@Test public void testMergeNonNullAndNullHigherValuesOldIsNull() { ColumnStatisticsObj oldObj = new ColumnStatisticsObj(); createData(oldObj, null, null); ColumnStatisticsObj newObj = new ColumnStatisticsObj(); createData(newObj, null, DECIMAL_3); merger.merge(oldObj, newObj); Assert.assertEquals(DECIMAL_3, oldObj.getStatsData().getDecimalStats().getHighValue()); }
@Test public void testMergeLowValuesFirstWins() { ColumnStatisticsObj oldObj = new ColumnStatisticsObj(); createData(oldObj, DECIMAL_3, null); ColumnStatisticsObj newObj = new ColumnStatisticsObj(); createData(newObj, DECIMAL_5, null); merger.merge(oldObj, newObj); Assert.assertEquals(DECIMAL_3, oldObj.getStatsData().getDecimalStats().getLowValue()); }
@Test public void testMergeHighValuesSecondWins() { ColumnStatisticsObj oldObj = new ColumnStatisticsObj(); createData(oldObj, null, DECIMAL_3); ColumnStatisticsObj newObj = new ColumnStatisticsObj(); createData(newObj, null, DECIMAL_5); merger.merge(oldObj, newObj); Assert.assertEquals(DECIMAL_5, oldObj.getStatsData().getDecimalStats().getHighValue()); }
} else if (colTypeLowerCase.startsWith(serdeConstants.DECIMAL_TYPE_NAME)) { cs.setAvgColLen(JavaDataModel.get().lengthOfDecimal()); cs.setCountDistint(csd.getDecimalStats().getNumDVs()); cs.setNumNulls(csd.getDecimalStats().getNumNulls()); Decimal highValue = csd.getDecimalStats().getHighValue(); Decimal lowValue = csd.getDecimalStats().getLowValue(); if (highValue != null && highValue.getUnscaled() != null && lowValue != null && lowValue.getUnscaled() != null) {
DecimalColumnStatsData decimalStatsData = columnStatistics.getStatsData().getDecimalStats(); Optional<BigDecimal> min = decimalStatsData.isSetLowValue() ? fromMetastoreDecimal(decimalStatsData.getLowValue()) : Optional.empty(); Optional<BigDecimal> max = decimalStatsData.isSetHighValue() ? fromMetastoreDecimal(decimalStatsData.getHighValue()) : Optional.empty();
bcsd.getNumTrues(), bcsd.getNumFalses()); } else if (csd.isSetDecimalStats()) { DecimalColumnStatsData dcsd = csd.getDecimalStats(); appendColumnStatsNoFormatting(colBuffer, convertToString(dcsd.getLowValue()), convertToString(dcsd.getHighValue()), dcsd.getNumNulls(), dcsd.getNumDVs(),
doubleStats.isSetHighValue() ? doubleStats.getHighValue() : null); } else if (statsObj.getStatsData().isSetDecimalStats()) { DecimalColumnStatsData decimalStats = statsObj.getStatsData().getDecimalStats(); String low = decimalStats.isSetLowValue() ? DecimalUtils.createJdoDecimalString(decimalStats.getLowValue()) : null; String high = decimalStats.isSetHighValue() ? DecimalUtils.createJdoDecimalString(decimalStats.getHighValue()) : null;
doubleStats.isSetHighValue() ? doubleStats.getHighValue() : null); } else if (statsObj.getStatsData().isSetDecimalStats()) { DecimalColumnStatsData decimalStats = statsObj.getStatsData().getDecimalStats(); String low = decimalStats.isSetLowValue() ? DecimalUtils.createJdoDecimalString(decimalStats.getLowValue()) : null; String high = decimalStats.isSetHighValue() ? DecimalUtils.createJdoDecimalString(decimalStats.getHighValue()) : null;