Repository: hive
Updated Branches:
  refs/heads/master fbb3ed15f -> 456a65180


http://git-wip-us.apache.org/repos/asf/hive/blob/456a6518/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/columnstats/aggr/LongColumnStatsAggregator.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/columnstats/aggr/LongColumnStatsAggregator.java
 
b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/columnstats/aggr/LongColumnStatsAggregator.java
index d12cdc0..e6823d3 100644
--- 
a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/columnstats/aggr/LongColumnStatsAggregator.java
+++ 
b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/columnstats/aggr/LongColumnStatsAggregator.java
@@ -34,6 +34,7 @@ import 
org.apache.hadoop.hive.metastore.api.ColumnStatisticsObj;
 import org.apache.hadoop.hive.metastore.api.LongColumnStatsData;
 import org.apache.hadoop.hive.metastore.api.MetaException;
 import 
org.apache.hadoop.hive.metastore.columnstats.cache.LongColumnStatsDataInspector;
+import 
org.apache.hadoop.hive.metastore.utils.MetaStoreUtils.ColStatsObjWithSourceInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -43,27 +44,24 @@ public class LongColumnStatsAggregator extends 
ColumnStatsAggregator implements
   private static final Logger LOG = 
LoggerFactory.getLogger(LongColumnStatsAggregator.class);
 
   @Override
