InnoDB Plugin  1.0
Macros | Functions
mtr0log.h File Reference
#include "univ.i"
#include "mtr0mtr.h"
#include "dict0types.h"
#include "mtr0log.ic"
Include dependency graph for mtr0log.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define MLOG_BUF_MARGIN   256

Functions

UNIV_INTERN void mlog_write_ulint (byte *ptr, ulint val, byte type, mtr_t *mtr)
UNIV_INTERN void mlog_write_ull (byte *ptr, ib_uint64_t val, mtr_t *mtr)
UNIV_INTERN void mlog_write_string (byte *ptr, const byte *str, ulint len, mtr_t *mtr)
UNIV_INTERN void mlog_log_string (byte *ptr, ulint len, mtr_t *mtr)
UNIV_INTERN void mlog_write_initial_log_record (const byte *ptr, byte type, mtr_t *mtr)
UNIV_INLINE byte * mlog_write_initial_log_record_for_file_op (ulint type, ulint space_id, ulint page_no, byte *log_ptr, mtr_t *mtr)
UNIV_INLINE void mlog_catenate_ulint (mtr_t *mtr, ulint val, ulint type)
UNIV_INTERN void mlog_catenate_string (mtr_t *mtr, const byte *str, ulint len)
UNIV_INLINE void mlog_catenate_ulint_compressed (mtr_t *mtr, ulint val)
UNIV_INLINE void mlog_catenate_ull_compressed (mtr_t *mtr, ib_uint64_t val)
UNIV_INLINE byte * mlog_open (mtr_t *mtr, ulint size)
UNIV_INLINE void mlog_close (mtr_t *mtr, byte *ptr)
UNIV_INLINE byte * mlog_write_initial_log_record_fast (const byte *ptr, byte type, byte *log_ptr, mtr_t *mtr)
UNIV_INTERN byte * mlog_parse_initial_log_record (byte *ptr, byte *end_ptr, byte *type, ulint *space, ulint *page_no)
UNIV_INTERN byte * mlog_parse_nbytes (ulint type, byte *ptr, byte *end_ptr, byte *page, void *page_zip)
UNIV_INTERN byte * mlog_parse_string (byte *ptr, byte *end_ptr, byte *page, void *page_zip)
UNIV_INTERN byte * mlog_open_and_write_index (mtr_t *mtr, const byte *rec, const dict_index_t *index, byte type, ulint size)
UNIV_INTERN byte * mlog_parse_index (byte *ptr, const byte *end_ptr, ibool comp, dict_index_t **index)

Detailed Description

Mini-transaction logging routines

Created 12/7/1995 Heikki Tuuri

Function Documentation

UNIV_INTERN void mlog_catenate_string ( mtr_t mtr,
const byte *  str,
ulint  len 
)

Catenates n bytes to the mtr log. in: string length

Parameters
mtrin: mtr
strin: string to write
UNIV_INLINE void mlog_catenate_ulint ( mtr_t mtr,
ulint  val,
ulint  type 
)

Catenates 1 - 4 bytes to the mtr log. in: MLOG_1BYTE, MLOG_2BYTES, MLOG_4BYTES

Catenates 1 - 4 bytes to the mtr log. The value is not compressed.

Parameters
mtrin: mtr
valin: value to write
typein: MLOG_1BYTE, MLOG_2BYTES, MLOG_4BYTES
UNIV_INLINE void mlog_catenate_ulint_compressed ( mtr_t mtr,
ulint  val 
)

Catenates a compressed ulint to mlog. in: value to write

Catenates a compressed ulint to mlog.

Parameters
mtrin: mtr
valin: value to write
UNIV_INLINE void mlog_catenate_ull_compressed ( mtr_t mtr,
ib_uint64_t  val 
)

Catenates a compressed 64-bit integer to mlog. in: value to write

Catenates a compressed 64-bit integer to mlog.

Parameters
mtrin: mtr
valin: value to write
UNIV_INLINE void mlog_close ( mtr_t mtr,
byte *  ptr 
)

Closes a buffer opened to mlog. in: buffer space from ptr up was not used

Closes a buffer opened to mlog.

Parameters
mtrin: mtr
ptrin: buffer space from ptr up was not used
UNIV_INTERN void mlog_log_string ( byte *  ptr,
ulint  len,
mtr_t mtr 
)

Logs a write of a string to a file page buffered in the buffer pool. Writes the corresponding log record to the mini-transaction log. in: mini-transaction handle

Parameters
ptrin: pointer written to
lenin: string length
UNIV_INLINE byte* mlog_open ( mtr_t mtr,
ulint  size 
)

Opens a buffer to mlog. It must be closed with mlog_close.

Returns
buffer, NULL if log mode MTR_LOG_NONE in: buffer size in bytes; MUST be smaller than DYN_ARRAY_DATA_SIZE!

Opens a buffer to mlog. It must be closed with mlog_close.

Returns
buffer, NULL if log mode MTR_LOG_NONE
Parameters
mtrin: mtr
sizein: buffer size in bytes; MUST be smaller than DYN_ARRAY_DATA_SIZE!
UNIV_INTERN byte* mlog_open_and_write_index ( mtr_t mtr,
const byte *  rec,
const dict_index_t index,
byte  type,
ulint  size 
)

