Skip to content

File log_recovery.c

FileList > cubrid > src > transaction > log_recovery.c

Go to the source code of this file

  • #include "log_recovery.h"
  • #include "boot_sr.h"
  • #include "locator_sr.h"
  • #include "log_impl.h"
  • #include "log_lsa.hpp"
  • #include "log_manager.h"
  • #include "log_reader.hpp"
  • #include "log_recovery_redo_perf.hpp"
  • #include "log_recovery_redo_parallel.hpp"
  • #include "log_system_tran.hpp"
  • #include "log_volids.hpp"
  • #include "message_catalog.h"
  • #include "msgcat_set_log.hpp"
  • #include "object_representation.h"
  • #include "page_buffer.h"
  • #include "porting_inline.hpp"
  • #include "recovery.h"
  • #include "slotted_page.h"
  • #include "system_parameter.h"
  • #include "thread_manager.hpp"
  • #include "memory_wrapper.hpp"

Public Functions

Type Name
REGISTER_WORKERPOOL (parallel_recovery_redo, () { return log_recovery_get_redo_parallel_count();})
void log_recovery (THREAD_ENTRY * thread_p, int ismedia_crash, time_t * stopat)
bool log_rv_fix_page_and_check_redo_is_needed (THREAD_ENTRY * thread_p, const VPID & page_vpid, log_rcv & rcv, LOG_RCVINDEX rcvindex, const log_lsa & rcv_lsa, const LOG_LSA & end_redo_lsa)
int log_rv_get_unzip_and_diff_redo_log_data (THREAD_ENTRY * thread_p, log_reader & log_pgptr_reader, LOG_RCV * rcv, int undo_length, const char * undo_data, LOG_ZIP & redo_unzip)
int log_rv_get_unzip_log_data (THREAD_ENTRY * thread_p, int length, log_reader & log_pgptr_reader, LOG_ZIP * unzip_ptr, bool & is_zip)
bool log_rv_need_sync_redo (const vpid & a_rcv_vpid, LOG_RCVINDEX a_rcvindex)
char * log_rv_pack_redo_record_changes (char * ptr, int offset_to_data, int old_data_size, int new_data_size, char * new_data)
char * log_rv_pack_undo_record_changes (char * ptr, int offset_to_data, int old_data_size, int new_data_size, char * old_data)
void log_rv_redo_record (THREAD_ENTRY * thread_p, log_reader & log_pgptr_reader, int(*)(THREAD_ENTRY *thread_p, LOG_RCV *) redofun, LOG_RCV * rcv, const LOG_LSA * rcv_lsa_ptr, int undo_length, const char * undo_data, LOG_ZIP & redo_unzip)
int log_rv_redo_record_modify (THREAD_ENTRY * thread_p, LOG_RCV * rcv)
int log_rv_undo_record_modify (THREAD_ENTRY * thread_p, LOG_RCV * rcv)
int log_rv_undoredo_record_partial_changes (THREAD_ENTRY * thread_p, char * rcv_data, int rcv_data_length, RECDES * record, bool is_undo)
LOG_LSA * log_startof_nxrec (THREAD_ENTRY * thread_p, LOG_LSA * lsa, bool canuse_forwaddr)

Public Static Functions

