From 7b2d016229370db4618abc6099d8944d5f8433c7 Mon Sep 17 00:00:00 2001 From: XIAO-HOU <372060054@qq.com> Date: Fri, 3 Jan 2025 13:45:18 +0000 Subject: [PATCH] Support stop query when aggregate pushdown in column store --- src/storage/column_store/ob_cg_aggregated_scanner.cpp | 4 +++- src/storage/column_store/ob_co_sstable_row_scanner.cpp | 10 ++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/storage/column_store/ob_cg_aggregated_scanner.cpp b/src/storage/column_store/ob_cg_aggregated_scanner.cpp index 612730942..a0c5c62aa 100644 --- a/src/storage/column_store/ob_cg_aggregated_scanner.cpp +++ b/src/storage/column_store/ob_cg_aggregated_scanner.cpp @@ -129,7 +129,9 @@ int ObCGAggregatedScanner::get_next_rows(uint64_t &count, const uint64_t capacit } } else { while (OB_SUCC(ret)) { - if (OB_FAIL(ObCGRowScanner::get_next_rows(count, capacity, 0/*datum_offset*/))) { + if (OB_FAIL(THIS_WORKER.check_status())) { + LOG_WARN("query interrupt", K(ret)); + } else if (OB_FAIL(ObCGRowScanner::get_next_rows(count, capacity, 0/*datum_offset*/))) { if (OB_UNLIKELY(OB_ITER_END != ret)) { LOG_WARN("Fail to get next rows", K(ret)); } diff --git a/src/storage/column_store/ob_co_sstable_row_scanner.cpp b/src/storage/column_store/ob_co_sstable_row_scanner.cpp index 0272251d9..63e723861 100644 --- a/src/storage/column_store/ob_co_sstable_row_scanner.cpp +++ b/src/storage/column_store/ob_co_sstable_row_scanner.cpp @@ -608,9 +608,7 @@ int ObCOSSTableRowScanner::filter_rows(BlockScanState &blockscan_state) if (iter_param_->has_lob_column_out()) { access_ctx_->reuse_lob_locator_helper(); } - if (OB_FAIL(THIS_WORKER.check_status())) { - LOG_WARN("query interrupt", K(ret)); - } else if (nullptr != group_by_cell_) { + if (nullptr != group_by_cell_) { ret = filter_group_by_rows(); } else if (nullptr != access_ctx_->limit_param_) { ret = filter_rows_with_limit(blockscan_state); @@ -634,7 +632,9 @@ int ObCOSSTableRowScanner::filter_rows_with_limit(BlockScanState &blockscan_stat while (OB_SUCC(ret) && !is_limit_end_) { ObCSRowId begin = current_; const ObCGBitmap* result_bitmap = nullptr; - if (OB_FAIL(inner_filter(begin, group_size_, result_bitmap, blockscan_state))) { + if (OB_FAIL(THIS_WORKER.check_status())) { + LOG_WARN("query interrupt", K(ret)); + } else if (OB_FAIL(inner_filter(begin, group_size_, result_bitmap, blockscan_state))) { if (OB_UNLIKELY(OB_ITER_END != ret)) { LOG_WARN("Fail to inner filter", K(ret)); } @@ -699,6 +699,8 @@ int ObCOSSTableRowScanner::filter_rows_without_limit(BlockScanState &blockscan_s pending_end_row_id_ = OB_INVALID_CS_ROW_ID; } if (OB_FAIL(ret) || !need_do_filter) { + } else if (OB_FAIL(THIS_WORKER.check_status())) { + LOG_WARN("query interrupt", K(ret)); } else if (OB_FAIL(inner_filter(current_start_row_id, current_group_size, result_bitmap, blockscan_state))) { if (OB_UNLIKELY(OB_ITER_END != ret)) { LOG_WARN("Fail to inner filter", K(ret));