bugfix: failed to update local table semi join link table

This commit is contained in:
xianyu-w 2023-09-20 14:26:39 +00:00 committed by ob-robot
parent 56a3dc4308
commit 5813fbd504
2 changed files with 8 additions and 3 deletions

View File

@ -48,9 +48,11 @@ int ObTransformDBlink::transform_one_stmt(ObIArray<ObParentDMLStmt> &parent_stmt
if (OB_FAIL(formalize_link_table(stmt))) {
LOG_WARN("failed to formalize link table", K(ret));
}
} else if ((!stmt->is_dml_write_stmt() || stmt->is_merge_stmt()) &&
OB_FAIL(pack_link_table(stmt, trans_happened))) {
} else if (OB_FAIL(pack_link_table(stmt, trans_happened))) {
LOG_WARN("failed to pack link table", K(ret));
} else if (OB_UNLIKELY(stmt->is_dml_write_stmt() && stmt->is_dblink_stmt())) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected dblink stmt", KPC(stmt));
} else {
LOG_TRACE("succeed to pack link table", K(ret));
}
@ -555,7 +557,8 @@ int ObTransformDBlink::collect_link_table(ObDMLStmt *stmt,
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpect null stmt", K(ret));
} else if (stmt->is_hierarchical_query() || stmt->is_unpivot_select() ||
(stmt->is_select_stmt() && sel_stmt->has_select_into())) {
(stmt->is_select_stmt() && sel_stmt->has_select_into()) ||
stmt->is_dml_write_stmt()) {
all_table_from_one_dblink = false;
} else if (has_invalid_link_expr(*stmt, has_special_expr)) {
LOG_WARN("failed to check stmt has invalid link expr", K(ret));

View File

@ -229,6 +229,7 @@ int ObTransformerImpl::do_transform_dblink_write(ObDMLStmt *&stmt, bool &trans_h
ret = OB_ERR_UNEXPECTED;
LOG_WARN("get unexpected null", K(stmt), K(ret));
} else {
OPT_TRACE_TITLE("start transform dblink write");
ObTransformDBlink trans(ctx_);
trans.set_transformer_type(PROCESS_DBLINK);
trans.set_transform_for_write(true);
@ -253,6 +254,7 @@ int ObTransformerImpl::do_transform_dblink_read(ObDMLStmt *&stmt)
ret = OB_ERR_UNEXPECTED;
LOG_WARN("get unexpected null", K(stmt), K(ret));
} else {
OPT_TRACE_TITLE("start transform dblink read");
ObTransformDBlink trans(ctx_);
trans.set_transformer_type(PROCESS_DBLINK);
trans.set_transform_for_write(false);