diff --git ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/DescTableOperation.java ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/DescTableOperation.java index 04d0aa1707..048abb16a9 100644 --- ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/DescTableOperation.java +++ ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/DescTableOperation.java @@ -152,39 +152,41 @@ private void getColumnsNoColumnPath(Table table, Partition partition, List tblProps = table.getParameters() == null ? - new HashMap() : table.getParameters(); - - Map valueMap = new HashMap<>(); - Map stateMap = new HashMap<>(); - for (String stat : StatsSetupConst.SUPPORTED_STATS) { - valueMap.put(stat, 0L); - stateMap.put(stat, true); - } + if (desc.isExtended() || desc.isFormatted()) { + if (table.isPartitioned() && partition == null) { + // No partition specified for partitioned table, lets fetch all. + Map tblProps = table.getParameters() == null ? + new HashMap() : table.getParameters(); - PartitionIterable partitions = new PartitionIterable(context.getDb(), table, null, - MetastoreConf.getIntVar(context.getConf(), MetastoreConf.ConfVars.BATCH_RETRIEVE_MAX)); - int numParts = 0; - for (Partition p : partitions) { - Map partitionProps = p.getParameters(); - Boolean state = StatsSetupConst.areBasicStatsUptoDate(partitionProps); + Map valueMap = new HashMap<>(); + Map stateMap = new HashMap<>(); for (String stat : StatsSetupConst.SUPPORTED_STATS) { - stateMap.put(stat, stateMap.get(stat) && state); - if (partitionProps != null && partitionProps.get(stat) != null) { - valueMap.put(stat, valueMap.get(stat) + Long.parseLong(partitionProps.get(stat))); + valueMap.put(stat, 0L); + stateMap.put(stat, true); + } + + PartitionIterable partitions = new PartitionIterable(context.getDb(), table, null, + MetastoreConf.getIntVar(context.getConf(), MetastoreConf.ConfVars.BATCH_RETRIEVE_MAX)); + int numParts = 0; + for (Partition p : partitions) { + Map partitionProps = p.getParameters(); + Boolean state = StatsSetupConst.areBasicStatsUptoDate(partitionProps); + for (String stat : StatsSetupConst.SUPPORTED_STATS) { + stateMap.put(stat, stateMap.get(stat) && state); + if (partitionProps != null && partitionProps.get(stat) != null) { + valueMap.put(stat, valueMap.get(stat) + Long.parseLong(partitionProps.get(stat))); + } } + numParts++; } - numParts++; - } - tblProps.put(StatsSetupConst.NUM_PARTITIONS, Integer.toString(numParts)); + tblProps.put(StatsSetupConst.NUM_PARTITIONS, Integer.toString(numParts)); - for (String stat : StatsSetupConst.SUPPORTED_STATS) { - StatsSetupConst.setBasicStatsState(tblProps, Boolean.toString(stateMap.get(stat))); - tblProps.put(stat, valueMap.get(stat).toString()); + for (String stat : StatsSetupConst.SUPPORTED_STATS) { + StatsSetupConst.setBasicStatsState(tblProps, Boolean.toString(stateMap.get(stat))); + tblProps.put(stat, valueMap.get(stat).toString()); + } + table.setParameters(tblProps); } - table.setParameters(tblProps); } }