summaryrefslogtreecommitdiff
path: root/storage/innobase/include/mtr0types.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/innobase/include/mtr0types.h')
-rw-r--r--storage/innobase/include/mtr0types.h268
1 files changed, 266 insertions, 2 deletions
diff --git a/storage/innobase/include/mtr0types.h b/storage/innobase/include/mtr0types.h
index 43368c0b726..69a68830af1 100644
--- a/storage/innobase/include/mtr0types.h
+++ b/storage/innobase/include/mtr0types.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Oracle and/or its affiliates. All Rights Reserved.
+Copyright (c) 1995, 2015, Oracle and/or its affiliates. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -26,6 +26,270 @@ Created 11/26/1995 Heikki Tuuri
#ifndef mtr0types_h
#define mtr0types_h
+#ifndef UNIV_INNOCHECKSUM
+#include "sync0rw.h"
+#endif /* UNIV_INNOCHECKSUM */
+
struct mtr_t;
-#endif
+/** Logging modes for a mini-transaction */
+enum mtr_log_t {
+ /** Default mode: log all operations modifying disk-based data */
+ MTR_LOG_ALL = 21,
+
+ /** Log no operations and dirty pages are not added to the flush list */
+ MTR_LOG_NONE = 22,
+
+ /** Don't generate REDO log but add dirty pages to flush list */
+ MTR_LOG_NO_REDO = 23,
+
+ /** Inserts are logged in a shorter form */
+ MTR_LOG_SHORT_INSERTS = 24
+};
+
+/** @name Log item types
+The log items are declared 'byte' so that the compiler can warn if val
+and type parameters are switched in a call to mlog_write_ulint. NOTE!
+For 1 - 8 bytes, the flag value must give the length also! @{ */
+enum mlog_id_t {
+ /** if the mtr contains only one log record for one page,
+ i.e., write_initial_log_record has been called only once,
+ this flag is ORed to the type of that first log record */
+ MLOG_SINGLE_REC_FLAG = 128,
+
+ /** one byte is written */
+ MLOG_1BYTE = 1,
+
+ /** 2 bytes ... */
+ MLOG_2BYTES = 2,
+
+ /** 4 bytes ... */
+ MLOG_4BYTES = 4,
+
+ /** 8 bytes ... */
+ MLOG_8BYTES = 8,
+
+ /** Record insert */
+ MLOG_REC_INSERT = 9,
+
+ /** Mark clustered index record deleted */
+ MLOG_REC_CLUST_DELETE_MARK = 10,
+
+ /** Mark secondary index record deleted */
+ MLOG_REC_SEC_DELETE_MARK = 11,
+
+ /** update of a record, preserves record field sizes */
+ MLOG_REC_UPDATE_IN_PLACE = 13,
+
+ /*!< Delete a record from a page */
+ MLOG_REC_DELETE = 14,
+
+ /** Delete record list end on index page */
+ MLOG_LIST_END_DELETE = 15,
+
+ /** Delete record list start on index page */
+ MLOG_LIST_START_DELETE = 16,
+
+ /** Copy record list end to a new created index page */
+ MLOG_LIST_END_COPY_CREATED = 17,
+
+ /** Reorganize an index page in ROW_FORMAT=REDUNDANT */
+ MLOG_PAGE_REORGANIZE = 18,
+
+ /** Create an index page */
+ MLOG_PAGE_CREATE = 19,
+
+ /** Insert entry in an undo log */
+ MLOG_UNDO_INSERT = 20,
+
+ /** erase an undo log page end */
+ MLOG_UNDO_ERASE_END = 21,
+
+ /** initialize a page in an undo log */
+ MLOG_UNDO_INIT = 22,
+
+ /** discard an update undo log header */
+ MLOG_UNDO_HDR_DISCARD = 23,
+
+ /** reuse an insert undo log header */
+ MLOG_UNDO_HDR_REUSE = 24,
+
+ /** create an undo log header */
+ MLOG_UNDO_HDR_CREATE = 25,
+
+ /** mark an index record as the predefined minimum record */
+ MLOG_REC_MIN_MARK = 26,
+
+ /** initialize an ibuf bitmap page */
+ MLOG_IBUF_BITMAP_INIT = 27,
+
+#ifdef UNIV_LOG_LSN_DEBUG
+ /** Current LSN */
+ MLOG_LSN = 28,
+#endif /* UNIV_LOG_LSN_DEBUG */
+
+ /** this means that a file page is taken into use and the prior
+ contents of the page should be ignored: in recovery we must not
+ trust the lsn values stored to the file page.
+ Note: it's deprecated because it causes crash recovery problem
+ in bulk create index, and actually we don't need to reset page
+ lsn in recv_recover_page_func() now. */
+ MLOG_INIT_FILE_PAGE = 29,
+
+ /** write a string to a page */
+ MLOG_WRITE_STRING = 30,
+
+ /** If a single mtr writes several log records, this log
+ record ends the sequence of these records */
+ MLOG_MULTI_REC_END = 31,
+
+ /** dummy log record used to pad a log block full */
+ MLOG_DUMMY_RECORD = 32,
+
+ /** log record about an .ibd file creation */
+ //MLOG_FILE_CREATE = 33,
+
+ /** rename databasename/tablename (no .ibd file name suffix) */
+ //MLOG_FILE_RENAME = 34,
+
+ /** delete a tablespace file that starts with (space_id,page_no) */
+ MLOG_FILE_DELETE = 35,
+
+ /** mark a compact index record as the predefined minimum record */
+ MLOG_COMP_REC_MIN_MARK = 36,
+
+ /** create a compact index page */
+ MLOG_COMP_PAGE_CREATE = 37,
+
+ /** compact record insert */
+ MLOG_COMP_REC_INSERT = 38,
+
+ /** mark compact clustered index record deleted */
+ MLOG_COMP_REC_CLUST_DELETE_MARK = 39,
+
+ /** mark compact secondary index record deleted; this log
+ record type is redundant, as MLOG_REC_SEC_DELETE_MARK is
+ independent of the record format. */
+ MLOG_COMP_REC_SEC_DELETE_MARK = 40,
+
+ /** update of a compact record, preserves record field sizes */
+ MLOG_COMP_REC_UPDATE_IN_PLACE = 41,
+
+ /** delete a compact record from a page */
+ MLOG_COMP_REC_DELETE = 42,
+
+ /** delete compact record list end on index page */
+ MLOG_COMP_LIST_END_DELETE = 43,
+
+ /*** delete compact record list start on index page */
+ MLOG_COMP_LIST_START_DELETE = 44,
+
+ /** copy compact record list end to a new created index page */
+ MLOG_COMP_LIST_END_COPY_CREATED = 45,
+
+ /** reorganize an index page */
+ MLOG_COMP_PAGE_REORGANIZE = 46,
+
+ /** log record about creating an .ibd file, with format */
+ MLOG_FILE_CREATE2 = 47,
+
+ /** write the node pointer of a record on a compressed
+ non-leaf B-tree page */
+ MLOG_ZIP_WRITE_NODE_PTR = 48,
+
+ /** write the BLOB pointer of an externally stored column
+ on a compressed page */
+ MLOG_ZIP_WRITE_BLOB_PTR = 49,
+
+ /** write to compressed page header */
+ MLOG_ZIP_WRITE_HEADER = 50,
+
+ /** compress an index page */
+ MLOG_ZIP_PAGE_COMPRESS = 51,
+
+ /** compress an index page without logging it's image */
+ MLOG_ZIP_PAGE_COMPRESS_NO_DATA = 52,
+
+ /** reorganize a compressed page */
+ MLOG_ZIP_PAGE_REORGANIZE = 53,
+
+ /** rename a tablespace file that starts with (space_id,page_no) */
+ MLOG_FILE_RENAME2 = 54,
+
+ /** note the first use of a tablespace file since checkpoint */
+ MLOG_FILE_NAME = 55,
+
+ /** note that all buffered log was written since a checkpoint */
+ MLOG_CHECKPOINT = 56,
+
+ /** Create a R-Tree index page */
+ MLOG_PAGE_CREATE_RTREE = 57,
+
+ /** create a R-tree compact page */
+ MLOG_COMP_PAGE_CREATE_RTREE = 58,
+
+ /** this means that a file page is taken into use.
+ We use it to replace MLOG_INIT_FILE_PAGE. */
+ MLOG_INIT_FILE_PAGE2 = 59,
+
+ /** Table is being truncated. (Marked only for file-per-table) */
+ MLOG_TRUNCATE = 60,
+
+ /** notify that an index tree is being loaded without writing
+ redo log about individual pages */
+ MLOG_INDEX_LOAD = 61,
+
+ /** biggest value (used in assertions) */
+ MLOG_BIGGEST_TYPE = MLOG_INDEX_LOAD,
+
+ /** log record for writing/updating crypt data of
+ a tablespace */
+ MLOG_FILE_WRITE_CRYPT_DATA = 100,
+};
+
+/* @} */
+
+#define EXTRA_CHECK_MLOG_NUMBER(x) \
+ ((x) == MLOG_FILE_WRITE_CRYPT_DATA)
+
+/** Size of a MLOG_CHECKPOINT record in bytes.
+The record consists of a MLOG_CHECKPOINT byte followed by
+mach_write_to_8(checkpoint_lsn). */
+#define SIZE_OF_MLOG_CHECKPOINT 9
+
+/** Types for the mlock objects to store in the mtr memo; NOTE that the
+first 3 values must be RW_S_LATCH, RW_X_LATCH, RW_NO_LATCH */
+enum mtr_memo_type_t {
+#ifndef UNIV_INNOCHECKSUM
+ MTR_MEMO_PAGE_S_FIX = RW_S_LATCH,
+
+ MTR_MEMO_PAGE_X_FIX = RW_X_LATCH,
+
+ MTR_MEMO_PAGE_SX_FIX = RW_SX_LATCH,
+
+ MTR_MEMO_BUF_FIX = RW_NO_LATCH,
+#endif /* !UNIV_CHECKSUM */
+
+#ifdef UNIV_DEBUG
+ MTR_MEMO_MODIFY = 32,
+#endif /* UNIV_DEBUG */
+
+ MTR_MEMO_S_LOCK = 64,
+
+ MTR_MEMO_X_LOCK = 128,
+
+ MTR_MEMO_SX_LOCK = 256
+};
+
+#ifdef UNIV_DEBUG
+# define MTR_MAGIC_N 54551
+#endif /* UNIV_DEBUG */
+
+enum mtr_state_t {
+ MTR_STATE_INIT = 0,
+ MTR_STATE_ACTIVE = 12231,
+ MTR_STATE_COMMITTING = 56456,
+ MTR_STATE_COMMITTED = 34676
+};
+
+#endif /* mtr0types_h */