From e794bb69b779edb4cdedb5e89e78b9b91ba47c9d Mon Sep 17 00:00:00 2001 From: Dayue Gao Date: Tue, 24 Mar 2020 17:14:27 +0800 Subject: [PATCH] [BUG] Make default result ordering of SHOW PARTITIONS statement be consist with 0.11 (#3184) --- .../org/apache/doris/catalog/OlapTable.java | 4 ---- .../doris/common/proc/PartitionsProcDir.java | 23 +++++++++++-------- .../doris/catalog/TempPartitionTest.java | 2 +- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/fe/src/main/java/org/apache/doris/catalog/OlapTable.java b/fe/src/main/java/org/apache/doris/catalog/OlapTable.java index b783fc77b5..44e54cd15a 100644 --- a/fe/src/main/java/org/apache/doris/catalog/OlapTable.java +++ b/fe/src/main/java/org/apache/doris/catalog/OlapTable.java @@ -1444,10 +1444,6 @@ public class OlapTable extends Table { tempPartitions.dropAll(); } - public Collection getAllTempPartitions() { - return tempPartitions.getAllPartitions(); - } - public boolean existTempPartitions() { return !tempPartitions.isEmpty(); } diff --git a/fe/src/main/java/org/apache/doris/common/proc/PartitionsProcDir.java b/fe/src/main/java/org/apache/doris/common/proc/PartitionsProcDir.java index 9d6d27b3af..a3c5a61409 100644 --- a/fe/src/main/java/org/apache/doris/common/proc/PartitionsProcDir.java +++ b/fe/src/main/java/org/apache/doris/common/proc/PartitionsProcDir.java @@ -51,10 +51,10 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.stream.Collectors; @@ -209,18 +209,23 @@ public class PartitionsProcDir implements ProcDirInterface { List> partitionInfos = new ArrayList>(); db.readLock(); try { - Set partitionsNames; - if (isTempPartition) { - partitionsNames = olapTable.getAllTempPartitions().stream().map(p -> p.getName()).collect(Collectors.toSet()); + List partitionIds; + PartitionInfo tblPartitionInfo = olapTable.getPartitionInfo(); + + // for range partitions, we return partitions in ascending range order by default. + // this is to be consistent with the behaviour before 0.12 + if (tblPartitionInfo.getType() == PartitionType.RANGE) { + RangePartitionInfo rangePartitionInfo = (RangePartitionInfo) tblPartitionInfo; + partitionIds = rangePartitionInfo.getSortedRangeMap(isTempPartition).stream() + .map(Map.Entry::getKey).collect(Collectors.toList()); } else { - partitionsNames = olapTable.getPartitions().stream().map(p -> p.getName()).collect(Collectors.toSet()); + Collection partitions = isTempPartition ? olapTable.getTempPartitions() : olapTable.getPartitions(); + partitionIds = partitions.stream().map(Partition::getId).collect(Collectors.toList()); } Joiner joiner = Joiner.on(", "); - PartitionInfo tblPartitionInfo = olapTable.getPartitionInfo(); - for (String partName : partitionsNames) { - Partition partition = olapTable.getPartition(partName, isTempPartition); - long partitionId = partition.getId(); + for (Long partitionId : partitionIds) { + Partition partition = olapTable.getPartition(partitionId); List partitionInfo = new ArrayList(); String partitionName = partition.getName(); diff --git a/fe/src/test/java/org/apache/doris/catalog/TempPartitionTest.java b/fe/src/test/java/org/apache/doris/catalog/TempPartitionTest.java index 8449a8c40a..849848d7d7 100644 --- a/fe/src/test/java/org/apache/doris/catalog/TempPartitionTest.java +++ b/fe/src/test/java/org/apache/doris/catalog/TempPartitionTest.java @@ -578,7 +578,7 @@ public class TempPartitionTest { OlapTable readTbl = (OlapTable) Table.read(in); Assert.assertEquals(tbl.getId(), readTbl.getId()); - Assert.assertEquals(tbl.getAllTempPartitions().size(), readTbl.getAllTempPartitions().size()); + Assert.assertEquals(tbl.getTempPartitions().size(), readTbl.getTempPartitions().size()); file.delete(); }