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));
|
LOG_WARN("Fail to fill virtual columns, ", K(ret));
|
||||||
}
|
}
|
||||||
if (OB_FAIL(ret) || need_skip) {
|
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_) {
|
if (in_row.fast_filter_skipped_) {
|
||||||
in_row.fast_filter_skipped_ = false;
|
in_row.fast_filter_skipped_ = false;
|
||||||
} else if (OB_FAIL(check_filtered(cur_row_, is_filter_filtered))) {
|
} 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 ObMultipleMerge::check_filtered(const ObDatumRow &row, bool &filtered)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
// check if timeout or if transaction status every 10000 rows, which should be within 10ms
|
if (NULL != access_param_->op_filters_
|
||||||
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_
|
|
||||||
&& !access_param_->op_filters_->empty()) {
|
&& !access_param_->op_filters_->empty()) {
|
||||||
// Execute filter in sql static typing engine.
|
// Execute filter in sql static typing engine.
|
||||||
// %row is already projected to output expressions for main table scan.
|
// %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()) {
|
if (iter_param_->has_lob_column_out()) {
|
||||||
access_ctx_->reuse_lob_locator_helper();
|
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();
|
ret = filter_group_by_rows();
|
||||||
} else if (nullptr != access_ctx_->limit_param_) {
|
} else if (nullptr != access_ctx_->limit_param_) {
|
||||||
ret = filter_rows_with_limit(blockscan_state);
|
ret = filter_rows_with_limit(blockscan_state);
|
||||||
|
|||||||
Reference in New Issue
Block a user