fix bug of autocommit on full direct load path

This commit is contained in:
obdev 2024-09-30 04:47:33 +00:00 committed by ob-robot
parent cb9b57eaf2
commit f7a71abf77
2 changed files with 3 additions and 1 deletions

View File

@ -317,7 +317,8 @@ int ObDirectLoadOptimizer::check_support_direct_load(
ret = OB_ERR_UNEXPECTED;
LOG_WARN("fail to get schema guard", K(ret), KP(sql_ctx));
} else {
if (direct_load_optimizer_ctx_.is_insert_overwrite() || direct_load_optimizer_ctx_.is_full_direct_load()) {
// insert overwrite和insert into select全量不支持autocommit=false和session在事务内
if (direct_load_optimizer_ctx_.is_insert_overwrite() || (direct_load_optimizer_ctx_.is_insert_into() && direct_load_optimizer_ctx_.is_full_direct_load())) {
bool auto_commit = false;
ObSQLSessionInfo *session_info = nullptr;
if (OB_ISNULL(session_info = exec_ctx->get_my_session())) {

View File

@ -45,6 +45,7 @@ public:
bool is_inc_direct_load() const { return load_method_ == ObDirectLoadMethod::INCREMENTAL && insert_mode_ == ObDirectLoadInsertMode::NORMAL; }
bool is_inc_replace_direct_load() const { return load_method_ == ObDirectLoadMethod::INCREMENTAL && insert_mode_ == ObDirectLoadInsertMode::INC_REPLACE; }
bool is_insert_overwrite() const { return ObDirectLoadMode::is_insert_overwrite(load_mode_); }
bool is_insert_into() const { return load_mode_ == ObDirectLoadMode::INSERT_INTO; }
void reset();
TO_STRING_KV(K_(table_id), K_(load_method), K_(insert_mode), K_(load_mode), K_(dup_action),
K_(max_error_row_count), K_(need_sort), K_(can_use_direct_load), K_(use_direct_load), K_(is_optimized));