diff --git a/src/sql/das/ob_vector_index_lookup_op.cpp b/src/sql/das/ob_vector_index_lookup_op.cpp index e60a0b2c3a..16095d2ccb 100644 --- a/src/sql/das/ob_vector_index_lookup_op.cpp +++ b/src/sql/das/ob_vector_index_lookup_op.cpp @@ -609,6 +609,8 @@ int ObVectorIndexLookupOp::revert_iter_for_complete_data() } else { com_aux_vec_scan_param_.key_ranges_.reuse(); com_aux_vec_scan_param_.ss_key_ranges_.reuse(); + doc_id_scan_param_.key_ranges_.reuse(); + doc_id_scan_param_.ss_key_ranges_.reuse(); } com_aux_vec_iter_ = NULL; @@ -656,6 +658,14 @@ int ObVectorIndexLookupOp::vector_do_index_lookup() return ret; } +void ObVectorIndexLookupOp::reuse_scan_param_complete_data() +{ + doc_id_scan_param_.key_ranges_.reuse(); + doc_id_scan_param_.ss_key_ranges_.reuse(); + com_aux_vec_scan_param_.key_ranges_.reuse(); + com_aux_vec_scan_param_.ss_key_ranges_.reuse(); +} + int ObVectorIndexLookupOp::prepare_state(const ObVidAdaLookupStatus& cur_state, ObVectorQueryAdaptorResultContext &ada_ctx) { @@ -738,19 +748,13 @@ int ObVectorIndexLookupOp::prepare_state(const ObVidAdaLookupStatus& cur_state, ada_ctx.set_vector(res_count++, vector.ptr(), vector.length()); } } - doc_id_scan_param_.key_ranges_.reset(); - com_aux_vec_scan_param_.key_ranges_.reset(); + reuse_scan_param_complete_data(); } if (OB_ITER_END == ret) { ret = OB_SUCCESS; } - if (OB_FAIL(ret)) { - } else if (OB_FAIL(ObLocalIndexLookupOp::reset_lookup_state())) { - LOG_WARN("failed to reset look up status.", K(ret)); - } - // release iter for complete data, even OB_FAIL int tmp_ret = revert_iter_for_complete_data(); if (tmp_ret != OB_SUCCESS) { diff --git a/src/sql/das/ob_vector_index_lookup_op.h b/src/sql/das/ob_vector_index_lookup_op.h index 607204585d..148c81ef34 100644 --- a/src/sql/das/ob_vector_index_lookup_op.h +++ b/src/sql/das/ob_vector_index_lookup_op.h @@ -94,6 +94,7 @@ public: int init_limit(const ObDASVecAuxScanCtDef *ir_ctdef, ObDASVecAuxScanRtDef *ir_rtdef); int revert_iter_for_complete_data(); + void reuse_scan_param_complete_data(); int prepare_state(const ObVidAdaLookupStatus& cur_state, ObVectorQueryAdaptorResultContext &ada_ctx); int vector_do_index_lookup(); int get_cmpt_aux_table_rowkey(); diff --git a/src/sql/engine/ob_physical_plan_ctx.cpp b/src/sql/engine/ob_physical_plan_ctx.cpp index a9484d341d..a63863bd36 100644 --- a/src/sql/engine/ob_physical_plan_ctx.cpp +++ b/src/sql/engine/ob_physical_plan_ctx.cpp @@ -1064,7 +1064,7 @@ int ObPhysicalPlanCtx::get_sqludt_meta_by_subschema_id(uint16_t subschema_id, Ob udt_meta = *(reinterpret_cast(value.value_)); } } else if (!subschema_ctx_.is_inited()) { // no phy plan - ret = OB_ERR_UNEXPECTED; + ret = OB_ISNULL(phy_plan_) ? OB_NOT_INIT : OB_ERR_UNEXPECTED; LOG_WARN("invalid subschema id", K(ret), K(subschema_id), K(lbt())); } else { if (OB_FAIL(subschema_ctx_.get_subschema(subschema_id, value))) {