Skip to content

Commit 74920b5

Browse files
authored
support reverse scan global order (#154)
1 parent 05716ab commit 74920b5

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientQueryImpl.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import com.alipay.oceanbase.rpc.table.api.TableQuery;
3333
import com.alipay.oceanbase.rpc.util.MonitorUtil;
3434

35-
import java.util.HashMap;
35+
import java.util.LinkedHashMap;
3636
import java.util.List;
3737
import java.util.Map;
3838

@@ -153,7 +153,7 @@ private AbstractQueryStreamResult commonExecute(InitQueryResultCallback<Abstract
153153
checkArgumentBeforeExec();
154154

155155
final long startTime = System.currentTimeMillis();
156-
this.partitionObTables = new HashMap<Long, ObPair<Long, ObTableParam>>(); // partitionObTables -> Map<logicId, Pair<logicId, param>>
156+
this.partitionObTables = new LinkedHashMap<Long, ObPair<Long, ObTableParam>>(); // partitionObTables -> Map<logicId, Pair<logicId, param>>
157157

158158
// fill a whole range if no range is added explicitly.
159159
if (tableQuery.getKeyRanges().isEmpty()) {
@@ -276,8 +276,14 @@ public void initPartitions() throws Exception {
276276
List<ObPair<Long, ObTableParam>> pairs = this.obTableClient.getTables(indexTableName,
277277
tableQuery, start, borderFlag.isInclusiveStart(), end, borderFlag.isInclusiveEnd(), false,
278278
false);
279-
for (ObPair<Long, ObTableParam> pair : pairs) {
280-
this.partitionObTables.put(pair.getLeft(), pair);
279+
if (this.tableQuery.getScanOrder() == ObScanOrder.Reverse) {
280+
for (int i = pairs.size() - 1; i >= 0; i--) {
281+
this.partitionObTables.put(pairs.get(i).getLeft(), pairs.get(i));
282+
}
283+
} else {
284+
for (ObPair<Long, ObTableParam> pair : pairs) {
285+
this.partitionObTables.put(pair.getLeft(), pair);
286+
}
281287
}
282288
}
283289
}

0 commit comments

Comments
 (0)