diff options
Diffstat (limited to 'sql/handler.h')
-rw-r--r-- | sql/handler.h | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/sql/handler.h b/sql/handler.h index 92e4001a395..9acdd47bfc2 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -530,6 +530,8 @@ enum legacy_db_type DB_TYPE_FIRST_DYNAMIC=45, DB_TYPE_DEFAULT=127 // Must be last }; + +enum xa_binlog_state {XA_PREPARE=0, XA_COMPLETE}; /* Better name for DB_TYPE_UNKNOWN. Should be used for engines that do not have a hard-coded type value here. @@ -816,7 +818,6 @@ struct st_system_tablename const char *tablename; }; - typedef ulonglong my_xid; // this line is the same as in log_event.h #define MYSQL_XID_PREFIX "MySQLXid" #define MYSQL_XID_PREFIX_LEN 8 // must be a multiple of 8 @@ -904,6 +905,16 @@ struct xid_t { }; typedef struct xid_t XID; +/* + Struct to describe the user XA state for recovery. +*/ +struct xa_recovery_member +{ + XID xid; + enum xa_binlog_state state; // xid's binlog status - prepared or completed + uint in_engine_prepare; // number of engines that have xid prepared +}; + /* for recover() handlerton call */ #define MIN_XID_LIST_SIZE 128 #define MAX_XID_LIST_SIZE (1024*128) @@ -5176,7 +5187,7 @@ int ha_commit_one_phase(THD *thd, bool all); int ha_commit_trans(THD *thd, bool all); int ha_rollback_trans(THD *thd, bool all); int ha_prepare(THD *thd); -int ha_recover(HASH *commit_list); +int ha_recover(HASH *commit_list, HASH *xa_recover_list, uint *xa_recover_htons); /* transactions: these functions never call handlerton functions directly */ int ha_enable_transaction(THD *thd, bool on); @@ -5302,5 +5313,5 @@ void print_keydup_error(TABLE *table, KEY *key, myf errflag); int del_global_index_stat(THD *thd, TABLE* table, KEY* key_info); int del_global_table_stat(THD *thd, const LEX_CSTRING *db, const LEX_CSTRING *table); -uint ha_count_rw_all(THD *thd, Ha_trx_info **ptr_ha_info); +uint ha_count_rw_all(THD *thd, Ha_trx_info **ptr_ha_info, bool count_through); #endif /* HANDLER_INCLUDED */ |