From 5470ac28be3eb07240badbb9d720a56cf697fffc Mon Sep 17 00:00:00 2001 From: lucky-sinx <2549261744@qq.com> Date: Fri, 15 Nov 2024 03:14:06 +0000 Subject: [PATCH] fix change user bug, if is authswitch and changeuser, judge is_ob_protocol_v2_support --- deps/oblib/src/rpc/obmysql/obsm_struct.h | 7 ++++++- src/observer/mysql/obmp_connect.cpp | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/deps/oblib/src/rpc/obmysql/obsm_struct.h b/deps/oblib/src/rpc/obmysql/obsm_struct.h index 286458e41..583c07a67 100644 --- a/deps/oblib/src/rpc/obmysql/obsm_struct.h +++ b/deps/oblib/src/rpc/obmysql/obsm_struct.h @@ -81,6 +81,7 @@ public: client_addr_port_ = 0; client_create_time_ = 0; has_service_name_ = false; + logined_ = false; } obmysql::ObCompressType get_compress_type() { @@ -144,7 +145,8 @@ public: common::ObCSProtocolType get_cs_protocol_type() const { common::ObCSProtocolType type = common::OB_INVALID_CS_TYPE; - if (is_in_auth_switch_phase()) { + if (is_in_auth_switch_phase() && !is_logined()) { + // if is change user, must is logined type = common::OB_MYSQL_CS_TYPE; } else if (proxy_cap_flags_.is_ob_protocol_v2_support()) { type = common::OB_2_0_CS_TYPE; @@ -168,6 +170,8 @@ public: inline void set_ssl_connect_phase() { connection_phase_ = rpc::ConnectionPhaseEnum::CPE_SSL_CONNECT; } inline void set_auth_phase() { connection_phase_ = rpc::ConnectionPhaseEnum::CPE_AUTHED; } inline void set_connect_phase() { connection_phase_ = rpc::ConnectionPhaseEnum::CPE_CONNECTED; } + inline bool is_logined() const { return logined_; } + inline void set_logined(bool logined) { logined_ = true; } public: obmysql::ObMySQLCapabilityFlags cap_flags_; bool is_proxy_; @@ -220,6 +224,7 @@ public: int32_t client_addr_port_; int64_t client_create_time_; bool has_service_name_; + bool logined_; }; } // end of namespace observer } // end of namespace oceanbase diff --git a/src/observer/mysql/obmp_connect.cpp b/src/observer/mysql/obmp_connect.cpp index c433db9ab..9420169d9 100644 --- a/src/observer/mysql/obmp_connect.cpp +++ b/src/observer/mysql/obmp_connect.cpp @@ -402,6 +402,7 @@ int ObMPConnect::process() "group_id", conn->group_id_, "sql_req_level", conn->sql_req_level_); conn->set_auth_phase(); + conn->set_logined(true); session->get_autocommit(autocommit); }