[fix](nereids)support topn-filter for non pipeline engine #32397
This commit is contained in:
@ -3605,7 +3605,10 @@ public class Coordinator implements CoordInterface {
|
||||
|
||||
List<TExecPlanFragmentParams> toThrift(int backendNum) {
|
||||
List<TExecPlanFragmentParams> paramsList = Lists.newArrayList();
|
||||
|
||||
Set<Integer> topnFilterSources = scanNodes.stream()
|
||||
.filter(scanNode -> scanNode instanceof OlapScanNode)
|
||||
.flatMap(scanNode -> ((OlapScanNode) scanNode).getTopnFilterSortNodes().stream())
|
||||
.map(sort -> sort.getId().asInt()).collect(Collectors.toSet());
|
||||
for (int i = 0; i < instanceExecParams.size(); ++i) {
|
||||
final FInstanceExecParam instanceExecParam = instanceExecParams.get(i);
|
||||
TExecPlanFragmentParams params = new TExecPlanFragmentParams();
|
||||
@ -3617,11 +3620,17 @@ public class Coordinator implements CoordInterface {
|
||||
params.setBuildHashTableForBroadcastJoin(instanceExecParam.buildHashTableForBroadcastJoin);
|
||||
params.params.setQueryId(queryId);
|
||||
params.params.setFragmentInstanceId(instanceExecParam.instanceId);
|
||||
|
||||
Map<Integer, List<TScanRangeParams>> scanRanges = instanceExecParam.perNodeScanRanges;
|
||||
if (scanRanges == null) {
|
||||
scanRanges = Maps.newHashMap();
|
||||
}
|
||||
|
||||
if (!topnFilterSources.isEmpty()) {
|
||||
// topn_filter_source_node_ids is used by nereids not by legacy planner.
|
||||
// if there is no topnFilterSources, do not set it.
|
||||
// topn_filter_source_node_ids=null means legacy planner
|
||||
params.params.topn_filter_source_node_ids = Lists.newArrayList(topnFilterSources);
|
||||
}
|
||||
params.params.setPerNodeScanRanges(scanRanges);
|
||||
params.params.setPerExchNumSenders(perExchNumSenders);
|
||||
|
||||
@ -3692,7 +3701,6 @@ public class Coordinator implements CoordInterface {
|
||||
rf.getFilterId().asInt(), rf.toThrift());
|
||||
}
|
||||
}
|
||||
|
||||
params.setFileScanParams(fileScanRangeParamsMap);
|
||||
paramsList.add(params);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user