From 86e1a736fe7a88e8674bd13d3c8b820a14cfa7d3 Mon Sep 17 00:00:00 2001 From: haitaoyang Date: Fri, 22 Nov 2024 12:45:42 +0000 Subject: [PATCH] fix mv refresh sql execution in oracle mode --- src/storage/compaction/ob_mview_compaction_util.cpp | 8 ++++++-- src/storage/compaction/ob_mview_compaction_util.h | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/storage/compaction/ob_mview_compaction_util.cpp b/src/storage/compaction/ob_mview_compaction_util.cpp index 53595be26..6d4faa82d 100644 --- a/src/storage/compaction/ob_mview_compaction_util.cpp +++ b/src/storage/compaction/ob_mview_compaction_util.cpp @@ -303,7 +303,7 @@ int ObMviewCompactionHelper::create_inner_session( LOG_WARN("Failed to init tenant in session", K(ret), K(tenant_id), K(database_id)); } else if (OB_FAIL(session->set_default_database(database_schema->get_database_name()))) { LOG_WARN("Failed to set default database", K(ret), K(tenant_id), K(database_id)); - } else if (OB_FAIL(set_params_to_session(session))) { + } else if (OB_FAIL(set_params_to_session(is_oracle_mode, session))) { LOG_WARN("Failed to set params to session", K(ret)); } else { session->set_inner_session(); @@ -355,7 +355,7 @@ void ObMviewCompactionHelper::release_inner_connection(common::sqlclient::ObISQL } } -int ObMviewCompactionHelper::set_params_to_session(sql::ObSQLSessionInfo *session) +int ObMviewCompactionHelper::set_params_to_session(const bool is_oracle_mode, sql::ObSQLSessionInfo *session) { int ret = OB_SUCCESS; ObObj param_val; @@ -365,6 +365,10 @@ int ObMviewCompactionHelper::set_params_to_session(sql::ObSQLSessionInfo *sessio param_val.set_int(ObConsistencyLevel::WEAK); OZ(session->update_sys_variable(SYS_VAR_OB_READ_CONSISTENCY, param_val)); } + if (OB_SUCC(ret)) { + param_val.set_int(is_oracle_mode ? ObCompatibilityMode::ORACLE_MODE : ObCompatibilityMode::MYSQL_MODE); + OZ(session->update_sys_variable(SYS_VAR_OB_COMPATIBILITY_MODE, param_val)); + } if (OB_SUCC(ret)) { ObObj result_val; if (OB_FAIL(session->get_sys_variable(SYS_VAR_OB_QUERY_TIMEOUT, result_val))) { diff --git a/src/storage/compaction/ob_mview_compaction_util.h b/src/storage/compaction/ob_mview_compaction_util.h index cf4c72dd6..6619221a7 100644 --- a/src/storage/compaction/ob_mview_compaction_util.h +++ b/src/storage/compaction/ob_mview_compaction_util.h @@ -137,7 +137,7 @@ public: static void release_inner_session(sql::ObFreeSessionCtx &free_session_ctx, sql::ObSQLSessionInfo *&session); static int create_inner_connection(sql::ObSQLSessionInfo *session, common::sqlclient::ObISQLConnection *&connection); static void release_inner_connection(common::sqlclient::ObISQLConnection *&connection); - static int set_params_to_session(sql::ObSQLSessionInfo *session); + static int set_params_to_session(bool is_oracle_mode, sql::ObSQLSessionInfo *session); static int validate_row_count(const ObMergeParameter &merge_param, const int64_t major_row_count); private: static int convert_datum_range(