Type Name
UINT64 log_cnt_pages_containing_lsa (const log_lsa * from_lsa, const log_lsa * to_lsa)
void log_find_unilaterally_largest_undo_lsa (THREAD_ENTRY * thread_p, LOG_LSA & max_undo_lsa)
bool log_is_page_of_record_broken (THREAD_ENTRY * thread_p, const LOG_LSA * log_lsa, const LOG_RECORD_HEADER * log_rec_header)
void log_recovery_abort_all_atomic_sysops (THREAD_ENTRY * thread_p)
void log_recovery_abort_atomic_sysop (THREAD_ENTRY * thread_p, LOG_TDES * tdes)
void log_recovery_abort_interrupted_sysop (THREAD_ENTRY * thread_p, LOG_TDES * tdes, const LOG_LSA * postpone_start_lsa)
void log_recovery_analysis (THREAD_ENTRY * thread_p, LOG_LSA * start_lsa, LOG_LSA * start_redolsa, LOG_LSA * end_redo_lsa, bool ismedia_crash, time_t * stopat, bool * did_incom_recovery, INT64 * num_redo_log_records)
int log_recovery_find_first_postpone (THREAD_ENTRY * thread_p, LOG_LSA * ret_lsa, LOG_LSA * start_postpone_lsa, LOG_TDES * tdes)
void log_recovery_finish_all_postpone (THREAD_ENTRY * thread_p)
void log_recovery_finish_postpone (THREAD_ENTRY * thread_p, LOG_TDES * tdes)
void log_recovery_finish_sysop_postpone (THREAD_ENTRY * thread_p, LOG_TDES * tdes)
int log_recovery_get_redo_parallel_count ()
bool log_recovery_needs_skip_logical_redo (THREAD_ENTRY * thread_p, TRANID tran_id, LOG_RECTYPE log_rtype, LOG_RCVINDEX rcv_index, const LOG_LSA * lsa)
void log_recovery_notpartof_archives (THREAD_ENTRY * thread_p, int start_arv_num, const char * info_reason)
void log_recovery_notpartof_volumes (THREAD_ENTRY * thread_p)
void log_recovery_redo (THREAD_ENTRY * thread_p, const LOG_LSA * start_redolsa, const LOG_LSA * end_redo_lsa)
void log_recovery_resetlog (THREAD_ENTRY * thread_p, const LOG_LSA * new_append_lsa, const LOG_LSA * new_prev_lsa)
void log_recovery_undo (THREAD_ENTRY * thread_p)
int log_rv_analysis_2pc_abort_decision (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa)
int log_rv_analysis_2pc_abort_inform_particps (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa)
int log_rv_analysis_2pc_commit_decision (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa)
int log_rv_analysis_2pc_commit_inform_particps (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa)
int log_rv_analysis_2pc_prepare (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa)
int log_rv_analysis_2pc_recv_ack (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa)
int log_rv_analysis_2pc_start (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa)
int log_rv_analysis_atomic_sysop_start (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa)
int log_rv_analysis_commit_with_postpone (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa, LOG_PAGE * log_page_p, LOG_LSA * prev_lsa, bool is_media_crash, time_t * stop_at, bool * did_incom_recovery)
int log_rv_analysis_commit_with_postpone_obsolete (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa, LOG_PAGE * log_page_p)
int log_rv_analysis_compensate (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa, LOG_PAGE * log_page_p)
int log_rv_analysis_complete (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa, LOG_PAGE * log_page_p, LOG_LSA * prev_lsa, bool is_media_crash, time_t * stop_at, bool * did_incom_recovery)
int log_rv_analysis_dummy_head_postpone (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa)
int log_rv_analysis_end_checkpoint (THREAD_ENTRY * thread_p, LOG_LSA * log_lsa, LOG_PAGE * log_page_p, LOG_LSA * check_point, LOG_LSA * start_redo_lsa, bool * may_use_checkpoint, bool * may_need_synch_checkpoint_2pc)
int log_rv_analysis_log_end (int tran_id, LOG_LSA * log_lsa)
int log_rv_analysis_postpone (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa)
void log_rv_analysis_record (THREAD_ENTRY * thread_p, LOG_RECTYPE log_type, int tran_id, LOG_LSA * log_lsa, LOG_PAGE * log_page_p, LOG_LSA * check_point, LOG_LSA * prev_lsa, LOG_LSA * start_lsa, LOG_LSA * start_redo_lsa, bool is_media_crash, time_t * stop_at, bool * did_incom_recovery, bool * may_use_checkpoint, bool * may_need_synch_checkpoint_2pc)
int log_rv_analysis_run_postpone (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa, LOG_PAGE * log_page_p, LOG_LSA * check_point)
int log_rv_analysis_save_point (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa)
int log_rv_analysis_start_checkpoint (LOG_LSA * log_lsa, LOG_LSA * start_lsa, bool * may_use_checkpoint)
int log_rv_analysis_sysop_end (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa, LOG_PAGE * log_page_p)
int log_rv_analysis_sysop_start_postpone (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa, LOG_PAGE * log_page_p)
int log_rv_analysis_undo_redo (THREAD_ENTRY * thread_p, int tran_id, LOG_LSA * log_lsa)
void log_rv_end_simulation (THREAD_ENTRY * thread_p)
bool log_rv_find_checkpoint (THREAD_ENTRY * thread_p, VOLID volid, LOG_LSA * rcv_lsa)
int log_rv_record_modify_internal (THREAD_ENTRY * thread_p, LOG_RCV * rcv, bool is_undo)
PAGE_PTR log_rv_redo_fix_page (THREAD_ENTRY * thread_p, const VPID * vpid_rcv)
void log_rv_simulate_runtime_worker (THREAD_ENTRY * thread_p, LOG_TDES * tdes)
void log_rv_undo_record (THREAD_ENTRY * thread_p, LOG_LSA * log_lsa, LOG_PAGE * log_page_p, LOG_RCVINDEX rcvindex, const VPID * rcv_vpid, LOG_RCV * rcv, const LOG_LSA * rcv_lsa_ptr, LOG_TDES * tdes, LOG_ZIP * undo_unzip_ptr)
int log_rv_undoredo_partial_changes_recursive (THREAD_ENTRY * thread_p, OR_BUF * rcv_buf, RECDES * record, bool is_undo)
bool log_unformat_ahead_volumes (THREAD_ENTRY * thread_p, VOLID volid, VOLID * start_volid)