-  public ColumnStatisticsObj aggregate(String colName, List<String> partNames,
-      List<ColumnStatistics> css) throws MetaException {
+  public ColumnStatisticsObj aggregate(List<ColStatsObjWithSourceInfo> 
colStatsWithSourceInfo,
+      List<String> partNames, boolean areAllPartsFound) throws MetaException {
     ColumnStatisticsObj statsObj = null;
-
+    String colType = null;
+    String colName = null;
     // check if all the ColumnStatisticsObjs contain stats and all the ndv are
     // bitvectors
-    boolean doAllPartitionContainStats = partNames.size() == css.size();
-    LOG.debug("doAllPartitionContainStats for " + colName + " is " + 
doAllPartitionContainStats);
+    boolean doAllPartitionContainStats = partNames.size() == 
colStatsWithSourceInfo.size();
     NumDistinctValueEstimator ndvEstimator = null;
-    String colType = null;
-    for (ColumnStatistics cs : css) {
-      if (cs.getStatsObjSize() != 1) {
-        throw new MetaException(
-            "The number of columns should be exactly one in aggrStats, but 
found "
-                + cs.getStatsObjSize());
-      }
-      ColumnStatisticsObj cso = cs.getStatsObjIterator().next();
+    for (ColStatsObjWithSourceInfo csp : colStatsWithSourceInfo) {
+      ColumnStatisticsObj cso = csp.getColStatsObj();
       if (statsObj == null) {
+        colName = cso.getColName();
         colType = cso.getColType();
-        statsObj = ColumnStatsAggregatorFactory.newColumnStaticsObj(colName, 
colType, cso
-            .getStatsData().getSetField());
+        statsObj = ColumnStatsAggregatorFactory.newColumnStaticsObj(colName, 
colType,
+            cso.getStatsData().getSetField());
+        LOG.trace("doAllPartitionContainStats for column: {} is: {}", colName,
+            doAllPartitionContainStats);
       }
       LongColumnStatsDataInspector longColumnStatsData =
           (LongColumnStatsDataInspector) cso.getStatsData().getLongStats();
@@ -91,13 +89,13 @@ public class LongColumnStatsAggregator extends 
ColumnStatsAggregator implements
     }
     LOG.debug("all of the bit vectors can merge for " + colName + " is " + 
(ndvEstimator != null));
     ColumnStatisticsData columnStatisticsData = new ColumnStatisticsData();
-    if (doAllPartitionContainStats || css.size() < 2) {
+    if (doAllPartitionContainStats || colStatsWithSourceInfo.size() < 2) {
       LongColumnStatsDataInspector aggregateData = null;
       long lowerBound = 0;
       long higherBound = 0;
       double densityAvgSum = 0.0;
-      for (ColumnStatistics cs : css) {
-        ColumnStatisticsObj cso = cs.getStatsObjIterator().next();
+      for (ColStatsObjWithSourceInfo csp : colStatsWithSourceInfo) {
+        ColumnStatisticsObj cso = csp.getColStatsObj();
         LongColumnStatsDataInspector newData =
             (LongColumnStatsDataInspector) cso.getStatsData().getLongStats();
         lowerBound = Math.max(lowerBound, newData.getNumDVs());
@@ -155,9 +153,9 @@ public class LongColumnStatsAggregator extends 
ColumnStatsAggregator implements
       if (ndvEstimator == null) {
         // if not every partition uses bitvector for ndv, we just fall back to
         // the traditional extrapolation methods.
-        for (ColumnStatistics cs : css) {
-          String partName = cs.getStatsDesc().getPartName();
-          ColumnStatisticsObj cso = cs.getStatsObjIterator().next();
+        for (ColStatsObjWithSourceInfo csp : colStatsWithSourceInfo) {
+          ColumnStatisticsObj cso = csp.getColStatsObj();
+          String partName = csp.getPartName();
           LongColumnStatsData newData = cso.getStatsData().getLongStats();
           if (useDensityFunctionForNDVEstimation) {
             densityAvgSum += (newData.getHighValue() - newData.getLowValue()) 
/ newData.getNumDVs();
@@ -173,9 +171,9 @@ public class LongColumnStatsAggregator extends 
ColumnStatsAggregator implements
         int length = 0;
         int curIndex = -1;
         LongColumnStatsDataInspector aggregateData = null;
-        for (ColumnStatistics cs : css) {
-          String partName = cs.getStatsDesc().getPartName();
-          ColumnStatisticsObj cso = cs.getStatsObjIterator().next();
+        for (ColStatsObjWithSourceInfo csp : colStatsWithSourceInfo) {
+          ColumnStatisticsObj cso = csp.getColStatsObj();
+          String partName = csp.getPartName();
           LongColumnStatsDataInspector newData =
               (LongColumnStatsDataInspector) cso.getStatsData().getLongStats();
           // newData.isSetBitVectors() should be true for sure because we
@@ -227,11 +225,13 @@ public class LongColumnStatsAggregator extends 
ColumnStatsAggregator implements
           }
         }
       }
-      extrapolate(columnStatisticsData, partNames.size(), css.size(), 
adjustedIndexMap,
-          adjustedStatsMap, densityAvgSum / adjustedStatsMap.size());
+      extrapolate(columnStatisticsData, partNames.size(), 
colStatsWithSourceInfo.size(),
+          adjustedIndexMap, adjustedStatsMap, densityAvgSum / 
adjustedStatsMap.size());
     }
-    LOG.debug("Ndv estimatation for {} is {} # of partitions requested: {} # 
of partitions found: {}", colName,
-        columnStatisticsData.getLongStats().getNumDVs(),partNames.size(), 
css.size());
+    LOG.debug(
+        "Ndv estimatation for {} is {} # of partitions requested: {} # of 
partitions found: {}",
+        colName, columnStatisticsData.getLongStats().getNumDVs(), 
partNames.size(),
+        colStatsWithSourceInfo.size());
     statsObj.setStatsData(columnStatisticsData);
     return statsObj;
   }

http://git-wip-us.apache.org/repos/asf/hive/blob/456a6518/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/columnstats/aggr/StringColumnStatsAggregator.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/columnstats/aggr/StringColumnStatsAggregator.java
 
b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/columnstats/aggr/StringColumnStatsAggregator.java
index 4539e6b..2b8c493 100644
--- 
a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/columnstats/aggr/StringColumnStatsAggregator.java
+++ 
b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/columnstats/aggr/StringColumnStatsAggregator.java
@@ -34,6 +34,7 @@ import 
org.apache.hadoop.hive.metastore.api.ColumnStatisticsObj;
 import org.apache.hadoop.hive.metastore.api.MetaException;
 import org.apache.hadoop.hive.metastore.api.StringColumnStatsData;
 import 
org.apache.hadoop.hive.metastore.columnstats.cache.StringColumnStatsDataInspector;
+import 
org.apache.hadoop.hive.metastore.utils.MetaStoreUtils.ColStatsObjWithSourceInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -43,28 +44,24 @@ public class StringColumnStatsAggregator extends 
ColumnStatsAggregator implement
   private static final Logger LOG = 
LoggerFactory.getLogger(LongColumnStatsAggregator.class);
 
   @Override
-  public ColumnStatisticsObj aggregate(String colName, List<String> partNames,
-      List<ColumnStatistics> css) throws MetaException {
+  public ColumnStatisticsObj aggregate(List<ColStatsObjWithSourceInfo> 
colStatsWithSourceInfo,
+      List<String> partNames, boolean areAllPartsFound) throws MetaException {
     ColumnStatisticsObj statsObj = null;
-
+    String colType = null;
+    String colName = null;
     // check if all the ColumnStatisticsObjs contain stats and all the ndv are
-    // bitvectors. Only when both of the conditions are true, we merge bit
-    // vectors. Otherwise, just use the maximum function.
-    boolean doAllPartitionContainStats = partNames.size() == css.size();
-    LOG.debug("doAllPartitionContainStats for " + colName + " is " + 
doAllPartitionContainStats);
+    // bitvectors
+    boolean doAllPartitionContainStats = partNames.size() == 
colStatsWithSourceInfo.size();
     NumDistinctValueEstimator ndvEstimator = null;
-    String colType = null;
-    for (ColumnStatistics cs : css) {
-      if (cs.getStatsObjSize() != 1) {
-        throw new MetaException(
-            "The number of columns should be exactly one in aggrStats, but 
found "
-                + cs.getStatsObjSize());
-      }
-      ColumnStatisticsObj cso = cs.getStatsObjIterator().next();
+    for (ColStatsObjWithSourceInfo csp : colStatsWithSourceInfo) {
+      ColumnStatisticsObj cso = csp.getColStatsObj();
       if (statsObj == null) {
+        colName = cso.getColName();
         colType = cso.getColType();
-        statsObj = ColumnStatsAggregatorFactory.newColumnStaticsObj(colName, 
colType, cso
-            .getStatsData().getSetField());
+        statsObj = ColumnStatsAggregatorFactory.newColumnStaticsObj(colName, 
colType,
+            cso.getStatsData().getSetField());
+        LOG.trace("doAllPartitionContainStats for column: {} is: {}", colName,
+            doAllPartitionContainStats);
       }
       StringColumnStatsDataInspector stringColumnStatsData =
           (StringColumnStatsDataInspector) cso.getStatsData().getStringStats();
@@ -92,10 +89,10 @@ public class StringColumnStatsAggregator extends 
ColumnStatsAggregator implement
     }
     LOG.debug("all of the bit vectors can merge for " + colName + " is " + 
(ndvEstimator != null));
     ColumnStatisticsData columnStatisticsData = new ColumnStatisticsData();
-    if (doAllPartitionContainStats || css.size() < 2) {
+    if (doAllPartitionContainStats || colStatsWithSourceInfo.size() < 2) {
       StringColumnStatsDataInspector aggregateData = null;
-      for (ColumnStatistics cs : css) {
-        ColumnStatisticsObj cso = cs.getStatsObjIterator().next();
+      for (ColStatsObjWithSourceInfo csp : colStatsWithSourceInfo) {
+        ColumnStatisticsObj cso = csp.getColStatsObj();
         StringColumnStatsDataInspector newData =
             (StringColumnStatsDataInspector) 
cso.getStatsData().getStringStats();
         if (ndvEstimator != null) {
@@ -134,9 +131,9 @@ public class StringColumnStatsAggregator extends 
ColumnStatsAggregator implement
       if (ndvEstimator == null) {
         // if not every partition uses bitvector for ndv, we just fall back to
         // the traditional extrapolation methods.
-        for (ColumnStatistics cs : css) {
-          String partName = cs.getStatsDesc().getPartName();
-          ColumnStatisticsObj cso = cs.getStatsObjIterator().next();
+        for (ColStatsObjWithSourceInfo csp : colStatsWithSourceInfo) {
+          ColumnStatisticsObj cso = csp.getColStatsObj();
+          String partName = csp.getPartName();
           adjustedIndexMap.put(partName, (double) indexMap.get(partName));
           adjustedStatsMap.put(partName, cso.getStatsData());
         }
@@ -148,9 +145,9 @@ public class StringColumnStatsAggregator extends 
ColumnStatsAggregator implement
         int length = 0;
         int curIndex = -1;
         StringColumnStatsDataInspector aggregateData = null;
-        for (ColumnStatistics cs : css) {
-          String partName = cs.getStatsDesc().getPartName();
-          ColumnStatisticsObj cso = cs.getStatsObjIterator().next();
+        for (ColStatsObjWithSourceInfo csp : colStatsWithSourceInfo) {
+          ColumnStatisticsObj cso = csp.getColStatsObj();
+          String partName = csp.getPartName();
           StringColumnStatsDataInspector newData =
               (StringColumnStatsDataInspector) 
cso.getStatsData().getStringStats();
           // newData.isSetBitVectors() should be true for sure because we
@@ -198,11 +195,13 @@ public class StringColumnStatsAggregator extends 
ColumnStatsAggregator implement
           adjustedStatsMap.put(pseudoPartName.toString(), csd);
         }
       }
-      extrapolate(columnStatisticsData, partNames.size(), css.size(), 
adjustedIndexMap,
-          adjustedStatsMap, -1);
+      extrapolate(columnStatisticsData, partNames.size(), 
colStatsWithSourceInfo.size(),
+          adjustedIndexMap, adjustedStatsMap, -1);
     }
-    LOG.debug("Ndv estimatation for {} is {} # of partitions requested: {} # 
of partitions found: {}", colName,
-        columnStatisticsData.getStringStats().getNumDVs(),partNames.size(), 
css.size());
+    LOG.debug(
+        "Ndv estimatation for {} is {} # of partitions requested: {} # of 
partitions found: {}",
+        colName, columnStatisticsData.getStringStats().getNumDVs(), 
partNames.size(),
+        colStatsWithSourceInfo.size());
     statsObj.setStatsData(columnStatisticsData);
     return statsObj;
   }

http://git-wip-us.apache.org/repos/asf/hive/blob/456a6518/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/utils/MetaStoreUtils.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/utils/MetaStoreUtils.java
 
b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/utils/MetaStoreUtils.java
index 8bc4ce7..50f873a 100644
--- 
a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/utils/MetaStoreUtils.java
+++ 
b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/utils/MetaStoreUtils.java
@@ -87,6 +87,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.Map.Entry;
 import java.util.SortedMap;
 import java.util.SortedSet;
 import java.util.TreeMap;
@@ -213,71 +214,91 @@ public class MetaStoreUtils {
   }
 
 
-  // given a list of partStats, this function will give you an aggr stats
+  // Given a list of partStats, this function will give you an aggr stats
   public static List<ColumnStatisticsObj> 
aggrPartitionStats(List<ColumnStatistics> partStats,
-                                                             String dbName, 
String tableName, List<String> partNames, List<String> colNames,
-                                                             boolean 
useDensityFunctionForNDVEstimation, double ndvTuner)
+      String dbName, String tableName, List<String> partNames, List<String> 
colNames,
+      boolean areAllPartsFound, boolean useDensityFunctionForNDVEstimation, 
double ndvTuner)
       throws MetaException {
-    // 1. group by the stats by colNames
-    // map the colName to List<ColumnStatistics>
-    Map<String, List<ColumnStatistics>> map = new HashMap<>();
+    Map<ColumnStatsAggregator, List<ColStatsObjWithSourceInfo>> colStatsMap =
+        new HashMap<ColumnStatsAggregator, List<ColStatsObjWithSourceInfo>>();
+    // Group stats by colName for each partition
+    Map<String, ColumnStatsAggregator> aliasToAggregator =
+        new HashMap<String, ColumnStatsAggregator>();
     for (ColumnStatistics css : partStats) {
       List<ColumnStatisticsObj> objs = css.getStatsObj();
       for (ColumnStatisticsObj obj : objs) {
-        List<ColumnStatisticsObj> singleObj = new ArrayList<>();
-        singleObj.add(obj);
-        ColumnStatistics singleCS = new ColumnStatistics(css.getStatsDesc(), 
singleObj);
-        if (!map.containsKey(obj.getColName())) {
-          map.put(obj.getColName(), new ArrayList<>());
+        String partName = css.getStatsDesc().getPartName();
+        if (aliasToAggregator.get(obj.getColName()) == null) {
+          aliasToAggregator.put(obj.getColName(),
+              ColumnStatsAggregatorFactory.getColumnStatsAggregator(
+                  obj.getStatsData().getSetField(), 
useDensityFunctionForNDVEstimation, ndvTuner));
+          colStatsMap.put(aliasToAggregator.get(obj.getColName()),
+              new ArrayList<ColStatsObjWithSourceInfo>());
         }
-        map.get(obj.getColName()).add(singleCS);
+        colStatsMap.get(aliasToAggregator.get(obj.getColName()))
+            .add(new ColStatsObjWithSourceInfo(obj, dbName, tableName, 
partName));
       }
     }
-    return 
aggrPartitionStats(map,dbName,tableName,partNames,colNames,useDensityFunctionForNDVEstimation,
 ndvTuner);
+    if (colStatsMap.size() < 1) {
+      LOG.debug("No stats data found for: dbName= {},  tblName= {}, partNames= 
{}, colNames= {}",
+          dbName, tableName, partNames, colNames);
+      return new ArrayList<ColumnStatisticsObj>();
+    }
+    return aggrPartitionStats(colStatsMap, partNames, areAllPartsFound,
+        useDensityFunctionForNDVEstimation, ndvTuner);
   }
 
   public static List<ColumnStatisticsObj> aggrPartitionStats(
-      Map<String, List<ColumnStatistics>> map, String dbName, String tableName,
-      final List<String> partNames, List<String> colNames,
-      final boolean useDensityFunctionForNDVEstimation,final double ndvTuner) 
throws MetaException {
-    List<ColumnStatisticsObj> colStats = new ArrayList<>();
-    // 2. Aggregate stats for each column in a separate thread
-    if (map.size()< 1) {
-      //stats are absent in RDBMS
-      LOG.debug("No stats data found for: dbName=" +dbName +" tblName=" + 
tableName +
-          " partNames= " + partNames + " colNames=" + colNames );
-      return colStats;
-    }
-    final ExecutorService pool = 
Executors.newFixedThreadPool(Math.min(map.size(), 16),
-        new 
ThreadFactoryBuilder().setDaemon(true).setNameFormat("aggr-col-stats-%d").build());
+      Map<ColumnStatsAggregator, List<ColStatsObjWithSourceInfo>> colStatsMap,
+      final List<String> partNames, final boolean areAllPartsFound,
+      final boolean useDensityFunctionForNDVEstimation, final double ndvTuner)
+      throws MetaException {
+    List<ColumnStatisticsObj> aggrColStatObjs = new 
ArrayList<ColumnStatisticsObj>();
+    int numProcessors = Runtime.getRuntime().availableProcessors();
+    final ExecutorService pool =
+        Executors.newFixedThreadPool(Math.min(colStatsMap.size(), 
numProcessors),
+            new 
ThreadFactoryBuilder().setDaemon(true).setNameFormat("aggr-col-stats-%d").build());
     final List<Future<ColumnStatisticsObj>> futures = Lists.newLinkedList();
-
+    LOG.debug("Aggregating column stats. Threads used: {}",
+        Math.min(colStatsMap.size(), numProcessors));
     long start = System.currentTimeMillis();
-    for (final Map.Entry<String, List<ColumnStatistics>> entry : 
map.entrySet()) {
+    for (final Entry<ColumnStatsAggregator, List<ColStatsObjWithSourceInfo>> 
entry : colStatsMap
+        .entrySet()) {
       futures.add(pool.submit(new Callable<ColumnStatisticsObj>() {
         @Override
-        public ColumnStatisticsObj call() throws Exception {
-          List<ColumnStatistics> css = entry.getValue();
-          ColumnStatsAggregator aggregator = 
ColumnStatsAggregatorFactory.getColumnStatsAggregator(css
-                  
.iterator().next().getStatsObj().iterator().next().getStatsData().getSetField(),
-              useDensityFunctionForNDVEstimation, ndvTuner);
-          ColumnStatisticsObj statsObj = aggregator.aggregate(entry.getKey(), 
partNames, css);
-          return statsObj;
-        }}));
+        public ColumnStatisticsObj call() throws MetaException {
+          List<ColStatsObjWithSourceInfo> colStatWithSourceInfo = 
entry.getValue();
+          ColumnStatsAggregator aggregator = entry.getKey();
+          try {
+            ColumnStatisticsObj statsObj =
+                aggregator.aggregate(colStatWithSourceInfo, partNames, 
areAllPartsFound);
+            return statsObj;
+          } catch (MetaException e) {
+            LOG.debug(e.getMessage());
+            throw e;
+          }
+        }
+      }));
     }
     pool.shutdown();
-    for (Future<ColumnStatisticsObj> future : futures) {
-      try {
-        colStats.add(future.get());
-      } catch (InterruptedException | ExecutionException e) {
-        pool.shutdownNow();
-        LOG.debug(e.toString());
-        throw new MetaException(e.toString());
+    if (!futures.isEmpty()) {
+      for (Future<ColumnStatisticsObj> future : futures) {
+        try {
+          if (future.get() != null) {
+            aggrColStatObjs.add(future.get());
+          }
+        } catch (InterruptedException | ExecutionException e) {
+          LOG.debug(e.getMessage());
+          pool.shutdownNow();
+          throw new MetaException(e.toString());
+        }
+
       }
     }
     LOG.debug("Time for aggr col stats in seconds: {} Threads used: {}",
-        ((System.currentTimeMillis() - (double)start))/1000, 
Math.min(map.size(), 16));
-    return colStats;
+        ((System.currentTimeMillis() - (double) start)) / 1000,
+        Math.min(colStatsMap.size(), numProcessors));
+    return aggrColStatObjs;
   }
 
   public static double decimalToDouble(Decimal decimal) {
@@ -1562,7 +1583,6 @@ public class MetaStoreUtils {
     return cols;
   }
 
-
   public static boolean isValidSchedulingPolicy(String str) {
     try {
       parseSchedulingPolicy(str);
@@ -1578,4 +1598,36 @@ public class MetaStoreUtils {
     if ("DEFAULT".equals(schedulingPolicy)) return WMPoolSchedulingPolicy.FAIR;
     return Enum.valueOf(WMPoolSchedulingPolicy.class, schedulingPolicy);
   }
+
+  // ColumnStatisticsObj with info about its db, table, partition (if table is 
partitioned)
+  public static class ColStatsObjWithSourceInfo {
+    private final ColumnStatisticsObj colStatsObj;
+    private final String dbName;
+    private final String tblName;
+    private final String partName;
+
+    public ColStatsObjWithSourceInfo(ColumnStatisticsObj colStatsObj, String 
dbName, String tblName,
+        String partName) {
+      this.colStatsObj = colStatsObj;
+      this.dbName = dbName;
+      this.tblName = tblName;
+      this.partName = partName;
+    }
+
+    public ColumnStatisticsObj getColStatsObj() {
+      return colStatsObj;
+    }
+
+    public String getDbName() {
+      return dbName;
+    }
+
+    public String getTblName() {
+      return tblName;
+    }
+
+    public String getPartName() {
+      return partName;
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/456a6518/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
 
b/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
index c43062d..877899c 100644
--- 
a/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
+++ 
b/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
@@ -31,7 +31,6 @@ import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hive.metastore.api.AggrStats;
 import org.apache.hadoop.hive.metastore.api.AlreadyExistsException;
 import org.apache.hadoop.hive.metastore.api.ColumnStatistics;
-import org.apache.hadoop.hive.metastore.api.ColumnStatisticsObj;
 import org.apache.hadoop.hive.metastore.api.CurrentNotificationEventId;
 import org.apache.hadoop.hive.metastore.api.Database;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
@@ -73,6 +72,7 @@ import 
org.apache.hadoop.hive.metastore.api.UnknownTableException;
 import org.apache.hadoop.hive.metastore.api.WMMapping;
 import org.apache.hadoop.hive.metastore.api.WMPool;
 import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy;
+import 
org.apache.hadoop.hive.metastore.utils.MetaStoreUtils.ColStatsObjWithSourceInfo;
 import org.apache.thrift.TException;
 
 /**
@@ -937,13 +937,6 @@ public class DummyRawStoreControlledCommit implements 
RawStore, Configurable {
   }
 
   @Override
-  public Map<String, List<ColumnStatisticsObj>> 
getColStatsForTablePartitions(String dbName,
-      String tableName) throws MetaException, NoSuchObjectException {
-    // TODO Auto-generated method stub
-    return null;
-  }
-
-  @Override
   public String getMetastoreDbUuid() throws MetaException {
     throw new MetaException("Get metastore uuid is not implemented");
   }
@@ -1057,4 +1050,11 @@ public class DummyRawStoreControlledCommit implements 
RawStore, Configurable {
       String poolPath) throws NoSuchObjectException, 
InvalidOperationException, MetaException {
     objectStore.dropWMTriggerToPoolMapping(resourcePlanName, triggerName, 
poolPath);
   }
+
+  @Override
+  public List<ColStatsObjWithSourceInfo> 
getPartitionColStatsForDatabase(String dbName)
+      throws MetaException, NoSuchObjectException {
+    // TODO Auto-generated method stub
+    return null;
+  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/456a6518/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
 
b/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
index 688a7f9..6aa5d95 100644
--- 
a/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
+++ 
b/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
@@ -29,7 +29,6 @@ import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hive.metastore.api.AggrStats;
 import org.apache.hadoop.hive.metastore.api.AlreadyExistsException;
 import org.apache.hadoop.hive.metastore.api.ColumnStatistics;
-import org.apache.hadoop.hive.metastore.api.ColumnStatisticsObj;
 import org.apache.hadoop.hive.metastore.api.CurrentNotificationEventId;
 import org.apache.hadoop.hive.metastore.api.Database;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
@@ -72,6 +71,7 @@ import org.apache.hadoop.hive.metastore.api.WMMapping;
 import org.apache.hadoop.hive.metastore.api.WMPool;
 import org.apache.hadoop.hive.metastore.conf.MetastoreConf;
 import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy;
+import 
org.apache.hadoop.hive.metastore.utils.MetaStoreUtils.ColStatsObjWithSourceInfo;
 import org.apache.thrift.TException;
 import org.junit.Assert;
 
@@ -949,13 +949,6 @@ public class DummyRawStoreForJdoConnection implements 
RawStore {
   }
 
   @Override
-  public Map<String, List<ColumnStatisticsObj>> 
getColStatsForTablePartitions(String dbName,
-      String tableName) throws MetaException, NoSuchObjectException {
-    // TODO Auto-generated method stub
-    return null;
-  }
-
-  @Override
   public String getMetastoreDbUuid() throws MetaException {
     throw new MetaException("Get metastore uuid is not implemented");
   }
@@ -1054,4 +1047,11 @@ public class DummyRawStoreForJdoConnection implements 
RawStore {
   public void dropWMTriggerToPoolMapping(String resourcePlanName, String 
triggerName,
       String poolPath) throws NoSuchObjectException, 
InvalidOperationException, MetaException {
   }
+
+  @Override
+  public List<ColStatsObjWithSourceInfo> 
getPartitionColStatsForDatabase(String dbName)
+      throws MetaException, NoSuchObjectException {
+    // TODO Auto-generated method stub
+    return null;
+  }
 }

Reply via email to