From de24916f30a152a9338060e88f9ad606d09c38cc Mon Sep 17 00:00:00 2001 From: seuwebber Date: Tue, 29 Oct 2024 05:22:33 +0000 Subject: [PATCH] placeholder for system trigger --- src/share/schema/ob_schema_struct.cpp | 25 ++++++++++--------------- src/share/schema/ob_schema_struct.h | 6 ++++-- src/share/schema/ob_trigger_info.h | 19 ++++++++++++++++--- 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/src/share/schema/ob_schema_struct.cpp b/src/share/schema/ob_schema_struct.cpp index 349b9efb8..9172559d8 100644 --- a/src/share/schema/ob_schema_struct.cpp +++ b/src/share/schema/ob_schema_struct.cpp @@ -8442,7 +8442,8 @@ ObUserInfo::ObUserInfo(ObIAllocator *allocator) proxy_user_info_(NULL), proxy_user_info_capacity_(0), proxy_user_info_cnt_(0), - user_flags_() + user_flags_(), + trigger_list_() { } @@ -8551,6 +8552,9 @@ int ObUserInfo::assign(const ObUserInfo &other) if (OB_SUCC(ret)) { user_flags_ = other.user_flags_; } + if (OB_SUCC(ret) && trigger_list_.assign(other.trigger_list_)) { + LOG_WARN("assign trigger list failed", K(ret)); + } } if (OB_FAIL(ret)) { error_ret_ = ret; @@ -8690,6 +8694,7 @@ void ObUserInfo::reset() proxy_user_info_cnt_ = 0; proxy_user_info_capacity_ = 0; user_flags_.reset(); + trigger_list_.reset(); ObSchema::reset(); ObPriv::reset(); } @@ -8721,6 +8726,7 @@ int64_t ObUserInfo::get_convert_size() const convert_size += proxy_user_info_[i]->get_convert_size(); } } + convert_size += trigger_list_.get_data_size(); return convert_size; } @@ -8772,6 +8778,7 @@ OB_DEF_SERIALIZE(ObUserInfo) if (OB_SUCC(ret)) { LST_DO_CODE(OB_UNIS_ENCODE, user_flags_); + LST_DO_CODE(OB_UNIS_ENCODE, trigger_list_); } return ret; } @@ -8869,24 +8876,11 @@ OB_DEF_DESERIALIZE(ObUserInfo) LOG_WARN("deserialize proxi info array failed", K(ret)); } } - if (OB_SUCC(ret)) { LST_DO_CODE(OB_UNIS_DECODE, user_flags_); + LST_DO_CODE(OB_UNIS_DECODE, trigger_list_); } } - if (OB_SUCC(ret)) { - if (OB_FAIL(deserialize_proxy_info_array_(proxied_user_info_, proxied_user_info_cnt_, proxied_user_info_capacity_, - buf, data_len, pos))) { - LOG_WARN("deserialize proxi info array failed", K(ret)); - } else if (OB_FAIL(deserialize_proxy_info_array_(proxy_user_info_, proxy_user_info_cnt_, proxy_user_info_capacity_, - buf, data_len, pos))) { - LOG_WARN("deserialize proxi info array failed", K(ret)); - } - } - - if (OB_SUCC(ret)) { - LST_DO_CODE(OB_UNIS_DECODE, user_flags_); - } return ret; } @@ -8925,6 +8919,7 @@ OB_DEF_SERIALIZE_SIZE(ObUserInfo) } } LST_DO_CODE(OB_UNIS_ADD_LEN, user_flags_); + LST_DO_CODE(OB_UNIS_ADD_LEN, trigger_list_); return len; } diff --git a/src/share/schema/ob_schema_struct.h b/src/share/schema/ob_schema_struct.h index 953cb8f46..a1f1aee07 100755 --- a/src/share/schema/ob_schema_struct.h +++ b/src/share/schema/ob_schema_struct.h @@ -4462,7 +4462,8 @@ public: max_connections_(0), max_user_connections_(0), proxied_user_info_(NULL), proxied_user_info_capacity_(0), proxied_user_info_cnt_(0), - proxy_user_info_(NULL), proxy_user_info_capacity_(0), proxy_user_info_cnt_(0), user_flags_() + proxy_user_info_(NULL), proxy_user_info_capacity_(0), proxy_user_info_cnt_(0), user_flags_(), + trigger_list_() { } explicit ObUserInfo(common::ObIAllocator *allocator); virtual ~ObUserInfo(); @@ -4554,7 +4555,7 @@ public: K_(profile_id), K_(proxied_user_info_cnt), K_(proxy_user_info_cnt), "proxied info", ObArrayWrap(proxied_user_info_, proxied_user_info_cnt_), "proxy info", ObArrayWrap(proxy_user_info_, proxy_user_info_cnt_), - K_(user_flags) + K_(user_flags), K_(trigger_list) ); bool role_exists(const uint64_t role_id, const uint64_t option) const; int get_seq_by_role_id(uint64_t role_id, uint64_t &seq) const; @@ -4604,6 +4605,7 @@ private: uint64_t proxy_user_info_capacity_; uint64_t proxy_user_info_cnt_; ObUserFlags user_flags_; + common::ObSArray trigger_list_; DISABLE_COPY_ASSIGN(ObUserInfo); }; diff --git a/src/share/schema/ob_trigger_info.h b/src/share/schema/ob_trigger_info.h index fb10b4b9c..582840a26 100644 --- a/src/share/schema/ob_trigger_info.h +++ b/src/share/schema/ob_trigger_info.h @@ -54,7 +54,17 @@ public: OB_INLINE static bool is_update_event(uint64_t value) { return TE_UPDATE == value; } OB_INLINE static bool is_delete_event(uint64_t value) { return TE_DELETE == value; } public: - uint64_t bit_value_; + union { + uint64_t bit_value_; + struct { + uint64_t insert_:1; + uint64_t update_:1; + uint64_t delete_:1; + uint64_t logon_ :1; + uint64_t logoff_:1; + uint64_t reserved_:59; + }; + }; #undef TE_INSERT #undef TE_UPDATE #undef TE_DELETE @@ -105,7 +115,9 @@ public: uint64_t after_row_:1; uint64_t after_stmt_:1; uint64_t instead_row_:1; - uint64_t reserved_:58; + uint64_t before_event_:1; + uint64_t after_event_:1; + uint64_t reserved_:56; }; }; }; @@ -636,7 +648,8 @@ protected: uint64_t is_has_sequence_ : 1; uint64_t is_has_out_param_ : 1; uint64_t is_external_state_ : 1; - uint64_t reserved_:54; + uint64_t is_has_auto_trans_ : 1; + uint64_t reserved_:53; }; }; };