diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2018-09-07 22:09:28 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2018-09-07 22:09:28 +0300 |
commit | 4901f31c13f91e130f077f2f77b32c40b0036e32 (patch) | |
tree | 586f0ffeba0748e75064899d22d8179897d0df7f /storage/innobase/log | |
parent | c3a80175b1978ced6c2a89a92707d24149aee9e9 (diff) | |
parent | 59950df533ab7231c77a59ec3e27cef855318939 (diff) | |
download | mariadb-git-4901f31c13f91e130f077f2f77b32c40b0036e32.tar.gz |
Merge 10.2 into 10.3
Diffstat (limited to 'storage/innobase/log')
-rw-r--r-- | storage/innobase/log/log0recv.cc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc index f5c3f1ecb23..fe42de2b7a2 100644 --- a/storage/innobase/log/log0recv.cc +++ b/storage/innobase/log/log0recv.cc @@ -169,6 +169,35 @@ typedef std::map< static recv_spaces_t recv_spaces; +/** States of recv_addr_t */ +enum recv_addr_state { + /** not yet processed */ + RECV_NOT_PROCESSED, + /** page is being read */ + RECV_BEING_READ, + /** log records are being applied on the page */ + RECV_BEING_PROCESSED, + /** log records have been applied on the page */ + RECV_PROCESSED, + /** log records have been discarded because the tablespace + does not exist */ + RECV_DISCARDED +}; + +/** Hashed page file address struct */ +struct recv_addr_t{ + /** recovery state of the page */ + recv_addr_state state; + /** tablespace identifier */ + unsigned space:32; + /** page number */ + unsigned page_no:32; + /** list of log records for this page */ + UT_LIST_BASE_NODE_T(recv_t) rec_list; + /** hash node in the hash bucket chain */ + hash_node_t addr_hash; +}; + /** Report optimized DDL operation (without redo log), corresponding to MLOG_INDEX_LOAD. @param[in] space_id tablespace identifier @@ -1174,6 +1203,7 @@ parse_log: redo log been written with something older than InnoDB Plugin 1.0.4. */ ut_ad(offs == FIL_PAGE_TYPE + || srv_is_undo_tablespace(space_id) || offs == IBUF_TREE_SEG_HEADER + IBUF_HEADER + FSEG_HDR_OFFSET || offs == PAGE_BTR_IBUF_FREE_LIST @@ -1199,6 +1229,7 @@ parse_log: ut_ad(0 /* fil_crypt_rotate_page() writes this */ || offs == FIL_PAGE_SPACE_ID + || srv_is_undo_tablespace(space_id) || offs == IBUF_TREE_SEG_HEADER + IBUF_HEADER + FSEG_HDR_SPACE || offs == IBUF_TREE_SEG_HEADER |