summaryrefslogtreecommitdiff
path: root/storage/innobase/include/log0log.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/innobase/include/log0log.h')
-rw-r--r--storage/innobase/include/log0log.h47
1 files changed, 24 insertions, 23 deletions
diff --git a/storage/innobase/include/log0log.h b/storage/innobase/include/log0log.h
index 8769d7066fe..cc8625dfa32 100644
--- a/storage/innobase/include/log0log.h
+++ b/storage/innobase/include/log0log.h
@@ -380,7 +380,7 @@ log_refresh_stats(void);
#define LOG_BLOCK_KEY 4 /* encryption key version
before LOG_BLOCK_CHECKSUM;
- in LOG_HEADER_FORMAT_ENC_10_4 only */
+ in log_t::FORMAT_ENC_10_4 only */
#define LOG_BLOCK_CHECKSUM 4 /* 4 byte checksum of the log block
contents; in InnoDB versions
< 3.23.52 this did not contain the
@@ -436,23 +436,6 @@ or the MySQL version that created the redo log file. */
IB_TO_STR(MYSQL_VERSION_MINOR) "." \
IB_TO_STR(MYSQL_VERSION_PATCH)
-/** The original (not version-tagged) InnoDB redo log format */
-#define LOG_HEADER_FORMAT_3_23 0
-/** The MySQL 5.7.9/MariaDB 10.2.2 log format */
-#define LOG_HEADER_FORMAT_10_2 1
-/** The MariaDB 10.3.2 log format.
-To prevent crash-downgrade to earlier 10.2 due to the inability to
-roll back a retroactively introduced TRX_UNDO_RENAME_TABLE undo log record,
-MariaDB 10.2.18 and later will use the 10.3 format, but LOG_HEADER_SUBFORMAT
-1 instead of 0. MariaDB 10.3 will use subformat 0 (5.7-style TRUNCATE) or 2
-(MDEV-13564 backup-friendly TRUNCATE). */
-#define LOG_HEADER_FORMAT_10_3 103
-#define LOG_HEADER_FORMAT_10_4 104
-/** The MariaDB 10.4.0 log format (only with innodb_encrypt_log=ON) */
-#define LOG_HEADER_FORMAT_ENC_10_4 (104U | 1U << 31)
-/** Encrypted MariaDB redo log */
-#define LOG_HEADER_FORMAT_ENCRYPTED (1U<<31)
-
/* @} */
#define LOG_CHECKPOINT_1 OS_FILE_LOG_BLOCK_SIZE
@@ -477,6 +460,24 @@ typedef ib_mutex_t FlushOrderMutex;
/** Redo log buffer */
struct log_t{
+ /** The original (not version-tagged) InnoDB redo log format */
+ static constexpr uint32_t FORMAT_3_23 = 0;
+ /** The MySQL 5.7.9/MariaDB 10.2.2 log format */
+ static constexpr uint32_t FORMAT_10_2 = 1;
+ /** The MariaDB 10.3.2 log format.
+ To prevent crash-downgrade to earlier 10.2 due to the inability to
+ roll back a retroactively introduced TRX_UNDO_RENAME_TABLE undo log record,
+ MariaDB 10.2.18 and later will use the 10.3 format, but LOG_HEADER_SUBFORMAT
+ 1 instead of 0. MariaDB 10.3 will use subformat 0 (5.7-style TRUNCATE) or 2
+ (MDEV-13564 backup-friendly TRUNCATE). */
+ static constexpr uint32_t FORMAT_10_3 = 103;
+ /** The MariaDB 10.4.0 log format. */
+ static constexpr uint32_t FORMAT_10_4 = 104;
+ /** Encrypted MariaDB redo log */
+ static constexpr uint32_t FORMAT_ENCRYPTED = 1U << 31;
+ /** The MariaDB 10.4.0 log format (only with innodb_encrypt_log=ON) */
+ static constexpr uint32_t FORMAT_ENC_10_4 = FORMAT_10_4 | FORMAT_ENCRYPTED;
+
MY_ALIGNED(CACHE_LINE_SIZE)
lsn_t lsn; /*!< log sequence number */
ulong buf_free; /*!< first free offset within the log
@@ -525,7 +526,7 @@ struct log_t{
struct files {
/** number of files */
ulint n_files;
- /** format of the redo log: e.g., LOG_HEADER_FORMAT_10_4 */
+ /** format of the redo log: e.g., FORMAT_10_4 */
uint32_t format;
/** redo log subformat: 0 with separately logged TRUNCATE,
2 with fully redo-logged TRUNCATE (1 in MariaDB 10.2) */
@@ -543,7 +544,7 @@ struct log_t{
lsn_t scanned_lsn;
/** @return whether the redo log is encrypted */
- bool is_encrypted() const { return format & LOG_HEADER_FORMAT_ENCRYPTED; }
+ bool is_encrypted() const { return format & FORMAT_ENCRYPTED; }
/** @return capacity in bytes */
lsn_t capacity() const{ return (file_size - LOG_FILE_HDR_SIZE) * n_files; }
/** Calculate the offset of a log sequence number.
@@ -686,14 +687,14 @@ public:
/** @return the log block header + trailer size */
unsigned framing_size() const
{
- return log.format == LOG_HEADER_FORMAT_ENC_10_4
+ return log.format == FORMAT_ENC_10_4
? LOG_BLOCK_HDR_SIZE + LOG_BLOCK_KEY + LOG_BLOCK_CHECKSUM
: LOG_BLOCK_HDR_SIZE + LOG_BLOCK_CHECKSUM;
}
/** @return the log block payload size */
unsigned payload_size() const
{
- return log.format == LOG_HEADER_FORMAT_ENC_10_4
+ return log.format == FORMAT_ENC_10_4
? OS_FILE_LOG_BLOCK_SIZE - LOG_BLOCK_HDR_SIZE - LOG_BLOCK_CHECKSUM -
LOG_BLOCK_KEY
: OS_FILE_LOG_BLOCK_SIZE - LOG_BLOCK_HDR_SIZE - LOG_BLOCK_CHECKSUM;
@@ -701,7 +702,7 @@ public:
/** @return the log block trailer offset */
unsigned trailer_offset() const
{
- return log.format == LOG_HEADER_FORMAT_ENC_10_4
+ return log.format == FORMAT_ENC_10_4
? OS_FILE_LOG_BLOCK_SIZE - LOG_BLOCK_CHECKSUM - LOG_BLOCK_KEY
: OS_FILE_LOG_BLOCK_SIZE - LOG_BLOCK_CHECKSUM;
}