add for insert values statement split&rewrite batch optimization

This commit is contained in:
yishenglanlingzui
2023-08-14 15:12:40 +00:00
committed by ob-robot
parent 15934d24ac
commit 9b3f07d4ad
37 changed files with 1653 additions and 290 deletions

View File

@ -421,8 +421,8 @@ OB_INLINE int ObExprValuesOp::calc_next_row()
ObPhysicalPlanCtx *plan_ctx = GET_PHY_PLAN_CTX(ctx_);
int64_t col_num = MY_SPEC.get_output_count();
int64_t col_idx = 0;
ctx_.get_sql_ctx()->multi_stmt_item_.get_batched_stmt_cnt();
int64_t value_group = (MY_SPEC.contain_ab_param_ ? ctx_.get_sql_ctx()->multi_stmt_item_.get_batched_stmt_cnt() : 1);
int64_t batch_cnt = ctx_.get_sql_ctx()->get_batch_params_count();
int64_t value_group = (MY_SPEC.contain_ab_param_ ? batch_cnt : 1);
int64_t real_value_cnt = MY_SPEC.get_value_count() * value_group;
if (node_idx_ == real_value_cnt) {
// there is no values any more

View File

@ -642,7 +642,7 @@ int ObTableModifyOp::merge_implict_cursor(int64_t insert_rows,
int64_t found_rows)
{
int ret = OB_SUCCESS;
bool is_ins_val_opt = ctx_.get_sql_ctx()->multi_stmt_item_.is_ins_multi_val_opt();
bool is_ins_val_opt = ctx_.get_sql_ctx()->is_do_insert_batch_opt();
if (MY_SPEC.ab_stmt_id_ != nullptr && !is_ins_val_opt) {
ObDatum *stmt_id_datum = nullptr;
if (OB_FAIL(MY_SPEC.ab_stmt_id_->eval(eval_ctx_, stmt_id_datum))) {

View File

@ -502,7 +502,7 @@ OB_NOINLINE int ObPreCalcExprFrameInfo::do_batch_stmt_eval(ObExecContext &exec_c
ObEvalCtx eval_ctx(exec_ctx);
ObDatum *res_datum = NULL;
ObDatumObjParam datum_param;
int64_t group_cnt = exec_ctx.get_sql_ctx()->multi_stmt_item_.get_batched_stmt_cnt();
int64_t group_cnt = exec_ctx.get_sql_ctx()->get_batch_params_count();
ObSqlDatumArray *datum_array = nullptr;
//construct sql array obj
for (int64_t i = 0; OB_SUCC(ret) && i < pre_calc_rt_exprs_.count(); ++i) {