http://git-wip-us.apache.org/repos/asf/hive/blob/133d3c47/metastore/src/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java ---------------------------------------------------------------------- diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java b/metastore/src/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java deleted file mode 100644 index 7c8054b..0000000 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java +++ /dev/null @@ -1,888 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.hadoop.hive.metastore; - -import java.math.BigDecimal; -import java.math.BigInteger; -import java.nio.ByteBuffer; - -import org.apache.hadoop.hive.metastore.api.BinaryColumnStatsData; -import org.apache.hadoop.hive.metastore.api.BooleanColumnStatsData; -import org.apache.hadoop.hive.metastore.api.ColumnStatisticsData; -import org.apache.hadoop.hive.metastore.api.ColumnStatisticsData._Fields; -import org.apache.hadoop.hive.metastore.api.ColumnStatisticsDesc; -import org.apache.hadoop.hive.metastore.api.ColumnStatisticsObj; -import org.apache.hadoop.hive.metastore.api.Date; -import org.apache.hadoop.hive.metastore.api.DateColumnStatsData; -import org.apache.hadoop.hive.metastore.api.Decimal; -import org.apache.hadoop.hive.metastore.api.DecimalColumnStatsData; -import org.apache.hadoop.hive.metastore.api.DoubleColumnStatsData; -import org.apache.hadoop.hive.metastore.api.InvalidObjectException; -import org.apache.hadoop.hive.metastore.api.LongColumnStatsData; -import org.apache.hadoop.hive.metastore.api.MetaException; -import org.apache.hadoop.hive.metastore.api.NoSuchObjectException; -import org.apache.hadoop.hive.metastore.api.StringColumnStatsData; -import org.apache.hadoop.hive.metastore.columnstats.cache.DateColumnStatsDataInspector; -import org.apache.hadoop.hive.metastore.columnstats.cache.DecimalColumnStatsDataInspector; -import org.apache.hadoop.hive.metastore.columnstats.cache.DoubleColumnStatsDataInspector; -import org.apache.hadoop.hive.metastore.columnstats.cache.LongColumnStatsDataInspector; -import org.apache.hadoop.hive.metastore.columnstats.cache.StringColumnStatsDataInspector; -import org.apache.hadoop.hive.metastore.model.MPartition; -import org.apache.hadoop.hive.metastore.model.MPartitionColumnStatistics; -import org.apache.hadoop.hive.metastore.model.MTable; -import org.apache.hadoop.hive.metastore.model.MTableColumnStatistics; - -/** - * This class contains conversion logic that creates Thrift stat objects from - * JDO stat objects and plain arrays from DirectSQL. - * It is hidden here so that we wouldn't have to look at it in elsewhere. - */ -public class StatObjectConverter { - // JDO - public static MTableColumnStatistics convertToMTableColumnStatistics(MTable table, - ColumnStatisticsDesc statsDesc, ColumnStatisticsObj statsObj) - throws NoSuchObjectException, MetaException, InvalidObjectException { - if (statsObj == null || statsDesc == null) { - throw new InvalidObjectException("Invalid column stats object"); - } - - MTableColumnStatistics mColStats = new MTableColumnStatistics(); - mColStats.setTable(table); - mColStats.setDbName(statsDesc.getDbName()); - mColStats.setTableName(statsDesc.getTableName()); - mColStats.setLastAnalyzed(statsDesc.getLastAnalyzed()); - mColStats.setColName(statsObj.getColName()); - mColStats.setColType(statsObj.getColType()); - - if (statsObj.getStatsData().isSetBooleanStats()) { - BooleanColumnStatsData boolStats = statsObj.getStatsData().getBooleanStats(); - mColStats.setBooleanStats( - boolStats.isSetNumTrues() ? boolStats.getNumTrues() : null, - boolStats.isSetNumFalses() ? boolStats.getNumFalses() : null, - boolStats.isSetNumNulls() ? boolStats.getNumNulls() : null); - } else if (statsObj.getStatsData().isSetLongStats()) { - LongColumnStatsData longStats = statsObj.getStatsData().getLongStats(); - mColStats.setLongStats( - longStats.isSetNumNulls() ? longStats.getNumNulls() : null, - longStats.isSetNumDVs() ? longStats.getNumDVs() : null, - longStats.isSetBitVectors() ? longStats.getBitVectors() : null, - longStats.isSetLowValue() ? longStats.getLowValue() : null, - longStats.isSetHighValue() ? longStats.getHighValue() : null); - } else if (statsObj.getStatsData().isSetDoubleStats()) { - DoubleColumnStatsData doubleStats = statsObj.getStatsData().getDoubleStats(); - mColStats.setDoubleStats( - doubleStats.isSetNumNulls() ? doubleStats.getNumNulls() : null, - doubleStats.isSetNumDVs() ? doubleStats.getNumDVs() : null, - doubleStats.isSetBitVectors() ? doubleStats.getBitVectors() : null, - doubleStats.isSetLowValue() ? doubleStats.getLowValue() : null, - doubleStats.isSetHighValue() ? doubleStats.getHighValue() : null); - } else if (statsObj.getStatsData().isSetDecimalStats()) { - DecimalColumnStatsData decimalStats = statsObj.getStatsData().getDecimalStats(); - String low = decimalStats.isSetLowValue() ? createJdoDecimalString(decimalStats.getLowValue()) : null; - String high = decimalStats.isSetHighValue() ? createJdoDecimalString(decimalStats.getHighValue()) : null; - mColStats.setDecimalStats( - decimalStats.isSetNumNulls() ? decimalStats.getNumNulls() : null, - decimalStats.isSetNumDVs() ? decimalStats.getNumDVs() : null, - decimalStats.isSetBitVectors() ? decimalStats.getBitVectors() : null, - low, high); - } else if (statsObj.getStatsData().isSetStringStats()) { - StringColumnStatsData stringStats = statsObj.getStatsData().getStringStats(); - mColStats.setStringStats( - stringStats.isSetNumNulls() ? stringStats.getNumNulls() : null, - stringStats.isSetNumDVs() ? stringStats.getNumDVs() : null, - stringStats.isSetBitVectors() ? stringStats.getBitVectors() : null, - stringStats.isSetMaxColLen() ? stringStats.getMaxColLen() : null, - stringStats.isSetAvgColLen() ? stringStats.getAvgColLen() : null); - } else if (statsObj.getStatsData().isSetBinaryStats()) { - BinaryColumnStatsData binaryStats = statsObj.getStatsData().getBinaryStats(); - mColStats.setBinaryStats( - binaryStats.isSetNumNulls() ? binaryStats.getNumNulls() : null, - binaryStats.isSetMaxColLen() ? binaryStats.getMaxColLen() : null, - binaryStats.isSetAvgColLen() ? binaryStats.getAvgColLen() : null); - } else if (statsObj.getStatsData().isSetDateStats()) { - DateColumnStatsData dateStats = statsObj.getStatsData().getDateStats(); - mColStats.setDateStats( - dateStats.isSetNumNulls() ? dateStats.getNumNulls() : null, - dateStats.isSetNumDVs() ? dateStats.getNumDVs() : null, - dateStats.isSetBitVectors() ? dateStats.getBitVectors() : null, - dateStats.isSetLowValue() ? dateStats.getLowValue().getDaysSinceEpoch() : null, - dateStats.isSetHighValue() ? dateStats.getHighValue().getDaysSinceEpoch() : null); - } - return mColStats; - } - - public static void setFieldsIntoOldStats( - MTableColumnStatistics mStatsObj, MTableColumnStatistics oldStatsObj) { - if (mStatsObj.getAvgColLen() != null) { - oldStatsObj.setAvgColLen(mStatsObj.getAvgColLen()); - } - if (mStatsObj.getLongHighValue() != null) { - oldStatsObj.setLongHighValue(mStatsObj.getLongHighValue()); - } - if (mStatsObj.getLongLowValue() != null) { - oldStatsObj.setLongLowValue(mStatsObj.getLongLowValue()); - } - if (mStatsObj.getDoubleLowValue() != null) { - oldStatsObj.setDoubleLowValue(mStatsObj.getDoubleLowValue()); - } - if (mStatsObj.getDoubleHighValue() != null) { - oldStatsObj.setDoubleHighValue(mStatsObj.getDoubleHighValue()); - } - 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()); - } - if (mStatsObj.getBitVector() != null) { - oldStatsObj.setBitVector(mStatsObj.getBitVector()); - } - if (mStatsObj.getNumFalses() != null) { - oldStatsObj.setNumFalses(mStatsObj.getNumFalses()); - } - if (mStatsObj.getNumTrues() != null) { - oldStatsObj.setNumTrues(mStatsObj.getNumTrues()); - } - if (mStatsObj.getNumNulls() != null) { - oldStatsObj.setNumNulls(mStatsObj.getNumNulls()); - } - oldStatsObj.setLastAnalyzed(mStatsObj.getLastAnalyzed()); - } - - 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()); - } - if (mStatsObj.getBitVector() != null) { - oldStatsObj.setBitVector(mStatsObj.getBitVector()); - } - if (mStatsObj.getNumFalses() != null) { - oldStatsObj.setNumFalses(mStatsObj.getNumFalses()); - } - if (mStatsObj.getNumTrues() != null) { - oldStatsObj.setNumTrues(mStatsObj.getNumTrues()); - } - if (mStatsObj.getNumNulls() != null) { - oldStatsObj.setNumNulls(mStatsObj.getNumNulls()); - } - } - - public static ColumnStatisticsObj getTableColumnStatisticsObj( - MTableColumnStatistics mStatsObj, boolean enableBitVector) { - ColumnStatisticsObj statsObj = new ColumnStatisticsObj(); - statsObj.setColType(mStatsObj.getColType()); - statsObj.setColName(mStatsObj.getColName()); - String colType = mStatsObj.getColType().toLowerCase(); - ColumnStatisticsData colStatsData = new ColumnStatisticsData(); - - if (colType.equals("boolean")) { - BooleanColumnStatsData boolStats = new BooleanColumnStatsData(); - 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("bigint") || colType.equals("int") || - colType.equals("smallint") || colType.equals("tinyint") || - colType.equals("timestamp")) { - LongColumnStatsDataInspector longStats = new LongColumnStatsDataInspector(); - longStats.setNumNulls(mStatsObj.getNumNulls()); - Long longHighValue = mStatsObj.getLongHighValue(); - if (longHighValue != null) { - longStats.setHighValue(longHighValue); - } - Long longLowValue = mStatsObj.getLongLowValue(); - if (longLowValue != null) { - longStats.setLowValue(longLowValue); - } - longStats.setNumDVs(mStatsObj.getNumDVs()); - longStats.setBitVectors((mStatsObj.getBitVector()==null||!enableBitVector)? null : mStatsObj.getBitVector()); - colStatsData.setLongStats(longStats); - } else if (colType.equals("double") || colType.equals("float")) { - DoubleColumnStatsDataInspector doubleStats = new DoubleColumnStatsDataInspector(); - doubleStats.setNumNulls(mStatsObj.getNumNulls()); - Double doubleHighValue = mStatsObj.getDoubleHighValue(); - if (doubleHighValue != null) { - doubleStats.setHighValue(doubleHighValue); - } - Double doubleLowValue = mStatsObj.getDoubleLowValue(); - if (doubleLowValue != null) { - doubleStats.setLowValue(doubleLowValue); - } - doubleStats.setNumDVs(mStatsObj.getNumDVs()); - doubleStats.setBitVectors((mStatsObj.getBitVector()==null||!enableBitVector)? null : mStatsObj.getBitVector()); - colStatsData.setDoubleStats(doubleStats); - } else if (colType.startsWith("decimal")) { - DecimalColumnStatsDataInspector decimalStats = new DecimalColumnStatsDataInspector(); - decimalStats.setNumNulls(mStatsObj.getNumNulls()); - String decimalHighValue = mStatsObj.getDecimalHighValue(); - if (decimalHighValue != null) { - decimalStats.setHighValue(createThriftDecimal(decimalHighValue)); - } - String decimalLowValue = mStatsObj.getDecimalLowValue(); - if (decimalLowValue != null) { - decimalStats.setLowValue(createThriftDecimal(decimalLowValue)); - } - decimalStats.setNumDVs(mStatsObj.getNumDVs()); - decimalStats.setBitVectors((mStatsObj.getBitVector()==null||!enableBitVector)? null : mStatsObj.getBitVector()); - colStatsData.setDecimalStats(decimalStats); - } else if (colType.equals("date")) { - DateColumnStatsDataInspector dateStats = new DateColumnStatsDataInspector(); - dateStats.setNumNulls(mStatsObj.getNumNulls()); - Long highValue = mStatsObj.getLongHighValue(); - if (highValue != null) { - dateStats.setHighValue(new Date(highValue)); - } - Long lowValue = mStatsObj.getLongLowValue(); - if (lowValue != null) { - dateStats.setLowValue(new Date(lowValue)); - } - dateStats.setNumDVs(mStatsObj.getNumDVs()); - dateStats.setBitVectors((mStatsObj.getBitVector()==null||!enableBitVector)? null : mStatsObj.getBitVector()); - colStatsData.setDateStats(dateStats); - } - statsObj.setStatsData(colStatsData); - return statsObj; - } - - public static ColumnStatisticsDesc getTableColumnStatisticsDesc( - MTableColumnStatistics mStatsObj) { - ColumnStatisticsDesc statsDesc = new ColumnStatisticsDesc(); - statsDesc.setIsTblLevel(true); - statsDesc.setDbName(mStatsObj.getDbName()); - statsDesc.setTableName(mStatsObj.getTableName()); - statsDesc.setLastAnalyzed(mStatsObj.getLastAnalyzed()); - return statsDesc; - } - - public static MPartitionColumnStatistics convertToMPartitionColumnStatistics( - MPartition partition, ColumnStatisticsDesc statsDesc, ColumnStatisticsObj statsObj) - throws MetaException, NoSuchObjectException { - if (statsDesc == null || statsObj == null) { - return null; - } - - 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()); - - if (statsObj.getStatsData().isSetBooleanStats()) { - BooleanColumnStatsData boolStats = statsObj.getStatsData().getBooleanStats(); - mColStats.setBooleanStats( - boolStats.isSetNumTrues() ? boolStats.getNumTrues() : null, - boolStats.isSetNumFalses() ? boolStats.getNumFalses() : null, - boolStats.isSetNumNulls() ? boolStats.getNumNulls() : null); - } else if (statsObj.getStatsData().isSetLongStats()) { - LongColumnStatsData longStats = statsObj.getStatsData().getLongStats(); - mColStats.setLongStats( - longStats.isSetNumNulls() ? longStats.getNumNulls() : null, - longStats.isSetNumDVs() ? longStats.getNumDVs() : null, - longStats.isSetBitVectors() ? longStats.getBitVectors() : null, - longStats.isSetLowValue() ? longStats.getLowValue() : null, - longStats.isSetHighValue() ? longStats.getHighValue() : null); - } else if (statsObj.getStatsData().isSetDoubleStats()) { - DoubleColumnStatsData doubleStats = statsObj.getStatsData().getDoubleStats(); - mColStats.setDoubleStats( - doubleStats.isSetNumNulls() ? doubleStats.getNumNulls() : null, - doubleStats.isSetNumDVs() ? doubleStats.getNumDVs() : null, - doubleStats.isSetBitVectors() ? doubleStats.getBitVectors() : null, - doubleStats.isSetLowValue() ? doubleStats.getLowValue() : null, - doubleStats.isSetHighValue() ? doubleStats.getHighValue() : null); - } else if (statsObj.getStatsData().isSetDecimalStats()) { - DecimalColumnStatsData decimalStats = statsObj.getStatsData().getDecimalStats(); - String low = decimalStats.isSetLowValue() ? createJdoDecimalString(decimalStats.getLowValue()) : null; - String high = decimalStats.isSetHighValue() ? createJdoDecimalString(decimalStats.getHighValue()) : null; - mColStats.setDecimalStats( - decimalStats.isSetNumNulls() ? decimalStats.getNumNulls() : null, - decimalStats.isSetNumDVs() ? decimalStats.getNumDVs() : null, - decimalStats.isSetBitVectors() ? decimalStats.getBitVectors() : null, - low, high); - } else if (statsObj.getStatsData().isSetStringStats()) { - StringColumnStatsData stringStats = statsObj.getStatsData().getStringStats(); - mColStats.setStringStats( - stringStats.isSetNumNulls() ? stringStats.getNumNulls() : null, - stringStats.isSetNumDVs() ? stringStats.getNumDVs() : null, - stringStats.isSetBitVectors() ? stringStats.getBitVectors() : null, - stringStats.isSetMaxColLen() ? stringStats.getMaxColLen() : null, - stringStats.isSetAvgColLen() ? stringStats.getAvgColLen() : null); - } else if (statsObj.getStatsData().isSetBinaryStats()) { - BinaryColumnStatsData binaryStats = statsObj.getStatsData().getBinaryStats(); - mColStats.setBinaryStats( - binaryStats.isSetNumNulls() ? binaryStats.getNumNulls() : null, - binaryStats.isSetMaxColLen() ? binaryStats.getMaxColLen() : null, - binaryStats.isSetAvgColLen() ? binaryStats.getAvgColLen() : null); - } else if (statsObj.getStatsData().isSetDateStats()) { - DateColumnStatsData dateStats = statsObj.getStatsData().getDateStats(); - mColStats.setDateStats( - dateStats.isSetNumNulls() ? dateStats.getNumNulls() : null, - dateStats.isSetNumDVs() ? dateStats.getNumDVs() : null, - dateStats.isSetBitVectors() ? dateStats.getBitVectors() : null, - dateStats.isSetLowValue() ? dateStats.getLowValue().getDaysSinceEpoch() : null, - dateStats.isSetHighValue() ? dateStats.getHighValue().getDaysSinceEpoch() : null); - } - return mColStats; - } - - 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(); - - if (colType.equals("boolean")) { - BooleanColumnStatsData boolStats = new BooleanColumnStatsData(); - 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("int") || colType.equals("bigint") || - colType.equals("timestamp")) { - LongColumnStatsDataInspector longStats = new LongColumnStatsDataInspector(); - longStats.setNumNulls(mStatsObj.getNumNulls()); - if (mStatsObj.getLongHighValue() != null) { - longStats.setHighValue(mStatsObj.getLongHighValue()); - } - if (mStatsObj.getLongLowValue() != null) { - longStats.setLowValue(mStatsObj.getLongLowValue()); - } - longStats.setNumDVs(mStatsObj.getNumDVs()); - longStats.setBitVectors((mStatsObj.getBitVector()==null||!enableBitVector)? null : mStatsObj.getBitVector()); - colStatsData.setLongStats(longStats); - } else if (colType.equals("double") || colType.equals("float")) { - DoubleColumnStatsDataInspector doubleStats = new DoubleColumnStatsDataInspector(); - doubleStats.setNumNulls(mStatsObj.getNumNulls()); - if (mStatsObj.getDoubleHighValue() != null) { - doubleStats.setHighValue(mStatsObj.getDoubleHighValue()); - } - if (mStatsObj.getDoubleLowValue() != null) { - doubleStats.setLowValue(mStatsObj.getDoubleLowValue()); - } - doubleStats.setNumDVs(mStatsObj.getNumDVs()); - doubleStats.setBitVectors((mStatsObj.getBitVector()==null||!enableBitVector)? null : mStatsObj.getBitVector()); - colStatsData.setDoubleStats(doubleStats); - } else if (colType.startsWith("decimal")) { - DecimalColumnStatsDataInspector decimalStats = new DecimalColumnStatsDataInspector(); - decimalStats.setNumNulls(mStatsObj.getNumNulls()); - if (mStatsObj.getDecimalHighValue() != null) { - decimalStats.setHighValue(createThriftDecimal(mStatsObj.getDecimalHighValue())); - } - if (mStatsObj.getDecimalLowValue() != null) { - decimalStats.setLowValue(createThriftDecimal(mStatsObj.getDecimalLowValue())); - } - decimalStats.setNumDVs(mStatsObj.getNumDVs()); - decimalStats.setBitVectors((mStatsObj.getBitVector()==null||!enableBitVector)? null : mStatsObj.getBitVector()); - colStatsData.setDecimalStats(decimalStats); - } else if (colType.equals("date")) { - DateColumnStatsDataInspector dateStats = new DateColumnStatsDataInspector(); - dateStats.setNumNulls(mStatsObj.getNumNulls()); - dateStats.setHighValue(new Date(mStatsObj.getLongHighValue())); - dateStats.setLowValue(new Date(mStatsObj.getLongLowValue())); - dateStats.setNumDVs(mStatsObj.getNumDVs()); - dateStats.setBitVectors((mStatsObj.getBitVector()==null||!enableBitVector)? null : mStatsObj.getBitVector()); - colStatsData.setDateStats(dateStats); - } - statsObj.setStatsData(colStatsData); - return statsObj; - } - - public static 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; - } - - // JAVA - public static void fillColumnStatisticsData(String colType, ColumnStatisticsData data, - Object llow, Object lhigh, Object dlow, Object dhigh, Object declow, Object dechigh, - Object nulls, Object dist, Object bitVector, Object avglen, Object maxlen, Object trues, Object falses) throws MetaException { - colType = colType.toLowerCase(); - if (colType.equals("boolean")) { - BooleanColumnStatsData boolStats = new BooleanColumnStatsData(); - boolStats.setNumFalses(MetaStoreDirectSql.extractSqlLong(falses)); - boolStats.setNumTrues(MetaStoreDirectSql.extractSqlLong(trues)); - boolStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - data.setBooleanStats(boolStats); - } else if (colType.equals("string") || - colType.startsWith("varchar") || colType.startsWith("char")) { - StringColumnStatsDataInspector stringStats = new StringColumnStatsDataInspector(); - stringStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - stringStats.setAvgColLen(MetaStoreDirectSql.extractSqlDouble(avglen)); - stringStats.setMaxColLen(MetaStoreDirectSql.extractSqlLong(maxlen)); - stringStats.setNumDVs(MetaStoreDirectSql.extractSqlLong(dist)); - stringStats.setBitVectors(MetaStoreDirectSql.extractSqlBlob(bitVector)); - data.setStringStats(stringStats); - } else if (colType.equals("binary")) { - BinaryColumnStatsData binaryStats = new BinaryColumnStatsData(); - binaryStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - binaryStats.setAvgColLen(MetaStoreDirectSql.extractSqlDouble(avglen)); - binaryStats.setMaxColLen(MetaStoreDirectSql.extractSqlLong(maxlen)); - data.setBinaryStats(binaryStats); - } else if (colType.equals("bigint") || colType.equals("int") || - colType.equals("smallint") || colType.equals("tinyint") || - colType.equals("timestamp")) { - LongColumnStatsDataInspector longStats = new LongColumnStatsDataInspector(); - longStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - if (lhigh != null) { - longStats.setHighValue(MetaStoreDirectSql.extractSqlLong(lhigh)); - } - if (llow != null) { - longStats.setLowValue(MetaStoreDirectSql.extractSqlLong(llow)); - } - longStats.setNumDVs(MetaStoreDirectSql.extractSqlLong(dist)); - longStats.setBitVectors(MetaStoreDirectSql.extractSqlBlob(bitVector)); - data.setLongStats(longStats); - } else if (colType.equals("double") || colType.equals("float")) { - DoubleColumnStatsDataInspector doubleStats = new DoubleColumnStatsDataInspector(); - doubleStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - if (dhigh != null) { - doubleStats.setHighValue(MetaStoreDirectSql.extractSqlDouble(dhigh)); - } - if (dlow != null) { - doubleStats.setLowValue(MetaStoreDirectSql.extractSqlDouble(dlow)); - } - doubleStats.setNumDVs(MetaStoreDirectSql.extractSqlLong(dist)); - doubleStats.setBitVectors(MetaStoreDirectSql.extractSqlBlob(bitVector)); - data.setDoubleStats(doubleStats); - } else if (colType.startsWith("decimal")) { - DecimalColumnStatsDataInspector decimalStats = new DecimalColumnStatsDataInspector(); - decimalStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - if (dechigh != null) { - decimalStats.setHighValue(createThriftDecimal((String)dechigh)); - } - if (declow != null) { - decimalStats.setLowValue(createThriftDecimal((String)declow)); - } - decimalStats.setNumDVs(MetaStoreDirectSql.extractSqlLong(dist)); - decimalStats.setBitVectors(MetaStoreDirectSql.extractSqlBlob(bitVector)); - data.setDecimalStats(decimalStats); - } else if (colType.equals("date")) { - DateColumnStatsDataInspector dateStats = new DateColumnStatsDataInspector(); - dateStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - if (lhigh != null) { - dateStats.setHighValue(new Date(MetaStoreDirectSql.extractSqlLong(lhigh))); - } - if (llow != null) { - dateStats.setLowValue(new Date(MetaStoreDirectSql.extractSqlLong(llow))); - } - dateStats.setNumDVs(MetaStoreDirectSql.extractSqlLong(dist)); - dateStats.setBitVectors(MetaStoreDirectSql.extractSqlBlob(bitVector)); - data.setDateStats(dateStats); - } - } - - //DB - public static void fillColumnStatisticsData(String colType, ColumnStatisticsData data, - Object llow, Object lhigh, Object dlow, Object dhigh, Object declow, Object dechigh, - Object nulls, Object dist, Object avglen, Object maxlen, Object trues, Object falses, - Object avgLong, Object avgDouble, Object avgDecimal, Object sumDist, - boolean useDensityFunctionForNDVEstimation, double ndvTuner) throws MetaException { - colType = colType.toLowerCase(); - if (colType.equals("boolean")) { - BooleanColumnStatsData boolStats = new BooleanColumnStatsData(); - boolStats.setNumFalses(MetaStoreDirectSql.extractSqlLong(falses)); - boolStats.setNumTrues(MetaStoreDirectSql.extractSqlLong(trues)); - boolStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - data.setBooleanStats(boolStats); - } else if (colType.equals("string") || colType.startsWith("varchar") - || colType.startsWith("char")) { - StringColumnStatsDataInspector stringStats = new StringColumnStatsDataInspector(); - stringStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - stringStats.setAvgColLen(MetaStoreDirectSql.extractSqlDouble(avglen)); - stringStats.setMaxColLen(MetaStoreDirectSql.extractSqlLong(maxlen)); - stringStats.setNumDVs(MetaStoreDirectSql.extractSqlLong(dist)); - data.setStringStats(stringStats); - } else if (colType.equals("binary")) { - BinaryColumnStatsData binaryStats = new BinaryColumnStatsData(); - binaryStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - binaryStats.setAvgColLen(MetaStoreDirectSql.extractSqlDouble(avglen)); - binaryStats.setMaxColLen(MetaStoreDirectSql.extractSqlLong(maxlen)); - data.setBinaryStats(binaryStats); - } else if (colType.equals("bigint") || colType.equals("int") || colType.equals("smallint") - || colType.equals("tinyint") || colType.equals("timestamp")) { - LongColumnStatsDataInspector longStats = new LongColumnStatsDataInspector(); - longStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - if (lhigh != null) { - longStats.setHighValue(MetaStoreDirectSql.extractSqlLong(lhigh)); - } - if (llow != null) { - longStats.setLowValue(MetaStoreDirectSql.extractSqlLong(llow)); - } - long lowerBound = MetaStoreDirectSql.extractSqlLong(dist); - long higherBound = MetaStoreDirectSql.extractSqlLong(sumDist); - long rangeBound = Long.MAX_VALUE; - if (lhigh != null && llow != null) { - rangeBound = MetaStoreDirectSql.extractSqlLong(lhigh) - - MetaStoreDirectSql.extractSqlLong(llow) + 1; - } - long estimation; - if (useDensityFunctionForNDVEstimation && lhigh != null && llow != null && avgLong != null - && MetaStoreDirectSql.extractSqlDouble(avgLong) != 0.0) { - // We have estimation, lowerbound and higherbound. We use estimation if - // it is between lowerbound and higherbound. - estimation = MetaStoreDirectSql - .extractSqlLong((MetaStoreDirectSql.extractSqlLong(lhigh) - MetaStoreDirectSql - .extractSqlLong(llow)) / MetaStoreDirectSql.extractSqlDouble(avgLong)); - if (estimation < lowerBound) { - estimation = lowerBound; - } else if (estimation > higherBound) { - estimation = higherBound; - } - } else { - estimation = (long) (lowerBound + (higherBound - lowerBound) * ndvTuner); - } - estimation = Math.min(estimation, rangeBound); - longStats.setNumDVs(estimation); - data.setLongStats(longStats); - } else if (colType.equals("date")) { - DateColumnStatsDataInspector dateStats = new DateColumnStatsDataInspector(); - dateStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - if (lhigh != null) { - dateStats.setHighValue(new Date(MetaStoreDirectSql.extractSqlLong(lhigh))); - } - if (llow != null) { - dateStats.setLowValue(new Date(MetaStoreDirectSql.extractSqlLong(llow))); - } - long lowerBound = MetaStoreDirectSql.extractSqlLong(dist); - long higherBound = MetaStoreDirectSql.extractSqlLong(sumDist); - long rangeBound = Long.MAX_VALUE; - if (lhigh != null && llow != null) { - rangeBound = MetaStoreDirectSql.extractSqlLong(lhigh) - - MetaStoreDirectSql.extractSqlLong(llow) + 1; - } - long estimation; - if (useDensityFunctionForNDVEstimation && lhigh != null && llow != null && avgLong != null - && MetaStoreDirectSql.extractSqlDouble(avgLong) != 0.0) { - // We have estimation, lowerbound and higherbound. We use estimation if - // it is between lowerbound and higherbound. - estimation = MetaStoreDirectSql - .extractSqlLong((MetaStoreDirectSql.extractSqlLong(lhigh) - MetaStoreDirectSql - .extractSqlLong(llow)) / MetaStoreDirectSql.extractSqlDouble(avgLong)); - if (estimation < lowerBound) { - estimation = lowerBound; - } else if (estimation > higherBound) { - estimation = higherBound; - } - } else { - estimation = (long) (lowerBound + (higherBound - lowerBound) * ndvTuner); - } - estimation = Math.min(estimation, rangeBound); - dateStats.setNumDVs(estimation); - data.setDateStats(dateStats); - } else if (colType.equals("double") || colType.equals("float")) { - DoubleColumnStatsDataInspector doubleStats = new DoubleColumnStatsDataInspector(); - doubleStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - if (dhigh != null) { - doubleStats.setHighValue(MetaStoreDirectSql.extractSqlDouble(dhigh)); - } - if (dlow != null) { - doubleStats.setLowValue(MetaStoreDirectSql.extractSqlDouble(dlow)); - } - long lowerBound = MetaStoreDirectSql.extractSqlLong(dist); - long higherBound = MetaStoreDirectSql.extractSqlLong(sumDist); - if (useDensityFunctionForNDVEstimation && dhigh != null && dlow != null && avgDouble != null - && MetaStoreDirectSql.extractSqlDouble(avgDouble) != 0.0) { - long estimation = MetaStoreDirectSql - .extractSqlLong((MetaStoreDirectSql.extractSqlLong(dhigh) - MetaStoreDirectSql - .extractSqlLong(dlow)) / MetaStoreDirectSql.extractSqlDouble(avgDouble)); - if (estimation < lowerBound) { - doubleStats.setNumDVs(lowerBound); - } else if (estimation > higherBound) { - doubleStats.setNumDVs(higherBound); - } else { - doubleStats.setNumDVs(estimation); - } - } else { - doubleStats.setNumDVs((long) (lowerBound + (higherBound - lowerBound) * ndvTuner)); - } - data.setDoubleStats(doubleStats); - } else if (colType.startsWith("decimal")) { - DecimalColumnStatsDataInspector decimalStats = new DecimalColumnStatsDataInspector(); - decimalStats.setNumNulls(MetaStoreDirectSql.extractSqlLong(nulls)); - Decimal low = null; - Decimal high = null; - BigDecimal blow = null; - BigDecimal bhigh = null; - if (dechigh instanceof BigDecimal) { - bhigh = (BigDecimal) dechigh; - high = new Decimal(ByteBuffer.wrap(bhigh.unscaledValue().toByteArray()), - (short) bhigh.scale()); - } else if (dechigh instanceof String) { - bhigh = new BigDecimal((String) dechigh); - high = createThriftDecimal((String) dechigh); - } - decimalStats.setHighValue(high); - if (declow instanceof BigDecimal) { - blow = (BigDecimal) declow; - low = new Decimal(ByteBuffer.wrap(blow.unscaledValue().toByteArray()), (short) blow.scale()); - } else if (dechigh instanceof String) { - blow = new BigDecimal((String) declow); - low = createThriftDecimal((String) declow); - } - decimalStats.setLowValue(low); - long lowerBound = MetaStoreDirectSql.extractSqlLong(dist); - long higherBound = MetaStoreDirectSql.extractSqlLong(sumDist); - if (useDensityFunctionForNDVEstimation && dechigh != null && declow != null && avgDecimal != null - && MetaStoreDirectSql.extractSqlDouble(avgDecimal) != 0.0) { - long estimation = MetaStoreDirectSql.extractSqlLong(MetaStoreDirectSql.extractSqlLong(bhigh - .subtract(blow).floatValue() / MetaStoreDirectSql.extractSqlDouble(avgDecimal))); - if (estimation < lowerBound) { - decimalStats.setNumDVs(lowerBound); - } else if (estimation > higherBound) { - decimalStats.setNumDVs(higherBound); - } else { - decimalStats.setNumDVs(estimation); - } - } else { - decimalStats.setNumDVs((long) (lowerBound + (higherBound - lowerBound) * ndvTuner)); - } - data.setDecimalStats(decimalStats); - } - } - - public static Decimal createThriftDecimal(String s) { - BigDecimal d = new BigDecimal(s); - return new Decimal(ByteBuffer.wrap(d.unscaledValue().toByteArray()), (short)d.scale()); - } - - private static String createJdoDecimalString(Decimal d) { - return new BigDecimal(new BigInteger(d.getUnscaled()), d.getScale()).toString(); - } - - /** - * Set field values in oldStatObj from newStatObj - * @param oldStatObj - * @param newStatObj - */ - public static void setFieldsIntoOldStats(ColumnStatisticsObj oldStatObj, - ColumnStatisticsObj newStatObj) { - _Fields typeNew = newStatObj.getStatsData().getSetField(); - _Fields typeOld = oldStatObj.getStatsData().getSetField(); - typeNew = typeNew == typeOld ? typeNew : null; - switch (typeNew) { - case BOOLEAN_STATS: - BooleanColumnStatsData oldBooleanStatsData = oldStatObj.getStatsData().getBooleanStats(); - BooleanColumnStatsData newBooleanStatsData = newStatObj.getStatsData().getBooleanStats(); - if (newBooleanStatsData.isSetNumTrues()) { - oldBooleanStatsData.setNumTrues(newBooleanStatsData.getNumTrues()); - } - if (newBooleanStatsData.isSetNumFalses()) { - oldBooleanStatsData.setNumFalses(newBooleanStatsData.getNumFalses()); - } - if (newBooleanStatsData.isSetNumNulls()) { - oldBooleanStatsData.setNumNulls(newBooleanStatsData.getNumNulls()); - } - if (newBooleanStatsData.isSetBitVectors()) { - oldBooleanStatsData.setBitVectors(newBooleanStatsData.getBitVectors()); - } - break; - case LONG_STATS: { - LongColumnStatsData oldLongStatsData = oldStatObj.getStatsData().getLongStats(); - LongColumnStatsData newLongStatsData = newStatObj.getStatsData().getLongStats(); - if (newLongStatsData.isSetHighValue()) { - oldLongStatsData.setHighValue(newLongStatsData.getHighValue()); - } - if (newLongStatsData.isSetLowValue()) { - oldLongStatsData.setLowValue(newLongStatsData.getLowValue()); - } - if (newLongStatsData.isSetNumNulls()) { - oldLongStatsData.setNumNulls(newLongStatsData.getNumNulls()); - } - if (newLongStatsData.isSetNumDVs()) { - oldLongStatsData.setNumDVs(newLongStatsData.getNumDVs()); - } - if (newLongStatsData.isSetBitVectors()) { - oldLongStatsData.setBitVectors(newLongStatsData.getBitVectors()); - } - break; - } - case DOUBLE_STATS: { - DoubleColumnStatsData oldDoubleStatsData = oldStatObj.getStatsData().getDoubleStats(); - DoubleColumnStatsData newDoubleStatsData = newStatObj.getStatsData().getDoubleStats(); - if (newDoubleStatsData.isSetHighValue()) { - oldDoubleStatsData.setHighValue(newDoubleStatsData.getHighValue()); - } - if (newDoubleStatsData.isSetLowValue()) { - oldDoubleStatsData.setLowValue(newDoubleStatsData.getLowValue()); - } - if (newDoubleStatsData.isSetNumNulls()) { - oldDoubleStatsData.setNumNulls(newDoubleStatsData.getNumNulls()); - } - if (newDoubleStatsData.isSetNumDVs()) { - oldDoubleStatsData.setNumDVs(newDoubleStatsData.getNumDVs()); - } - if (newDoubleStatsData.isSetBitVectors()) { - oldDoubleStatsData.setBitVectors(newDoubleStatsData.getBitVectors()); - } - break; - } - case STRING_STATS: { - StringColumnStatsData oldStringStatsData = oldStatObj.getStatsData().getStringStats(); - StringColumnStatsData newStringStatsData = newStatObj.getStatsData().getStringStats(); - if (newStringStatsData.isSetMaxColLen()) { - oldStringStatsData.setMaxColLen(newStringStatsData.getMaxColLen()); - } - if (newStringStatsData.isSetAvgColLen()) { - oldStringStatsData.setAvgColLen(newStringStatsData.getAvgColLen()); - } - if (newStringStatsData.isSetNumNulls()) { - oldStringStatsData.setNumNulls(newStringStatsData.getNumNulls()); - } - if (newStringStatsData.isSetNumDVs()) { - oldStringStatsData.setNumDVs(newStringStatsData.getNumDVs()); - } - if (newStringStatsData.isSetBitVectors()) { - oldStringStatsData.setBitVectors(newStringStatsData.getBitVectors()); - } - break; - } - case BINARY_STATS: - BinaryColumnStatsData oldBinaryStatsData = oldStatObj.getStatsData().getBinaryStats(); - BinaryColumnStatsData newBinaryStatsData = newStatObj.getStatsData().getBinaryStats(); - if (newBinaryStatsData.isSetMaxColLen()) { - oldBinaryStatsData.setMaxColLen(newBinaryStatsData.getMaxColLen()); - } - if (newBinaryStatsData.isSetAvgColLen()) { - oldBinaryStatsData.setAvgColLen(newBinaryStatsData.getAvgColLen()); - } - if (newBinaryStatsData.isSetNumNulls()) { - oldBinaryStatsData.setNumNulls(newBinaryStatsData.getNumNulls()); - } - if (newBinaryStatsData.isSetBitVectors()) { - oldBinaryStatsData.setBitVectors(newBinaryStatsData.getBitVectors()); - } - break; - case DECIMAL_STATS: { - DecimalColumnStatsData oldDecimalStatsData = oldStatObj.getStatsData().getDecimalStats(); - DecimalColumnStatsData newDecimalStatsData = newStatObj.getStatsData().getDecimalStats(); - if (newDecimalStatsData.isSetHighValue()) { - oldDecimalStatsData.setHighValue(newDecimalStatsData.getHighValue()); - } - if (newDecimalStatsData.isSetLowValue()) { - oldDecimalStatsData.setLowValue(newDecimalStatsData.getLowValue()); - } - if (newDecimalStatsData.isSetNumNulls()) { - oldDecimalStatsData.setNumNulls(newDecimalStatsData.getNumNulls()); - } - if (newDecimalStatsData.isSetNumDVs()) { - oldDecimalStatsData.setNumDVs(newDecimalStatsData.getNumDVs()); - } - if (newDecimalStatsData.isSetBitVectors()) { - oldDecimalStatsData.setBitVectors(newDecimalStatsData.getBitVectors()); - } - break; - } - case DATE_STATS: { - DateColumnStatsData oldDateStatsData = oldStatObj.getStatsData().getDateStats(); - DateColumnStatsData newDateStatsData = newStatObj.getStatsData().getDateStats(); - if (newDateStatsData.isSetHighValue()) { - oldDateStatsData.setHighValue(newDateStatsData.getHighValue()); - } - if (newDateStatsData.isSetLowValue()) { - oldDateStatsData.setLowValue(newDateStatsData.getLowValue()); - } - if (newDateStatsData.isSetNumNulls()) { - oldDateStatsData.setNumNulls(newDateStatsData.getNumNulls()); - } - if (newDateStatsData.isSetNumDVs()) { - oldDateStatsData.setNumDVs(newDateStatsData.getNumDVs()); - } - if (newDateStatsData.isSetBitVectors()) { - oldDateStatsData.setBitVectors(newDateStatsData.getBitVectors()); - } - break; - } - default: - throw new IllegalArgumentException("Unknown stats type: " + typeNew.toString()); - } - } -}
http://git-wip-us.apache.org/repos/asf/hive/blob/133d3c47/metastore/src/java/org/apache/hadoop/hive/metastore/cache/ByteArrayWrapper.java ---------------------------------------------------------------------- diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/cache/ByteArrayWrapper.java b/metastore/src/java/org/apache/hadoop/hive/metastore/cache/ByteArrayWrapper.java deleted file mode 100644 index 45ed1e7..0000000 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/cache/ByteArrayWrapper.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.hadoop.hive.metastore.cache; - -import java.util.Arrays; - -/** - * byte array with comparator - */ -public class ByteArrayWrapper { - byte[] wrapped; - - ByteArrayWrapper(byte[] b) { - wrapped = b; - } - - @Override - public boolean equals(Object other) { - if (other instanceof ByteArrayWrapper) { - return Arrays.equals(((ByteArrayWrapper)other).wrapped, wrapped); - } else { - return false; - } - } - - @Override - public int hashCode() { - return Arrays.hashCode(wrapped); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hive/blob/133d3c47/metastore/src/java/org/apache/hadoop/hive/metastore/cache/CacheUtils.java ---------------------------------------------------------------------- diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/cache/CacheUtils.java b/metastore/src/java/org/apache/hadoop/hive/metastore/cache/CacheUtils.java deleted file mode 100644 index aaeb6d4..0000000 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/cache/CacheUtils.java +++ /dev/null @@ -1,144 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.hadoop.hive.metastore.cache; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.regex.Pattern; - -import org.apache.hadoop.hive.metastore.api.Order; -import org.apache.hadoop.hive.metastore.api.Partition; -import org.apache.hadoop.hive.metastore.api.SkewedInfo; -import org.apache.hadoop.hive.metastore.api.StorageDescriptor; -import org.apache.hadoop.hive.metastore.api.Table; -import org.apache.hadoop.hive.metastore.cache.CachedStore.PartitionWrapper; -import org.apache.hadoop.hive.metastore.cache.CachedStore.TableWrapper; -import org.apache.hive.common.util.HiveStringUtils; - -public class CacheUtils { - private static final String delimit = "\u0001"; - - public static String buildKey(String dbName, String tableName) { - return dbName + delimit + tableName; - } - - public static String buildKeyWithDelimit(String dbName, String tableName) { - return buildKey(dbName, tableName) + delimit; - } - - public static String buildKey(String dbName, String tableName, List<String> partVals) { - String key = buildKey(dbName, tableName); - if (partVals == null || partVals.size() == 0) { - return key; - } - for (int i = 0; i < partVals.size(); i++) { - key += partVals.get(i); - if (i != partVals.size() - 1) { - key += delimit; - } - } - return key; - } - - public static String buildKeyWithDelimit(String dbName, String tableName, List<String> partVals) { - return buildKey(dbName, tableName, partVals) + delimit; - } - - public static String buildKey(String dbName, String tableName, List<String> partVals, String colName) { - String key = buildKey(dbName, tableName, partVals); - return key + delimit + colName; - } - - public static String buildKey(String dbName, String tableName, String colName) { - String key = buildKey(dbName, tableName); - return key + delimit + colName; - } - - public static String[] splitTableColStats(String key) { - return key.split(delimit); - } - - public static Object[] splitPartitionColStats(String key) { - Object[] result = new Object[4]; - String[] comps = key.split(delimit); - result[0] = comps[0]; - result[1] = comps[1]; - List<String> vals = new ArrayList<String>(); - for (int i=2;i<comps.length-2;i++) { - vals.add(comps[i]); - } - result[2] = vals; - result[3] = comps[comps.length-1]; - return result; - } - - static Table assemble(TableWrapper wrapper, SharedCache sharedCache) { - Table t = wrapper.getTable().deepCopy(); - if (wrapper.getSdHash()!=null) { - StorageDescriptor sdCopy = sharedCache.getSdFromCache(wrapper.getSdHash()).deepCopy(); - if (sdCopy.getBucketCols()==null) { - sdCopy.setBucketCols(new ArrayList<String>()); - } - if (sdCopy.getSortCols()==null) { - sdCopy.setSortCols(new ArrayList<Order>()); - } - if (sdCopy.getSkewedInfo()==null) { - sdCopy.setSkewedInfo(new SkewedInfo(new ArrayList<String>(), - new ArrayList<List<String>>(), new HashMap<List<String>,String>())); - } - sdCopy.setLocation(wrapper.getLocation()); - sdCopy.setParameters(wrapper.getParameters()); - t.setSd(sdCopy); - } - return t; - } - - static Partition assemble(PartitionWrapper wrapper, SharedCache sharedCache) { - Partition p = wrapper.getPartition().deepCopy(); - if (wrapper.getSdHash()!=null) { - StorageDescriptor sdCopy = sharedCache.getSdFromCache(wrapper.getSdHash()).deepCopy(); - if (sdCopy.getBucketCols()==null) { - sdCopy.setBucketCols(new ArrayList<String>()); - } - if (sdCopy.getSortCols()==null) { - sdCopy.setSortCols(new ArrayList<Order>()); - } - if (sdCopy.getSkewedInfo()==null) { - sdCopy.setSkewedInfo(new SkewedInfo(new ArrayList<String>(), - new ArrayList<List<String>>(), new HashMap<List<String>,String>())); - } - sdCopy.setLocation(wrapper.getLocation()); - sdCopy.setParameters(wrapper.getParameters()); - p.setSd(sdCopy); - } - return p; - } - - public static boolean matches(String name, String pattern) { - String[] subpatterns = pattern.trim().split("\\|"); - for (String subpattern : subpatterns) { - subpattern = "(?i)" + subpattern.replaceAll("\\?", ".{1}").replaceAll("\\*", ".*") - .replaceAll("\\^", "\\\\^").replaceAll("\\$", "\\\\$"); - if (Pattern.matches(subpattern, HiveStringUtils.normalizeIdentifier(name))) { - return true; - } - } - return false; - } -}