Macros

Type Name
define BUILD_RECORD_INFO (TEMPLATE_TYPE) /* multi line expression */
define INVOKE_REDO_RECORD (TEMPLATE_TYPE, record_info) /* multi line expression */

Public Functions Documentation

function REGISTER_WORKERPOOL

REGISTER_WORKERPOOL (
    parallel_recovery_redo,
    () { return  log_recovery_get_redo_parallel_count ();}
) 

function log_recovery

void log_recovery (
    THREAD_ENTRY * thread_p,
    int ismedia_crash,
    time_t * stopat
) 

function log_rv_fix_page_and_check_redo_is_needed

bool log_rv_fix_page_and_check_redo_is_needed (
    THREAD_ENTRY * thread_p,
    const  VPID & page_vpid,
    log_rcv & rcv,
    LOG_RCVINDEX rcvindex,
    const  log_lsa & rcv_lsa,
    const  LOG_LSA & end_redo_lsa
) 

function log_rv_get_unzip_and_diff_redo_log_data

int log_rv_get_unzip_and_diff_redo_log_data (
    THREAD_ENTRY * thread_p,
    log_reader & log_pgptr_reader,
    LOG_RCV * rcv,
    int undo_length,
    const  char * undo_data,
    LOG_ZIP & redo_unzip
) 

function log_rv_get_unzip_log_data

int log_rv_get_unzip_log_data (
    THREAD_ENTRY * thread_p,
    int length,
    log_reader & log_pgptr_reader,
    LOG_ZIP * unzip_ptr,
    bool & is_zip
) 

function log_rv_need_sync_redo

bool log_rv_need_sync_redo (
    const  vpid & a_rcv_vpid,
    LOG_RCVINDEX a_rcvindex
) 

function log_rv_pack_redo_record_changes

char * log_rv_pack_redo_record_changes (
    char * ptr,
    int offset_to_data,
    int old_data_size,
    int new_data_size,
    char * new_data
) 

function log_rv_pack_undo_record_changes

char * log_rv_pack_undo_record_changes (
    char * ptr,
    int offset_to_data,
    int old_data_size,
    int new_data_size,
    char * old_data
) 

function log_rv_redo_record

void log_rv_redo_record (
    THREAD_ENTRY * thread_p,
    log_reader & log_pgptr_reader,
    int (*)( THREAD_ENTRY *thread_p, LOG_RCV *) redofun,
    LOG_RCV * rcv,
    const  LOG_LSA * rcv_lsa_ptr,
    int undo_length,
    const  char * undo_data,
    LOG_ZIP & redo_unzip
) 

function log_rv_redo_record_modify

int log_rv_redo_record_modify (
    THREAD_ENTRY * thread_p,
    LOG_RCV * rcv
) 

function log_rv_undo_record_modify

int log_rv_undo_record_modify (
    THREAD_ENTRY * thread_p,
    LOG_RCV * rcv
) 

function log_rv_undoredo_record_partial_changes

int log_rv_undoredo_record_partial_changes (
    THREAD_ENTRY * thread_p,
    char * rcv_data,
    int rcv_data_length,
    RECDES * record,
    bool is_undo
) 

function log_startof_nxrec

LOG_LSA * log_startof_nxrec (
    THREAD_ENTRY * thread_p,
    LOG_LSA * lsa,
    bool canuse_forwaddr
) 

Public Static Functions Documentation

function log_cnt_pages_containing_lsa

static UINT64 log_cnt_pages_containing_lsa (
    const  log_lsa * from_lsa,
    const  log_lsa * to_lsa
) 

function log_find_unilaterally_largest_undo_lsa

static void log_find_unilaterally_largest_undo_lsa (
    THREAD_ENTRY * thread_p,
    LOG_LSA & max_undo_lsa
) 

function log_is_page_of_record_broken

static bool log_is_page_of_record_broken (
    THREAD_ENTRY * thread_p,
    const  LOG_LSA * log_lsa,
    const  LOG_RECORD_HEADER * log_rec_header
) 

function log_recovery_abort_all_atomic_sysops

