Check status in co sstable row scanner
This commit is contained in:
		| @ -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. | ||||
|  | ||||
| @ -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); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 DengzhiLiu
					DengzhiLiu