Drizzled Public API Documentation

trx0rseg.h File Reference
#include "univ.i"
#include "trx0types.h"
#include "trx0sys.h"

Go to the source code of this file.

Classes

struct  trx_rseg_struct

Macros

#define trx0rseg_h
#define TRX_RSEG_N_SLOTS   (UNIV_PAGE_SIZE / 16)
#define TRX_RSEG_MAX_N_TRXS   (TRX_RSEG_N_SLOTS / 2)
#define TRX_RSEG_SLOT_PAGE_NO
#define TRX_RSEG_SLOT_SIZE   4
#define TRX_RSEG   FSEG_PAGE_DATA
#define TRX_RSEG_MAX_SIZE
#define TRX_RSEG_HISTORY_SIZE
#define TRX_RSEG_HISTORY
#define TRX_RSEG_FSEG_HEADER   (8 + FLST_BASE_NODE_SIZE)
#define TRX_RSEG_UNDO_SLOTS   (8 + FLST_BASE_NODE_SIZE + FSEG_HEADER_SIZE)

Functions

UNIV_INLINE trx_rsegf_ttrx_rsegf_get (ulint space, ulint zip_size, ulint page_no, mtr_t *mtr)
UNIV_INLINE trx_rsegf_ttrx_rsegf_get_new (ulint space, ulint zip_size, ulint page_no, mtr_t *mtr)
UNIV_INLINE ulint trx_rsegf_get_nth_undo (trx_rsegf_t *rsegf, ulint n, mtr_t *mtr)
UNIV_INLINE void trx_rsegf_set_nth_undo (trx_rsegf_t *rsegf, ulint n, ulint page_no, mtr_t *mtr)
UNIV_INLINE ulint trx_rsegf_undo_find_free (trx_rsegf_t *rsegf, mtr_t *mtr)
UNIV_INTERN trx_rseg_ttrx_rseg_get_on_id (ulint id)
UNIV_INTERN ulint trx_rseg_header_create (ulint space, ulint zip_size, ulint max_size, ulint rseg_slot_no, mtr_t *mtr)
UNIV_INTERN void trx_rseg_list_and_array_init (trx_sysf_t *sys_header, mtr_t *mtr)
UNIV_INTERN void trx_rseg_mem_free (trx_rseg_t *rseg)
UNIV_INTERN trx_rseg_ttrx_rseg_create (void)

Detailed Description

Rollback segment

Created 3/26/1996 Heikki Tuuri

Definition in file trx0rseg.h.


Macro Definition Documentation

#define TRX_RSEG_HISTORY
Value:
8 /* The update undo logs for committed
transactions */

Definition at line 200 of file trx0rseg.h.

#define TRX_RSEG_HISTORY_SIZE
Value:
4 /* Number of file pages occupied
by the logs in the history list */

Definition at line 199 of file trx0rseg.h.

#define TRX_RSEG_MAX_SIZE
Value:
0 /* Maximum allowed size for rollback
segment in pages */

Definition at line 198 of file trx0rseg.h.

#define TRX_RSEG_SLOT_PAGE_NO
Value:
0 /* Page number of the header page of
an undo log segment */

Definition at line 188 of file trx0rseg.h.


Function Documentation

UNIV_INTERN trx_rseg_t* trx_rseg_get_on_id ( ulint  id)

Looks for a rollback segment, based on the rollback segment id.

Returns:
rollback segment in: rollback segment id

Looks for a rollback segment, based on the rollback segment id.

Returns:
rollback segment
Parameters:
idin: rollback segment id

Definition at line 47 of file trx0rseg.cc.

References trx_rseg_struct::id, trx_rseg_get_on_id(), trx_sys, UT_LIST_GET_FIRST, and UT_LIST_GET_NEXT.

Referenced by trx_rseg_get_on_id(), and trx_undo_get_undo_rec_low().

UNIV_INTERN ulint trx_rseg_header_create ( ulint  space,
ulint  zip_size,
ulint  max_size,
ulint  rseg_slot_no,
mtr_t mtr 
)

Creates a rollback segment header. This function is called only when a new rollback segment is created in the database.

Returns:
page number of the created segment, FIL_NULL if fail in: mtr

Creates a rollback segment header. This function is called only when a new rollback segment is created in the database.

Returns:
page number of the created segment, FIL_NULL if fail
Parameters:
spacein: space id
zip_sizein: compressed page size in bytes or 0 for uncompressed pages
max_sizein: max size in pages
rseg_slot_noin: rseg id == slot number in trx sys
mtrin: mtr

Definition at line 68 of file trx0rseg.cc.

References buf_block_get_page_no(), FIL_NULL, flst_init(), MLOG_4BYTES, mlog_write_ulint(), trx_rseg_header_create(), trx_rsegf_get_new(), trx_rsegf_set_nth_undo(), trx_sysf_get(), trx_sysf_rseg_set_page_no(), trx_sysf_rseg_set_space(), and ut_ad.

Referenced by trx_rseg_header_create().

UNIV_INTERN void trx_rseg_list_and_array_init ( trx_sysf_t sys_header,
mtr_t mtr 
)

Creates the memory copies for rollback segments and initializes the rseg list and array in trx_sys at a database startup. in: mtr

Parameters:
sys_headerin: trx system header

Definition at line 346 of file trx0rseg.cc.

References trx_sys_struct::rseg_history_len, trx_rseg_list_and_array_init(), trx_sys, and UT_LIST_INIT.

Referenced by trx_rseg_list_and_array_init(), and trx_sys_init_at_db_start().

UNIV_INTERN void trx_rseg_mem_free ( trx_rseg_t rseg)
UNIV_INLINE trx_rsegf_t* trx_rsegf_get ( ulint  space,
ulint  zip_size,
ulint  page_no,
mtr_t mtr 
)

Gets a rollback segment header.

Returns:
rollback segment header, page x-latched in: mtr
Parameters:
spacein: space where placed
zip_sizein: compressed page size in bytes or 0 for uncompressed pages
page_noin: page number of the header

Referenced by trx_purge_add_update_undo_to_history(), and trx_undo_lists_init().

UNIV_INLINE trx_rsegf_t* trx_rsegf_get_new ( ulint  space,
ulint  zip_size,
ulint  page_no,
mtr_t mtr 
)

Gets a newly created rollback segment header.

Returns:
rollback segment header, page x-latched in: mtr
Parameters:
spacein: space where placed
zip_sizein: compressed page size in bytes or 0 for uncompressed pages
page_noin: page number of the header

Referenced by trx_rseg_header_create(), and trx_undo_lists_init().

UNIV_INLINE ulint trx_rsegf_get_nth_undo ( trx_rsegf_t rsegf,
ulint  n,
mtr_t mtr 
)

Gets the file page number of the nth undo log slot.

Returns:
page number of the undo log segment in: mtr
Parameters:
rsegfin: rollback segment header
nin: index of slot

Referenced by trx_undo_lists_init().

UNIV_INLINE void trx_rsegf_set_nth_undo ( trx_rsegf_t rsegf,
ulint  n,
ulint  page_no,
mtr_t mtr 
)

Sets the file page number of the nth undo log slot. in: mtr

Parameters:
rsegfin: rollback segment header
nin: index of slot
page_noin: page number of the undo log segment

Referenced by trx_purge_add_update_undo_to_history(), and trx_rseg_header_create().

UNIV_INLINE ulint trx_rsegf_undo_find_free ( trx_rsegf_t rsegf,
mtr_t mtr 
)

Looks for a free slot for an undo log segment.

Returns:
slot index or ULINT_UNDEFINED if not found in: mtr
Parameters:
rsegfin: rollback segment header