fix update view with instead of trigger raise an error when generate dml index info
This commit is contained in:
@ -610,10 +610,11 @@ int ObUpdateLogPlan::prepare_table_dml_info_special(const ObDmlTableInfo& table_
|
|||||||
ObSchemaGetterGuard* schema_guard = optimizer_context_.get_schema_guard();
|
ObSchemaGetterGuard* schema_guard = optimizer_context_.get_schema_guard();
|
||||||
ObSQLSessionInfo* session_info = optimizer_context_.get_session_info();
|
ObSQLSessionInfo* session_info = optimizer_context_.get_session_info();
|
||||||
const ObTableSchema* index_schema = NULL;
|
const ObTableSchema* index_schema = NULL;
|
||||||
|
const ObUpdateStmt *update_stmt = get_stmt();
|
||||||
const ObUpdateTableInfo& update_info = static_cast<const ObUpdateTableInfo&>(table_info);
|
const ObUpdateTableInfo& update_info = static_cast<const ObUpdateTableInfo&>(table_info);
|
||||||
if (OB_ISNULL(schema_guard) || OB_ISNULL(session_info)) {
|
if (OB_ISNULL(schema_guard) || OB_ISNULL(session_info) || OB_ISNULL(update_stmt)) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("get unexpected null",K(ret), K(schema_guard), K(session_info));
|
LOG_WARN("get unexpected null",K(ret), K(schema_guard), K(session_info), K(update_stmt));
|
||||||
} else if (OB_FAIL(table_dml_info->init_assignment_info(update_info.assignments_,
|
} else if (OB_FAIL(table_dml_info->init_assignment_info(update_info.assignments_,
|
||||||
optimizer_context_.get_expr_factory()))) {
|
optimizer_context_.get_expr_factory()))) {
|
||||||
LOG_WARN("failed to init assignemt info", K(ret));
|
LOG_WARN("failed to init assignemt info", K(ret));
|
||||||
@ -623,7 +624,8 @@ int ObUpdateLogPlan::prepare_table_dml_info_special(const ObDmlTableInfo& table_
|
|||||||
} else if (OB_ISNULL(index_schema)) {
|
} else if (OB_ISNULL(index_schema)) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("failed to get table schema", K(table_info), K(ret));
|
LOG_WARN("failed to get table schema", K(table_info), K(ret));
|
||||||
} else if (OB_FAIL(check_update_primary_key(index_schema, table_dml_info))) {
|
} else if (!update_stmt->has_instead_of_trigger() &&
|
||||||
|
OB_FAIL(check_update_primary_key(index_schema, table_dml_info))) {
|
||||||
LOG_WARN("failed to check update unique key", K(ret));
|
LOG_WARN("failed to check update unique key", K(ret));
|
||||||
} else if (!table_info.is_link_table_ &&
|
} else if (!table_info.is_link_table_ &&
|
||||||
OB_FAIL(check_update_part_key(index_schema, table_dml_info))) {
|
OB_FAIL(check_update_part_key(index_schema, table_dml_info))) {
|
||||||
|
|||||||
Reference in New Issue
Block a user