static void log_recovery_abort_all_atomic_sysops (
    THREAD_ENTRY * thread_p
) 

function log_recovery_abort_atomic_sysop

static void log_recovery_abort_atomic_sysop (
    THREAD_ENTRY * thread_p,
    LOG_TDES * tdes
) 

function log_recovery_abort_interrupted_sysop

static void log_recovery_abort_interrupted_sysop (
    THREAD_ENTRY * thread_p,
    LOG_TDES * tdes,
    const  LOG_LSA * postpone_start_lsa
) 

function log_recovery_analysis

static void log_recovery_analysis (
    THREAD_ENTRY * thread_p,
    LOG_LSA * start_lsa,
    LOG_LSA * start_redolsa,
    LOG_LSA * end_redo_lsa,
    bool ismedia_crash,
    time_t * stopat,
    bool * did_incom_recovery,
    INT64 * num_redo_log_records
) 

function log_recovery_find_first_postpone

static int log_recovery_find_first_postpone (
    THREAD_ENTRY * thread_p,
    LOG_LSA * ret_lsa,
    LOG_LSA * start_postpone_lsa,
    LOG_TDES * tdes
) 

function log_recovery_finish_all_postpone

static void log_recovery_finish_all_postpone (
    THREAD_ENTRY * thread_p
) 

function log_recovery_finish_postpone

static void log_recovery_finish_postpone (
    THREAD_ENTRY * thread_p,
    LOG_TDES * tdes
) 

function log_recovery_finish_sysop_postpone

static void log_recovery_finish_sysop_postpone (
    THREAD_ENTRY * thread_p,
    LOG_TDES * tdes
) 

function log_recovery_get_redo_parallel_count

static int log_recovery_get_redo_parallel_count () 

function log_recovery_needs_skip_logical_redo

static bool log_recovery_needs_skip_logical_redo (
    THREAD_ENTRY * thread_p,
    TRANID tran_id,
    LOG_RECTYPE log_rtype,
    LOG_RCVINDEX rcv_index,
    const  LOG_LSA * lsa
) 

function log_recovery_notpartof_archives

static void log_recovery_notpartof_archives (
    THREAD_ENTRY * thread_p,
    int start_arv_num,
    const  char * info_reason
) 

function log_recovery_notpartof_volumes

static void log_recovery_notpartof_volumes (
    THREAD_ENTRY * thread_p
) 

function log_recovery_redo

static void log_recovery_redo (
    THREAD_ENTRY * thread_p,
    const  LOG_LSA * start_redolsa,
    const  LOG_LSA * end_redo_lsa
) 

function log_recovery_resetlog

static void log_recovery_resetlog (
    THREAD_ENTRY * thread_p,
    const  LOG_LSA * new_append_lsa,
    const  LOG_LSA * new_prev_lsa
) 

function log_recovery_undo

static void log_recovery_undo (
    THREAD_ENTRY * thread_p
) 

function log_rv_analysis_2pc_abort_decision

static int log_rv_analysis_2pc_abort_decision (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa
) 

function log_rv_analysis_2pc_abort_inform_particps

static int log_rv_analysis_2pc_abort_inform_particps (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa
) 

function log_rv_analysis_2pc_commit_decision

static int log_rv_analysis_2pc_commit_decision (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa
) 

function log_rv_analysis_2pc_commit_inform_particps

static int log_rv_analysis_2pc_commit_inform_particps (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa
) 

function log_rv_analysis_2pc_prepare

static int log_rv_analysis_2pc_prepare (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa
) 

function log_rv_analysis_2pc_recv_ack

static int log_rv_analysis_2pc_recv_ack (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa
) 

function log_rv_analysis_2pc_start

static int log_rv_analysis_2pc_start (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa
) 

function log_rv_analysis_atomic_sysop_start

static int log_rv_analysis_atomic_sysop_start (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa
) 

function log_rv_analysis_commit_with_postpone

static int log_rv_analysis_commit_with_postpone (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa,
    LOG_PAGE * log_page_p,
    LOG_LSA * prev_lsa,
    bool is_media_crash,
    time_t * stop_at,
    bool * did_incom_recovery
) 

function log_rv_analysis_commit_with_postpone_obsolete

static int log_rv_analysis_commit_with_postpone_obsolete (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa,
    LOG_PAGE * log_page_p
) 

function log_rv_analysis_compensate

static int log_rv_analysis_compensate (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa,
    LOG_PAGE * log_page_p
) 

function log_rv_analysis_complete

static int log_rv_analysis_complete (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa,
    LOG_PAGE * log_page_p,
    LOG_LSA * prev_lsa,
    bool is_media_crash,
    time_t * stop_at,
    bool * did_incom_recovery
) 

