public static ColumnStatisticsObj getPartitionColumnStatisticsObj( MPartitionColumnStatistics mStatsObj, boolean enableBitVector) { ColumnStatisticsObj statsObj = new ColumnStatisticsObj(); statsObj.setColType(mStatsObj.getColType()); statsObj.setColName(mStatsObj.getColName()); String colType = mStatsObj.getColType().toLowerCase(); ColumnStatisticsData colStatsData = new ColumnStatisticsData(); boolStats.setNumFalses(mStatsObj.getNumFalses()); boolStats.setNumTrues(mStatsObj.getNumTrues()); boolStats.setNumNulls(mStatsObj.getNumNulls()); colStatsData.setBooleanStats(boolStats); } else if (colType.equals("string") || colType.startsWith("varchar") || colType.startsWith("char")) { StringColumnStatsDataInspector stringStats = new StringColumnStatsDataInspector(); stringStats.setNumNulls(mStatsObj.getNumNulls()); stringStats.setAvgColLen(mStatsObj.getAvgColLen()); stringStats.setMaxColLen(mStatsObj.getMaxColLen()); stringStats.setNumDVs(mStatsObj.getNumDVs()); stringStats.setBitVectors((mStatsObj.getBitVector()==null||!enableBitVector)? null : mStatsObj.getBitVector()); colStatsData.setStringStats(stringStats); } else if (colType.equals("binary")) { BinaryColumnStatsData binaryStats = new BinaryColumnStatsData(); binaryStats.setNumNulls(mStatsObj.getNumNulls()); binaryStats.setAvgColLen(mStatsObj.getAvgColLen()); binaryStats.setMaxColLen(mStatsObj.getMaxColLen()); colStatsData.setBinaryStats(binaryStats); } else if (colType.equals("tinyint") || colType.equals("smallint") || colType.equals("timestamp")) {
public static ColumnStatisticsDesc getPartitionColumnStatisticsDesc( MPartitionColumnStatistics mStatsObj) { ColumnStatisticsDesc statsDesc = new ColumnStatisticsDesc(); statsDesc.setIsTblLevel(false); statsDesc.setCatName(mStatsObj.getCatName()); statsDesc.setDbName(mStatsObj.getDbName()); statsDesc.setTableName(mStatsObj.getTableName()); statsDesc.setPartName(mStatsObj.getPartitionName()); statsDesc.setLastAnalyzed(mStatsObj.getLastAnalyzed()); return statsDesc; }
public static void setFieldsIntoOldStats( MPartitionColumnStatistics mStatsObj, MPartitionColumnStatistics oldStatsObj) { if (mStatsObj.getAvgColLen() != null) { oldStatsObj.setAvgColLen(mStatsObj.getAvgColLen()); if (mStatsObj.getLongHighValue() != null) { oldStatsObj.setLongHighValue(mStatsObj.getLongHighValue()); if (mStatsObj.getDoubleHighValue() != null) { oldStatsObj.setDoubleHighValue(mStatsObj.getDoubleHighValue()); oldStatsObj.setLastAnalyzed(mStatsObj.getLastAnalyzed()); if (mStatsObj.getLongLowValue() != null) { oldStatsObj.setLongLowValue(mStatsObj.getLongLowValue()); if (mStatsObj.getDoubleLowValue() != null) { oldStatsObj.setDoubleLowValue(mStatsObj.getDoubleLowValue()); if (mStatsObj.getDecimalLowValue() != null) { oldStatsObj.setDecimalLowValue(mStatsObj.getDecimalLowValue()); if (mStatsObj.getDecimalHighValue() != null) { oldStatsObj.setDecimalHighValue(mStatsObj.getDecimalHighValue()); if (mStatsObj.getMaxColLen() != null) { oldStatsObj.setMaxColLen(mStatsObj.getMaxColLen()); if (mStatsObj.getNumDVs() != null) { oldStatsObj.setNumDVs(mStatsObj.getNumDVs());
private void writeMPartitionColumnStatistics(Table table, Partition partition, MPartitionColumnStatistics mStatsObj, MPartitionColumnStatistics oldStats) throws NoSuchObjectException, MetaException, InvalidObjectException, InvalidInputException { String catName = mStatsObj.getCatName(); String dbName = mStatsObj.getDbName(); String tableName = mStatsObj.getTableName(); String partName = mStatsObj.getPartitionName(); String colName = mStatsObj.getColName(); List<FieldSchema> colList = partition.getSd().getCols(); for (FieldSchema col : colList) { if (col.getName().equals(mStatsObj.getColName())) { foundCol = true; break; StatObjectConverter.setFieldsIntoOldStats(mStatsObj, oldStats); } else { if (sqlGenerator.getDbProduct().equals(DatabaseProduct.POSTGRES) && mStatsObj.getBitVector() == null) { mStatsObj.setBitVector(new byte[] {'H','L'});
String dbName = mStatsObj.getDbName(); String tableName = mStatsObj.getTableName(); String partName = mStatsObj.getPartitionName(); String colName = mStatsObj.getColName(); MTable mTable = getMTable(mStatsObj.getDbName(), mStatsObj.getTableName()); boolean foundCol = false; getMPartition(mStatsObj.getDbName(), mStatsObj.getTableName(), partVal); if (mCol.getName().equals(mStatsObj.getColName().trim())) { foundCol = true; break; partName, partVal, colName); if (oldStatsObj != null) { oldStatsObj.setAvgColLen(mStatsObj.getAvgColLen()); oldStatsObj.setLongHighValue(mStatsObj.getLongHighValue()); oldStatsObj.setDoubleHighValue(mStatsObj.getDoubleHighValue()); oldStatsObj.setLastAnalyzed(mStatsObj.getLastAnalyzed()); oldStatsObj.setLongLowValue(mStatsObj.getLongLowValue()); oldStatsObj.setDoubleLowValue(mStatsObj.getDoubleLowValue()); oldStatsObj.setMaxColLen(mStatsObj.getMaxColLen()); oldStatsObj.setNumDVs(mStatsObj.getNumDVs()); oldStatsObj.setNumFalses(mStatsObj.getNumFalses()); oldStatsObj.setNumTrues(mStatsObj.getNumTrues()); oldStatsObj.setNumNulls(mStatsObj.getNumNulls()); } else { pm.makePersistent(mStatsObj);
MPartitionColumnStatistics mColStats = new MPartitionColumnStatistics(); mColStats.setPartition(partition); mColStats.setCatName(statsDesc.isSetCatName() ? statsDesc.getCatName() : DEFAULT_CATALOG_NAME); mColStats.setDbName(statsDesc.getDbName()); mColStats.setTableName(statsDesc.getTableName()); mColStats.setPartitionName(statsDesc.getPartName()); mColStats.setLastAnalyzed(statsDesc.getLastAnalyzed()); mColStats.setColName(statsObj.getColName()); mColStats.setColType(statsObj.getColType()); mColStats.setBooleanStats( boolStats.isSetNumTrues() ? boolStats.getNumTrues() : null, boolStats.isSetNumFalses() ? boolStats.getNumFalses() : null, } else if (statsObj.getStatsData().isSetLongStats()) { LongColumnStatsData longStats = statsObj.getStatsData().getLongStats(); mColStats.setLongStats( longStats.isSetNumNulls() ? longStats.getNumNulls() : null, longStats.isSetNumDVs() ? longStats.getNumDVs() : null, } else if (statsObj.getStatsData().isSetDoubleStats()) { DoubleColumnStatsData doubleStats = statsObj.getStatsData().getDoubleStats(); mColStats.setDoubleStats( doubleStats.isSetNumNulls() ? doubleStats.getNumNulls() : null, doubleStats.isSetNumDVs() ? doubleStats.getNumDVs() : null, String low = decimalStats.isSetLowValue() ? DecimalUtils.createJdoDecimalString(decimalStats.getLowValue()) : null; String high = decimalStats.isSetHighValue() ? DecimalUtils.createJdoDecimalString(decimalStats.getHighValue()) : null; mColStats.setDecimalStats(
private void writeMPartitionColumnStatistics(Table table, Partition partition, MPartitionColumnStatistics mStatsObj) throws NoSuchObjectException, MetaException, InvalidObjectException, InvalidInputException { String dbName = mStatsObj.getDbName(); String tableName = mStatsObj.getTableName(); String partName = mStatsObj.getPartitionName(); String colName = mStatsObj.getColName(); List<FieldSchema> colList = partition.getSd().getCols(); for (FieldSchema col : colList) { if (col.getName().equals(mStatsObj.getColName().trim())) { foundCol = true; break;
boolean isLast = i == mStats.size(); MPartitionColumnStatistics mStatsObj = isLast ? null : mStats.get(i); String partName = isLast ? null : mStatsObj.getPartitionName(); if (isLast || !partName.equals(lastPartName)) { if (i != 0) {
/** * Get partition's column stats * * @param table * @param partitionName * @param colNames * @return Map of column name and its stats * @throws NoSuchObjectException * @throws MetaException */ private Map<String, MPartitionColumnStatistics> getPartitionColStats(Table table, String partitionName, List<String> colNames) throws NoSuchObjectException, MetaException { Map<String, MPartitionColumnStatistics> statsMap = Maps.newHashMap(); QueryWrapper queryWrapper = new QueryWrapper(); try { List<MPartitionColumnStatistics> stats = getMPartitionColumnStatistics(table, Lists.newArrayList(partitionName), colNames, queryWrapper); for(MPartitionColumnStatistics cStat : stats) { statsMap.put(cStat.getColName(), cStat); } } finally { queryWrapper.close(); } return statsMap; }
public static void setFieldsIntoOldStats( MPartitionColumnStatistics mStatsObj, MPartitionColumnStatistics oldStatsObj) { if (mStatsObj.getAvgColLen() != null) { oldStatsObj.setAvgColLen(mStatsObj.getAvgColLen()); if (mStatsObj.getLongHighValue() != null) { oldStatsObj.setLongHighValue(mStatsObj.getLongHighValue()); if (mStatsObj.getDoubleHighValue() != null) { oldStatsObj.setDoubleHighValue(mStatsObj.getDoubleHighValue()); oldStatsObj.setLastAnalyzed(mStatsObj.getLastAnalyzed()); if (mStatsObj.getLongLowValue() != null) { oldStatsObj.setLongLowValue(mStatsObj.getLongLowValue()); if (mStatsObj.getDoubleLowValue() != null) { oldStatsObj.setDoubleLowValue(mStatsObj.getDoubleLowValue()); if (mStatsObj.getDecimalLowValue() != null) { oldStatsObj.setDecimalLowValue(mStatsObj.getDecimalLowValue()); if (mStatsObj.getDecimalHighValue() != null) { oldStatsObj.setDecimalHighValue(mStatsObj.getDecimalHighValue()); if (mStatsObj.getMaxColLen() != null) { oldStatsObj.setMaxColLen(mStatsObj.getMaxColLen()); if (mStatsObj.getNumDVs() != null) { oldStatsObj.setNumDVs(mStatsObj.getNumDVs());
MPartitionColumnStatistics mColStats = new MPartitionColumnStatistics(); mColStats.setPartition(partition); mColStats.setDbName(statsDesc.getDbName()); mColStats.setTableName(statsDesc.getTableName()); mColStats.setPartitionName(statsDesc.getPartName()); mColStats.setLastAnalyzed(statsDesc.getLastAnalyzed()); mColStats.setColName(statsObj.getColName()); mColStats.setColType(statsObj.getColType()); mColStats.setBooleanStats(boolStats.getNumTrues(), boolStats.getNumFalses(), boolStats.getNumNulls()); } else if (statsObj.getStatsData().isSetLongStats()) { LongColumnStatsData longStats = statsObj.getStatsData().getLongStats(); mColStats.setLongStats(longStats.getNumNulls(), longStats.getNumDVs(), longStats.getLowValue(), longStats.getHighValue()); } else if (statsObj.getStatsData().isSetDoubleStats()) { DoubleColumnStatsData doubleStats = statsObj.getStatsData().getDoubleStats(); mColStats.setDoubleStats(doubleStats.getNumNulls(), doubleStats.getNumDVs(), doubleStats.getLowValue(), doubleStats.getHighValue()); } else if (statsObj.getStatsData().isSetStringStats()) { StringColumnStatsData stringStats = statsObj.getStatsData().getStringStats(); mColStats.setStringStats(stringStats.getNumNulls(), stringStats.getNumDVs(), stringStats.getMaxColLen(), stringStats.getAvgColLen()); } else if (statsObj.getStatsData().isSetBinaryStats()) { BinaryColumnStatsData binaryStats = statsObj.getStatsData().getBinaryStats(); mColStats.setBinaryStats(binaryStats.getNumNulls(), binaryStats.getMaxColLen(), binaryStats.getAvgColLen());
private void writeMPartitionColumnStatistics(Table table, Partition partition, MPartitionColumnStatistics mStatsObj, MPartitionColumnStatistics oldStats) throws NoSuchObjectException, MetaException, InvalidObjectException, InvalidInputException { String catName = mStatsObj.getCatName(); String dbName = mStatsObj.getDbName(); String tableName = mStatsObj.getTableName(); String partName = mStatsObj.getPartitionName(); String colName = mStatsObj.getColName(); List<FieldSchema> colList = partition.getSd().getCols(); for (FieldSchema col : colList) { if (col.getName().equals(mStatsObj.getColName())) { foundCol = true; break; StatObjectConverter.setFieldsIntoOldStats(mStatsObj, oldStats); } else { if (sqlGenerator.getDbProduct().equals(DatabaseProduct.POSTGRES) && mStatsObj.getBitVector() == null) { mStatsObj.setBitVector(new byte[] {'H','L'});
private void writeMPartitionColumnStatistics(Table table, Partition partition, MPartitionColumnStatistics mStatsObj) throws NoSuchObjectException, MetaException, InvalidObjectException, InvalidInputException { String dbName = mStatsObj.getDbName(); String tableName = mStatsObj.getTableName(); String partName = mStatsObj.getPartitionName(); String colName = mStatsObj.getColName(); List<FieldSchema> colList = partition.getSd().getCols(); for (FieldSchema col : colList) { if (col.getName().equals(mStatsObj.getColName().trim())) { foundCol = true; break;
boolean isLast = i == mStats.size(); MPartitionColumnStatistics mStatsObj = isLast ? null : mStats.get(i); String partName = isLast ? null : (String)mStatsObj.getPartitionName(); if (isLast || !partName.equals(lastPartName)) { if (i != 0) {
/** * Get partition's column stats * * @param table * @param partitionName * @param colNames * @return Map of column name and its stats * @throws NoSuchObjectException * @throws MetaException */ private Map<String, MPartitionColumnStatistics> getPartitionColStats(Table table, String partitionName, List<String> colNames) throws NoSuchObjectException, MetaException { Map<String, MPartitionColumnStatistics> statsMap = Maps.newHashMap(); QueryWrapper queryWrapper = new QueryWrapper(); try { List<MPartitionColumnStatistics> stats = getMPartitionColumnStatistics(table, Lists.newArrayList(partitionName), colNames, queryWrapper); for(MPartitionColumnStatistics cStat : stats) { statsMap.put(cStat.getColName(), cStat); } } finally { queryWrapper.close(); } return statsMap; }
public static void setFieldsIntoOldStats( MPartitionColumnStatistics mStatsObj, MPartitionColumnStatistics oldStatsObj) { if (mStatsObj.getAvgColLen() != null) { oldStatsObj.setAvgColLen(mStatsObj.getAvgColLen()); if (mStatsObj.getLongHighValue() != null) { oldStatsObj.setLongHighValue(mStatsObj.getLongHighValue()); if (mStatsObj.getDoubleHighValue() != null) { oldStatsObj.setDoubleHighValue(mStatsObj.getDoubleHighValue()); oldStatsObj.setLastAnalyzed(mStatsObj.getLastAnalyzed()); if (mStatsObj.getLongLowValue() != null) { oldStatsObj.setLongLowValue(mStatsObj.getLongLowValue()); if (mStatsObj.getDoubleLowValue() != null) { oldStatsObj.setDoubleLowValue(mStatsObj.getDoubleLowValue()); if (mStatsObj.getDecimalLowValue() != null) { oldStatsObj.setDecimalLowValue(mStatsObj.getDecimalLowValue()); if (mStatsObj.getDecimalHighValue() != null) { oldStatsObj.setDecimalHighValue(mStatsObj.getDecimalHighValue()); if (mStatsObj.getMaxColLen() != null) { oldStatsObj.setMaxColLen(mStatsObj.getMaxColLen()); if (mStatsObj.getNumDVs() != null) { oldStatsObj.setNumDVs(mStatsObj.getNumDVs());
MPartitionColumnStatistics mColStats = new MPartitionColumnStatistics(); mColStats.setPartition(partition); mColStats.setDbName(statsDesc.getDbName()); mColStats.setTableName(statsDesc.getTableName()); mColStats.setPartitionName(statsDesc.getPartName()); mColStats.setLastAnalyzed(statsDesc.getLastAnalyzed()); mColStats.setColName(statsObj.getColName()); mColStats.setColType(statsObj.getColType()); mColStats.setBooleanStats( boolStats.isSetNumTrues() ? boolStats.getNumTrues() : null, boolStats.isSetNumFalses() ? boolStats.getNumFalses() : null, } else if (statsObj.getStatsData().isSetLongStats()) { LongColumnStatsData longStats = statsObj.getStatsData().getLongStats(); mColStats.setLongStats( longStats.isSetNumNulls() ? longStats.getNumNulls() : null, longStats.isSetNumDVs() ? longStats.getNumDVs() : null, } else if (statsObj.getStatsData().isSetDoubleStats()) { DoubleColumnStatsData doubleStats = statsObj.getStatsData().getDoubleStats(); mColStats.setDoubleStats( doubleStats.isSetNumNulls() ? doubleStats.getNumNulls() : null, doubleStats.isSetNumDVs() ? doubleStats.getNumDVs() : null, String low = decimalStats.isSetLowValue() ? createJdoDecimalString(decimalStats.getLowValue()) : null; String high = decimalStats.isSetHighValue() ? createJdoDecimalString(decimalStats.getHighValue()) : null; mColStats.setDecimalStats( decimalStats.isSetNumNulls() ? decimalStats.getNumNulls() : null,
statsObj.setColType(mStatsObj.getColType()); statsObj.setColName(mStatsObj.getColName()); String colType = mStatsObj.getColType(); ColumnStatisticsData colStatsData = new ColumnStatisticsData(); boolStats.setNumFalses(mStatsObj.getNumFalses()); boolStats.setNumTrues(mStatsObj.getNumTrues()); boolStats.setNumNulls(mStatsObj.getNumNulls()); colStatsData.setBooleanStats(boolStats); } else if (colType.equalsIgnoreCase("string")) { StringColumnStatsData stringStats = new StringColumnStatsData(); stringStats.setNumNulls(mStatsObj.getNumNulls()); stringStats.setAvgColLen(mStatsObj.getAvgColLen()); stringStats.setMaxColLen(mStatsObj.getMaxColLen()); stringStats.setNumDVs(mStatsObj.getNumDVs()); colStatsData.setStringStats(stringStats); } else if (colType.equalsIgnoreCase("binary")) { BinaryColumnStatsData binaryStats = new BinaryColumnStatsData(); binaryStats.setNumNulls(mStatsObj.getNumNulls()); binaryStats.setAvgColLen(mStatsObj.getAvgColLen()); binaryStats.setMaxColLen(mStatsObj.getMaxColLen()); colStatsData.setBinaryStats(binaryStats); } else if (colType.equalsIgnoreCase("tinyint") || colType.equalsIgnoreCase("smallint") || colType.equalsIgnoreCase("timestamp")) { LongColumnStatsData longStats = new LongColumnStatsData(); longStats.setNumNulls(mStatsObj.getNumNulls()); longStats.setHighValue(mStatsObj.getLongHighValue()); longStats.setLowValue(mStatsObj.getLongLowValue());
private ColumnStatisticsDesc getPartitionColumnStatisticsDesc( MPartitionColumnStatistics mStatsObj) { ColumnStatisticsDesc statsDesc = new ColumnStatisticsDesc(); statsDesc.setIsTblLevel(false); statsDesc.setDbName(mStatsObj.getDbName()); statsDesc.setTableName(mStatsObj.getTableName()); statsDesc.setPartName(mStatsObj.getPartitionName()); statsDesc.setLastAnalyzed(mStatsObj.getLastAnalyzed()); return statsDesc; }
boolean isLast = i == mStats.size(); MPartitionColumnStatistics mStatsObj = isLast ? null : mStats.get(i); String partName = isLast ? null : (String)mStatsObj.getPartitionName(); if (isLast || !partName.equals(lastPartName)) { if (i != 0) {