diff --git a/src/storage/access/ob_multiple_merge.cpp b/src/storage/access/ob_multiple_merge.cpp index ef4fd0bc72..c5b91ee701 100644 --- a/src/storage/access/ob_multiple_merge.cpp +++ b/src/storage/access/ob_multiple_merge.cpp @@ -734,7 +734,13 @@ int ObMultipleMerge::process_fuse_row(const bool not_using_static_engine, LOG_WARN("Fail to fill virtual columns, ", K(ret)); } if (OB_FAIL(ret) || need_skip) { - } else{ + } else if (0 == (++scan_cnt_ % 10000) && !access_ctx_->query_flag_.is_daily_merge()) { + // check if timeout or if transaction status every 10000 rows, which should be within 10ms + if (OB_FAIL(THIS_WORKER.check_status())) { + STORAGE_LOG(WARN, "query interrupt, ", K(ret)); + } + } + if (OB_SUCC(ret)) { if (in_row.fast_filter_skipped_) { in_row.fast_filter_skipped_ = false; } else if (OB_FAIL(check_filtered(cur_row_, is_filter_filtered))) { @@ -1080,14 +1086,7 @@ int ObMultipleMerge::fill_virtual_columns(ObDatumRow &row) int ObMultipleMerge::check_filtered(const ObDatumRow &row, bool &filtered) { int ret = OB_SUCCESS; - // check if timeout or if transaction status every 10000 rows, which should be within 10ms - if (0 == (++scan_cnt_ % 10000) && !access_ctx_->query_flag_.is_daily_merge()) { - if (OB_FAIL(THIS_WORKER.check_status())) { - STORAGE_LOG(WARN, "query interrupt, ", K(ret)); - } - } - if (OB_SUCC(ret) - && NULL != access_param_->op_filters_ + if (NULL != access_param_->op_filters_ && !access_param_->op_filters_->empty()) { // Execute filter in sql static typing engine. // %row is already projected to output expressions for main table scan. 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 ec34cc9863..ba69beaa5a 100644 --- a/src/storage/column_store/ob_co_sstable_row_scanner.cpp +++ b/src/storage/column_store/ob_co_sstable_row_scanner.cpp @@ -566,7 +566,9 @@ int ObCOSSTableRowScanner::filter_rows(BlockScanState &blockscan_state) if (iter_param_->has_lob_column_out()) { access_ctx_->reuse_lob_locator_helper(); } - if (nullptr != group_by_cell_) { + if (OB_FAIL(THIS_WORKER.check_status())) { + LOG_WARN("query interrupt", K(ret)); + } else if (nullptr != group_by_cell_) { ret = filter_group_by_rows(); } else if (nullptr != access_ctx_->limit_param_) { ret = filter_rows_with_limit(blockscan_state);