Check status in co sstable row scanner

This commit is contained in:
DengzhiLiu
2024-02-10 02:16:31 +00:00
committed by ob-robot
parent d8667f105a
commit c04f2d8d69
2 changed files with 11 additions and 10 deletions

View File

@ -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.

View File

@ -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);