function log_rv_analysis_dummy_head_postpone

static int log_rv_analysis_dummy_head_postpone (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa
) 

function log_rv_analysis_end_checkpoint

static int log_rv_analysis_end_checkpoint (
    THREAD_ENTRY * thread_p,
    LOG_LSA * log_lsa,
    LOG_PAGE * log_page_p,
    LOG_LSA * check_point,
    LOG_LSA * start_redo_lsa,
    bool * may_use_checkpoint,
    bool * may_need_synch_checkpoint_2pc
) 

function log_rv_analysis_log_end

static int log_rv_analysis_log_end (
    int tran_id,
    LOG_LSA * log_lsa
) 

function log_rv_analysis_postpone

static int log_rv_analysis_postpone (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa
) 

function log_rv_analysis_record

static void log_rv_analysis_record (
    THREAD_ENTRY * thread_p,
    LOG_RECTYPE log_type,
    int tran_id,
    LOG_LSA * log_lsa,
    LOG_PAGE * log_page_p,
    LOG_LSA * check_point,
    LOG_LSA * prev_lsa,
    LOG_LSA * start_lsa,
    LOG_LSA * start_redo_lsa,
    bool is_media_crash,
    time_t * stop_at,
    bool * did_incom_recovery,
    bool * may_use_checkpoint,
    bool * may_need_synch_checkpoint_2pc
) 

function log_rv_analysis_run_postpone

static int log_rv_analysis_run_postpone (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa,
    LOG_PAGE * log_page_p,
    LOG_LSA * check_point
) 

function log_rv_analysis_save_point

static int log_rv_analysis_save_point (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa
) 

function log_rv_analysis_start_checkpoint

static int log_rv_analysis_start_checkpoint (
    LOG_LSA * log_lsa,
    LOG_LSA * start_lsa,
    bool * may_use_checkpoint
) 

function log_rv_analysis_sysop_end

static int log_rv_analysis_sysop_end (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa,
    LOG_PAGE * log_page_p
) 

function log_rv_analysis_sysop_start_postpone

static int log_rv_analysis_sysop_start_postpone (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa,
    LOG_PAGE * log_page_p
) 

function log_rv_analysis_undo_redo

static int log_rv_analysis_undo_redo (
    THREAD_ENTRY * thread_p,
    int tran_id,
    LOG_LSA * log_lsa
) 

function log_rv_end_simulation

static void log_rv_end_simulation (
    THREAD_ENTRY * thread_p
) 

function log_rv_find_checkpoint

static bool log_rv_find_checkpoint (
    THREAD_ENTRY * thread_p,
    VOLID volid,
    LOG_LSA * rcv_lsa
) 

function log_rv_record_modify_internal

static int log_rv_record_modify_internal (
    THREAD_ENTRY * thread_p,
    LOG_RCV * rcv,
    bool is_undo
) 

function log_rv_redo_fix_page

static PAGE_PTR log_rv_redo_fix_page (
    THREAD_ENTRY * thread_p,
    const  VPID * vpid_rcv
) 

function log_rv_simulate_runtime_worker

static void log_rv_simulate_runtime_worker (
    THREAD_ENTRY * thread_p,
    LOG_TDES * tdes
) 

function log_rv_undo_record

static void log_rv_undo_record (
    THREAD_ENTRY * thread_p,
    LOG_LSA * log_lsa,
    LOG_PAGE * log_page_p,
    LOG_RCVINDEX rcvindex,
    const  VPID * rcv_vpid,
    LOG_RCV * rcv,
    const  LOG_LSA * rcv_lsa_ptr,
    LOG_TDES * tdes,
    LOG_ZIP * undo_unzip_ptr
) 

function log_rv_undoredo_partial_changes_recursive

static int log_rv_undoredo_partial_changes_recursive (
    THREAD_ENTRY * thread_p,
    OR_BUF * rcv_buf,
    RECDES * record,
    bool is_undo
) 

function log_unformat_ahead_volumes

static bool log_unformat_ahead_volumes (
    THREAD_ENTRY * thread_p,
    VOLID volid,
    VOLID * start_volid
) 

Macro Definition Documentation

define BUILD_RECORD_INFO

#define BUILD_RECORD_INFO (
    TEMPLATE_TYPE
) `/* multi line expression */`

define INVOKE_REDO_RECORD

#define INVOKE_REDO_RECORD (
    TEMPLATE_TYPE,
    record_info
) `/* multi line expression */`


The documentation for this class was generated from the following file cubrid/src/transaction/log_recovery.c