Fix: ob_last_schema_version need sync
This commit is contained in:
		@ -213,6 +213,7 @@ enum SessionSyncInfoType {
 | 
			
		||||
  SESSION_SYNC_TXN_PARTICIPANTS_INFO = 7, // 7: txn dynamic info
 | 
			
		||||
  SESSION_SYNC_TXN_EXTRA_INFO = 8,        // 8: txn dynamic info
 | 
			
		||||
  SESSION_SYNC_SEQUENCE_CURRVAL = 9, // for sequence currval
 | 
			
		||||
  SESSION_SYNC_ERROR_SYS_VAR = 10, // for error scene need sync sysvar info
 | 
			
		||||
  SESSION_SYNC_MAX_TYPE,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -362,6 +363,24 @@ public:
 | 
			
		||||
  static const int16_t CONINFO_BY_SESS = 0xC078;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// The current system variable synchronization will not trigger synchronization in
 | 
			
		||||
// the error reporting scenario. A new type is added here for variables that still
 | 
			
		||||
// need to be synchronized in the error reporting scenario
 | 
			
		||||
class ObErrorSyncSysVarEncoder : public ObSessInfoEncoder {
 | 
			
		||||
public:
 | 
			
		||||
  ObErrorSyncSysVarEncoder() : ObSessInfoEncoder() {}
 | 
			
		||||
  virtual ~ObErrorSyncSysVarEncoder() {}
 | 
			
		||||
  virtual int serialize(ObSQLSessionInfo &sess, char *buf, const int64_t length, int64_t &pos) override;
 | 
			
		||||
  virtual int deserialize(ObSQLSessionInfo &sess, const char *buf, const int64_t length, int64_t &pos) override;
 | 
			
		||||
  virtual int64_t get_serialize_size(ObSQLSessionInfo &sess) const override;
 | 
			
		||||
  virtual int fetch_sess_info(ObSQLSessionInfo &sess, char *buf, const int64_t length, int64_t &pos) override;
 | 
			
		||||
  virtual int64_t get_fetch_sess_info_size(ObSQLSessionInfo& sess) override;
 | 
			
		||||
  virtual int compare_sess_info(const char* current_sess_buf, int64_t current_sess_length,
 | 
			
		||||
                                const char* last_sess_buf, int64_t last_sess_length) override;
 | 
			
		||||
  virtual int display_sess_info(ObSQLSessionInfo &sess, const char* current_sess_buf,
 | 
			
		||||
                                int64_t current_sess_length, const char* last_sess_buf, int64_t last_sess_length) override;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define DEF_SESSION_TXN_ENCODER(CLS)                                    \
 | 
			
		||||
class CLS final : public ObSessInfoEncoder {                            \
 | 
			
		||||
public:                                                                 \
 | 
			
		||||
@ -1024,6 +1043,7 @@ public:
 | 
			
		||||
  ObAppCtxInfoEncoder &get_app_ctx_encoder() { return app_ctx_info_encoder_; }
 | 
			
		||||
  ObClientIdInfoEncoder &get_client_info_encoder() { return client_id_info_encoder_;}
 | 
			
		||||
  ObControlInfoEncoder &get_control_info_encoder() { return control_info_encoder_;}
 | 
			
		||||
  ObErrorSyncSysVarEncoder &get_error_sync_sys_var_encoder() { return error_sync_sys_var_encoder_;}
 | 
			
		||||
  ObSequenceCurrvalEncoder &get_sequence_currval_encoder() { return sequence_currval_encoder_; }
 | 
			
		||||
  ObContextsMap &get_contexts_map() { return contexts_map_; }
 | 
			
		||||
  ObSequenceCurrvalMap &get_sequence_currval_map() { return sequence_currval_map_; }
 | 
			
		||||
@ -1335,7 +1355,8 @@ private:
 | 
			
		||||
                            &txn_dynamic_info_encoder_,
 | 
			
		||||
                            &txn_participants_info_encoder_,
 | 
			
		||||
                            &txn_extra_info_encoder_,
 | 
			
		||||
                            &sequence_currval_encoder_
 | 
			
		||||
                            &sequence_currval_encoder_,
 | 
			
		||||
                            &error_sync_sys_var_encoder_
 | 
			
		||||
                            };
 | 
			
		||||
  ObSysVarEncoder sys_var_encoder_;
 | 
			
		||||
  //ObUserVarEncoder usr_var_encoder_;
 | 
			
		||||
@ -1348,6 +1369,7 @@ private:
 | 
			
		||||
  ObTxnParticipantsInfoEncoder txn_participants_info_encoder_;
 | 
			
		||||
  ObTxnExtraInfoEncoder txn_extra_info_encoder_;
 | 
			
		||||
  ObSequenceCurrvalEncoder sequence_currval_encoder_;
 | 
			
		||||
  ObErrorSyncSysVarEncoder error_sync_sys_var_encoder_;
 | 
			
		||||
public:
 | 
			
		||||
  void post_sync_session_info();
 | 
			
		||||
  void prep_txn_free_route_baseline(bool reset_audit = true);
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user