fix select into plan bug

This commit is contained in:
zzg19950727
2023-02-08 20:27:18 +08:00
committed by ob-robot
parent bd393d0458
commit efc9ff610b
7 changed files with 85 additions and 19 deletions

View File

@ -6050,6 +6050,8 @@ int ObStaticEngineCG::generate_spec(ObLogSelectInto &op, ObSelectIntoSpec &spec,
LOG_WARN("fail to set line str", K(op.get_line_str()), K(ret));
} else if (OB_FAIL(spec.user_vars_.init(op.get_user_vars().count()))) {
LOG_WARN("init fixed array failed", K(ret), K(op.get_user_vars().count()));
} else if (OB_FAIL(spec.select_exprs_.init(op.get_select_exprs().count()))) {
LOG_WARN("init fixed array failed", K(ret), K(op.get_select_exprs().count()));
} else {
ObString var;
for (int64_t i = 0; OB_SUCC(ret) && i < op.get_user_vars().count(); ++i) {
@ -6060,6 +6062,18 @@ int ObStaticEngineCG::generate_spec(ObLogSelectInto &op, ObSelectIntoSpec &spec,
LOG_WARN("fail to push back var", K(var), K(ret));
}
}
for (int64_t i = 0; OB_SUCC(ret) && i < op.get_select_exprs().count(); ++i) {
ObExpr *rt_expr = nullptr;
const ObRawExpr* select_expr = op.get_select_exprs().at(i);
if (OB_ISNULL(select_expr)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpect null expr", K(ret));
} else if (OB_FAIL(generate_rt_expr(*select_expr, rt_expr))) {
LOG_WARN("failed to generate rt expr", K(ret));
} else if (OB_FAIL(spec.select_exprs_.push_back(rt_expr))) {
LOG_WARN("failed to push back expr", K(ret));
}
}
if (OB_SUCC(ret)) {
spec.into_type_ = op.get_into_type();
spec.closed_cht_ = op.get_closed_cht();