From 7b08a3eae01b2d6821b2c0e70d3270602655e028 Mon Sep 17 00:00:00 2001 From: daidai Date: Tue, 31 Dec 2024 18:41:33 +0800 Subject: [PATCH] [fix](split)Fixed the bug that batch mode split could not query data in multiple be scenarios. --- .../java/org/apache/doris/datasource/FileQueryScanNode.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/FileQueryScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/FileQueryScanNode.java index 16b19ac77b2bb0..69115e969b0ba3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/FileQueryScanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/FileQueryScanNode.java @@ -340,7 +340,10 @@ public void createScanRangeLocations() throws UserException { totalFileSize = fileSplit.getLength() * selectedSplitNum; long maxWaitTime = ConnectContext.get().getSessionVariable().getFetchSplitsMaxWaitTime(); // Not accurate, only used to estimate concurrency. - int numSplitsPerBE = numApproximateSplits() / backendPolicy.numBackends(); + // Here, we must take the max of 1, because + // in the case of multiple BEs, `numApproximateSplits() / backendPolicy.numBackends()` may be 0, + // and finally numSplitsPerBE is 0, resulting in no data being queried. + int numSplitsPerBE = Math.max(numApproximateSplits() / backendPolicy.numBackends(), 1); for (Backend backend : backendPolicy.getBackends()) { SplitSource splitSource = new SplitSource(backend, splitAssignment, maxWaitTime); splitSources.add(splitSource);