diff --git ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMetaStoreChecker.java ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMetaStoreChecker.java index 7c94c95f00492467ba27dedc9ce513e13c85ea61..01009470113ce78b0c81841318619e6211bfca8b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMetaStoreChecker.java +++ ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMetaStoreChecker.java @@ -34,6 +34,8 @@ import com.google.common.collect.Sets; import org.apache.hadoop.hive.metastore.api.FieldSchema; +import org.apache.hadoop.hive.ql.log.PerfLogger; +import org.apache.hadoop.hive.ql.session.SessionState; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.hadoop.fs.FileStatus; @@ -47,8 +49,6 @@ import org.apache.hadoop.hive.metastore.api.MetaException; import org.apache.hadoop.hive.metastore.api.NoSuchObjectException; import org.apache.hadoop.hive.ql.metadata.CheckResult.PartitionResult; -import org.apache.hadoop.hive.ql.optimizer.ppr.PartitionPruner; -import org.apache.hadoop.hive.ql.parse.PrunedPartitionList; import org.apache.thrift.TException; import com.google.common.util.concurrent.ThreadFactoryBuilder; @@ -61,6 +61,7 @@ public class HiveMetaStoreChecker { public static final Logger LOG = LoggerFactory.getLogger(HiveMetaStoreChecker.class); + public static final String CLASS_NAME = HiveMetaStoreChecker.class.getName(); private final Hive hive; private final HiveConf conf; @@ -210,10 +211,11 @@ void checkTable(String dbName, String tableName, if (table.isPartitioned()) { if (partitions == null || partitions.isEmpty()) { - PrunedPartitionList prunedPartList = - PartitionPruner.prune(table, null, conf, toString(), null); // no partitions specified, let's get all - parts.addAll(prunedPartList.getPartitions()); + PerfLogger perfLogger = SessionState.getPerfLogger(); + perfLogger.PerfLogBegin(CLASS_NAME, PerfLogger.PARTITION_RETRIEVING); + parts.addAll(hive.getAllPartitionsOf(table)); + perfLogger.PerfLogEnd(CLASS_NAME, PerfLogger.PARTITION_RETRIEVING); } else { // we're interested in specific partitions, // don't check for any others diff --git ql/src/test/queries/clientpositive/msck_repair_0.q ql/src/test/queries/clientpositive/msck_repair_0.q index ce8ef426a2a58845afc8333259d66725db416584..3329d49867ef2b302ae28eadb21f4770fff8752e 100644 --- ql/src/test/queries/clientpositive/msck_repair_0.q +++ ql/src/test/queries/clientpositive/msck_repair_0.q @@ -16,4 +16,8 @@ MSCK REPAIR TABLE default.repairtable; MSCK TABLE repairtable; +set hive.mapred.mode=strict; + +MSCK REPAIR TABLE default.repairtable; + DROP TABLE default.repairtable; diff --git ql/src/test/results/clientpositive/msck_repair_0.q.out ql/src/test/results/clientpositive/msck_repair_0.q.out index 3f2fe75b194f1248bd5c073dd7db6b71b2ffc2ba..fe39352e7dfb5118715a8dde027a6f1fed72123f 100644 --- ql/src/test/results/clientpositive/msck_repair_0.q.out +++ ql/src/test/results/clientpositive/msck_repair_0.q.out @@ -37,6 +37,12 @@ PREHOOK: Output: default@repairtable POSTHOOK: query: MSCK TABLE repairtable POSTHOOK: type: MSCK POSTHOOK: Output: default@repairtable +PREHOOK: query: MSCK REPAIR TABLE default.repairtable +PREHOOK: type: MSCK +PREHOOK: Output: default@repairtable +POSTHOOK: query: MSCK REPAIR TABLE default.repairtable +POSTHOOK: type: MSCK +POSTHOOK: Output: default@repairtable PREHOOK: query: DROP TABLE default.repairtable PREHOOK: type: DROPTABLE PREHOOK: Input: default@repairtable