提交 4a61aa99 编写于 作者: Y yishenglanlingzui 提交者: LINGuanRen

fix bug multi_insert_up cause an incorrect result

上级 0dc88201
......@@ -772,6 +772,23 @@ int ObLogInsert::need_multi_table_dml(AllocExchContext& ctx, ObShardingInfo& sha
}
}
if (OB_SUCC(ret) && get_insert_up() && is_needed) {
// multi insert on duplicate key At present, the static engine has a correctness problem,
// and the old engine is no problem. Currently, it will fall back to the old engine for execution.
// create table t1(c1 int primary key, c2 int auto_increment) partition by key(c1) partitions 2;
// create table t2(c1 int, c2 int) partition by key(c1) partitions 3;
// insert into t2 values('1',1000),('1',-100), (1, -300),('1',-200);
// insert into t1 select t2.c1, t2.c2 from t2 on duplicate key update t1.c2 = t1.c2 + t2.c2;
ObSQLSessionInfo *session = NULL;
if (OB_ISNULL(session = get_plan()->get_optimizer_context().get_session_info())) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("session is null", K(ret));
} else if (session->use_static_typing_engine()) {
ret = STATIC_ENG_NOT_IMPLEMENT;
LOG_WARN("multi part insert up have some bug, must use old sql engine", K(ret), K(is_needed));
}
}
if (OB_SUCC(ret)) {
LOG_TRACE("succeed to check whether need multi-table dml for insert operator",
K(is_match),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册