From 952facff5623cedb41caa97517a19782b4d7fee7 Mon Sep 17 00:00:00 2001 From: zhiqiang Date: Fri, 27 Dec 2024 11:43:59 +0800 Subject: [PATCH] [fix](scan) Fix scan with limit (#46035) Related PR: https://github.com/apache/doris/pull/39927 https://github.com/apache/doris/pull/39927 introduced a new session var `adaptive_pipeline_task_serial_read_on_limit`, its implementation has flaw, reduce scanner parallelism should only happen when there is not conjunction. Since we can not estimate the filtration efficiency. --- be/src/pipeline/exec/scan_operator.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/be/src/pipeline/exec/scan_operator.cpp b/be/src/pipeline/exec/scan_operator.cpp index a59098c0fee31f..37b9b8f59cf806 100644 --- a/be/src/pipeline/exec/scan_operator.cpp +++ b/be/src/pipeline/exec/scan_operator.cpp @@ -1203,15 +1203,12 @@ Status ScanOperatorX::init(const TPlanNode& tnode, RuntimeState* // The set of enable_adaptive_pipeline_task_serial_read_on_limit // is checked in previous branch. if (query_options.enable_adaptive_pipeline_task_serial_read_on_limit) { - int32_t adaptive_pipeline_task_serial_read_on_limit = - ADAPTIVE_PIPELINE_TASK_SERIAL_READ_ON_LIMIT_DEFAULT; - if (query_options.__isset.adaptive_pipeline_task_serial_read_on_limit) { - adaptive_pipeline_task_serial_read_on_limit = - query_options.adaptive_pipeline_task_serial_read_on_limit; - } - - if (tnode.limit > 0 && tnode.limit <= adaptive_pipeline_task_serial_read_on_limit) { - _should_run_serial = true; + DCHECK(query_options.__isset.adaptive_pipeline_task_serial_read_on_limit); + if (!tnode.__isset.conjuncts || tnode.conjuncts.empty()) { + if (tnode.limit > 0 && + tnode.limit <= query_options.adaptive_pipeline_task_serial_read_on_limit) { + _should_run_serial = true; + } } } }