public List<ColumnStatisticsObj> getTableColumnStatistics(
      Table tbl, List<String> colNames, boolean checkTransactional)
      throws HiveException {

    PerfLogger perfLogger = SessionState.getPerfLogger();
    perfLogger.perfLogBegin(CLASS_NAME, PerfLogger.HIVE_GET_TABLE_COLUMN_STATS);
 
    List<ColumnStatisticsObj> retv = null;
    try {
      if (tbl.isNonNative() && tbl.getStorageHandler().canProvideColStatistics(tbl)) {
        return tbl.getStorageHandler().getColStatistics(tbl);
      }
      if (checkTransactional) {
        AcidUtils.TableSnapshot tableSnapshot = AcidUtils.getTableSnapshot(conf, tbl);
        retv = getMSC().getTableColumnStatistics(tbl.getDbName(), tbl.getTableName(), colNames, 
            Constants.HIVE_ENGINE, 
            tableSnapshot != null ? tableSnapshot.getValidWriteIdList() : null);
      } else {
        retv = getMSC().getTableColumnStatistics(tbl.getDbName(), tbl.getTableName(), colNames, 
            Constants.HIVE_ENGINE);
      }
      return retv;
    } catch (Exception e) {
      LOG.debug("Failed getTableColumnStatistics", e);
      throw new HiveException(e);
    } finally {
      perfLogger.perfLogEnd(CLASS_NAME, PerfLogger.HIVE_GET_TABLE_COLUMN_STATS, "HS2-cache");
    }
  }
@return the metastore client for the current thread
@throws MetaException
ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java