Opens a buffer for mlog, writes the initial log record and, if needed, the field lengths of an index. Reserves space for further log entries. The log entry must be closed with mtr_close().

Returns
buffer, NULL if log mode MTR_LOG_NONE in: requested buffer size in bytes (if 0, calls mlog_close() and returns NULL)
Parameters
mtrin: mtr
recin: index record or page
indexin: record descriptor
typein: log item type
UNIV_INTERN byte* mlog_parse_index ( byte *  ptr,
const byte *  end_ptr,
ibool  comp,
dict_index_t **  index 
)

Parses a log record written by mlog_open_and_write_index.

Returns
parsed record end, NULL if not a complete record out, own: dummy index
Parameters
ptrin: buffer
end_ptrin: buffer end
compin: TRUE=compact record format
UNIV_INTERN byte* mlog_parse_initial_log_record ( byte *  ptr,
byte *  end_ptr,
byte *  type,
ulint *  space,
ulint *  page_no 
)

Parses an initial log record written by mlog_write_initial_log_record.

Returns
parsed record end, NULL if not a complete record out: page number
Parameters
ptrin: buffer
end_ptrin: buffer end
typeout: log record type: MLOG_1BYTE, ...
spaceout: space id
UNIV_INTERN byte* mlog_parse_nbytes ( ulint  type,
byte *  ptr,
byte *  end_ptr,
byte *  page,
void *  page_zip 
)

Parses a log record written by mlog_write_ulint or mlog_write_ull.

Returns
parsed record end, NULL if not a complete record in/out: compressed page, or NULL
Parameters
typein: log record type: MLOG_1BYTE, ...
ptrin: buffer
end_ptrin: buffer end
pagein: page where to apply the log record, or NULL
UNIV_INTERN byte* mlog_parse_string ( byte *  ptr,
byte *  end_ptr,
byte *  page,
void *  page_zip 
)

Parses a log record written by mlog_write_string.

Returns
parsed record end, NULL if not a complete record in/out: compressed page, or NULL
Parameters
ptrin: buffer
end_ptrin: buffer end
pagein: page where to apply the log record, or NULL
UNIV_INTERN void mlog_write_initial_log_record ( const byte *  ptr,
byte  type,
mtr_t mtr 
)

Writes initial part of a log record consisting of one-byte item type and four-byte space and page numbers. in: mini-transaction handle

Parameters
ptrin: pointer to (inside) a buffer frame holding the file page where modification is made
typein: log item type: MLOG_1BYTE, ...
UNIV_INLINE byte* mlog_write_initial_log_record_fast ( const byte *  ptr,
byte  type,
byte *  log_ptr,
mtr_t mtr 
)

Writes the initial part of a log record (3..11 bytes). If the implementation of this function is changed, all size parameters to mlog_open() should be adjusted accordingly!

Returns
new value of log_ptr in: mtr

Writes the initial part of a log record (3..11 bytes). If the implementation of this function is changed, all size parameters to mlog_open() should be adjusted accordingly!

Returns
new value of log_ptr
Parameters
ptrin: pointer to (inside) a buffer frame holding the file page where modification is made
typein: log item type: MLOG_1BYTE, ...
log_ptrin: pointer to mtr log which has been opened
mtrin: mtr
UNIV_INLINE byte* mlog_write_initial_log_record_for_file_op ( ulint  type,
ulint  space_id,
ulint  page_no,
byte *  log_ptr,
mtr_t mtr 
)

Writes a log record about an .ibd file create/delete/rename.

Returns
new value of log_ptr in: mtr

Writes a log record about an .ibd file create/delete/rename.

Returns
new value of log_ptr
Parameters
typein: MLOG_FILE_CREATE, MLOG_FILE_DELETE, or MLOG_FILE_RENAME
space_idin: space id, if applicable
page_noin: page number (not relevant currently)
log_ptrin: pointer to mtr log which has been opened
mtrin: mtr
UNIV_INTERN void mlog_write_string ( byte *  ptr,
const byte *  str,
ulint  len,
mtr_t mtr 
)

Writes a string to a file page buffered in the buffer pool. Writes the corresponding log record to the mini-transaction log. in: mini-transaction handle

Parameters
ptrin: pointer where to write
strin: string to write
lenin: string length
UNIV_INTERN void mlog_write_ulint ( byte *  ptr,
ulint  val,
byte  type,
mtr_t mtr 
)

Writes 1, 2 or 4 bytes to a file page. Writes the corresponding log record to the mini-transaction log if mtr is not NULL. in: mini-transaction handle

Parameters
ptrin: pointer where to write
valin: value to write
typein: MLOG_1BYTE, MLOG_2BYTES, MLOG_4BYTES
UNIV_INTERN void mlog_write_ull ( byte *  ptr,
ib_uint64_t  val,
mtr_t mtr 
)

Writes 8 bytes to a file page. Writes the corresponding log record to the mini-transaction log, only if mtr is not NULL in: mini-transaction handle

Parameters
ptrin: pointer where to write
valin: value to write