From 9eeefd68f5427e2c99984e36f6b1bdc8b40cc502 Mon Sep 17 00:00:00 2001 From: cx0 Date: Thu, 3 Mar 2022 14:45:49 +0800 Subject: [PATCH] fix bug in check_multi_update_table_conflict --- src/sql/resolver/dml/ob_update_resolver.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/sql/resolver/dml/ob_update_resolver.cpp b/src/sql/resolver/dml/ob_update_resolver.cpp index 8bd0b7bb2..621d48609 100644 --- a/src/sql/resolver/dml/ob_update_resolver.cpp +++ b/src/sql/resolver/dml/ob_update_resolver.cpp @@ -354,9 +354,15 @@ int ObUpdateResolver::check_multi_update_table_conflict() if (OB_ISNULL(table1) || OB_ISNULL(table2)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("tables are null", K(table1), K(table2)); - } else if (ta1.table_id_ != ta2.table_id_ && table1->ref_id_ == table2->ref_id_) { - ret = OB_NOT_SUPPORTED; - LOG_USER_ERROR(OB_NOT_SUPPORTED, "multiple aliases to same table"); + } else if (ta1.table_id_ != ta2.table_id_) { + uint64_t base_table_id1 = table1->is_generated_table() ? + table1->get_base_table_item().ref_id_ : table1->ref_id_; + uint64_t base_table_id2 = table2->is_generated_table() ? + table2->get_base_table_item().ref_id_ : table2->ref_id_; + if (base_table_id1 == base_table_id2) { + ret = OB_NOT_SUPPORTED; + LOG_USER_ERROR(OB_NOT_SUPPORTED, "multiple aliases to same table"); + } } } }