CUBRID Engine  latest
log_append.cpp File Reference
#include "log_append.hpp"
#include "file_manager.h"
#include "log_compress.h"
#include "log_impl.h"
#include "log_manager.h"
#include "log_record.hpp"
#include "page_buffer.h"
#include "perf_monitor.h"
#include "thread_entry.hpp"
#include "thread_manager.hpp"
#include "vacuum.h"
Include dependency graph for log_append.cpp:

Go to the source code of this file.

Functions

size_t LOG_PRIOR_LSA_LAST_APPEND_OFFSET ()
 
static void log_prior_lsa_append_align ()
 
static void log_prior_lsa_append_advance_when_doesnot_fit (size_t length)
 
static void log_prior_lsa_append_add_align (size_t add)
 
static int prior_lsa_gen_postpone_record (THREAD_ENTRY *thread_p, LOG_PRIOR_NODE *node, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, int length, const char *data)
 
static int prior_lsa_gen_dbout_redo_record (THREAD_ENTRY *thread_p, LOG_PRIOR_NODE *node, LOG_RCVINDEX rcvindex, int length, const char *data)
 
static int prior_lsa_gen_record (THREAD_ENTRY *thread_p, LOG_PRIOR_NODE *node, LOG_RECTYPE rec_type, int length, const char *data)
 
static int prior_lsa_gen_undoredo_record_from_crumbs (THREAD_ENTRY *thread_p, LOG_PRIOR_NODE *node, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, int num_ucrumbs, const LOG_CRUMB *ucrumbs, int num_rcrumbs, const LOG_CRUMB *rcrumbs)
 
static int prior_lsa_gen_2pc_prepare_record (THREAD_ENTRY *thread_p, LOG_PRIOR_NODE *node, int gtran_length, const char *gtran_data, int lock_length, const char *lock_data)
 
static int prior_lsa_gen_end_chkpt_record (THREAD_ENTRY *thread_p, LOG_PRIOR_NODE *node, int tran_length, const char *tran_data, int topop_length, const char *topop_data)
 
static int prior_lsa_copy_undo_data_to_node (LOG_PRIOR_NODE *node, int length, const char *data)
 
static int prior_lsa_copy_redo_data_to_node (LOG_PRIOR_NODE *node, int length, const char *data)
 
static int prior_lsa_copy_undo_crumbs_to_node (LOG_PRIOR_NODE *node, int num_crumbs, const LOG_CRUMB *crumbs)
 
static int prior_lsa_copy_redo_crumbs_to_node (LOG_PRIOR_NODE *node, int num_crumbs, const LOG_CRUMB *crumbs)
 
static void prior_lsa_start_append (THREAD_ENTRY *thread_p, LOG_PRIOR_NODE *node, LOG_TDES *tdes)
 
static void prior_lsa_end_append (THREAD_ENTRY *thread_p, LOG_PRIOR_NODE *node)
 
static void prior_lsa_append_data (int length)
 
static LOG_LSA prior_lsa_next_record_internal (THREAD_ENTRY *thread_p, LOG_PRIOR_NODE *node, LOG_TDES *tdes, int with_lock)
 
static void prior_update_header_mvcc_info (const LOG_LSA &record_lsa, MVCCID mvccid)
 
static LOG_ZIPlog_append_get_zip_undo (THREAD_ENTRY *thread_p)
 
static LOG_ZIPlog_append_get_zip_redo (THREAD_ENTRY *thread_p)
 
static char * log_append_get_data_ptr (THREAD_ENTRY *thread_p)
 
static bool log_append_realloc_data_ptr (THREAD_ENTRY *thread_p, int length)
 
void LOG_RESET_APPEND_LSA (const LOG_LSA *lsa)
 
void LOG_RESET_PREV_LSA (const LOG_LSA *lsa)
 
char * LOG_APPEND_PTR ()
 
bool log_prior_has_worker_log_records (THREAD_ENTRY *thread_p)
 
void log_append_init_zip ()
 
void log_append_final_zip ()
 
LOG_PRIOR_NODEprior_lsa_alloc_and_copy_data (THREAD_ENTRY *thread_p, LOG_RECTYPE rec_type, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, int ulength, const char *udata, int rlength, const char *rdata)
 
LOG_PRIOR_NODEprior_lsa_alloc_and_copy_crumbs (THREAD_ENTRY *thread_p, LOG_RECTYPE rec_type, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, const int num_ucrumbs, const LOG_CRUMB *ucrumbs, const int num_rcrumbs, const LOG_CRUMB *rcrumbs)
 
LOG_LSA prior_lsa_next_record (THREAD_ENTRY *thread_p, LOG_PRIOR_NODE *node, log_tdes *tdes)
 
LOG_LSA prior_lsa_next_record_with_lock (THREAD_ENTRY *thread_p, LOG_PRIOR_NODE *node, log_tdes *tdes)
 
int prior_set_tde_encrypted (log_prior_node *node, LOG_RCVINDEX recvindex)
 
bool prior_is_tde_encrypted (const log_prior_node *node)
 

Variables

static bool log_Zip_support = false
 
static int log_Zip_min_size_to_compress = 255
 
static LOG_ZIPlog_zip_undo = NULL
 
static LOG_ZIPlog_zip_redo = NULL
 
static char * log_data_ptr = NULL
 
static int log_data_length = 0
 

Function Documentation

void log_append_final_zip ( )

Definition at line 232 of file log_append.cpp.

References free_and_init, log_data_length, log_data_ptr, log_zip_free(), log_Zip_support, and NULL.

Referenced by logpb_finalize_pool().

Here is the caller graph for this function:

static char * log_append_get_data_ptr ( THREAD_ENTRY thread_p)
static
static LOG_ZIP * log_append_get_zip_redo ( THREAD_ENTRY thread_p)
static

Definition at line 1737 of file log_append.cpp.

References IO_PAGESIZE, log_zip_alloc(), log_zip_redo, NULL, and thread_get_thread_entry_info().

Referenced by LOG_PRIOR_LSA_LAST_APPEND_OFFSET(), and prior_lsa_gen_undoredo_record_from_crumbs().

Here is the caller graph for this function:

static LOG_ZIP * log_append_get_zip_undo ( THREAD_ENTRY thread_p)
static

Definition at line 1711 of file log_append.cpp.

References IO_PAGESIZE, log_zip_alloc(), log_zip_undo, NULL, and thread_get_thread_entry_info().

Referenced by LOG_PRIOR_LSA_LAST_APPEND_OFFSET(), and prior_lsa_gen_undoredo_record_from_crumbs().

Here is the caller graph for this function:

void log_append_init_zip ( )
char* LOG_APPEND_PTR ( )
static bool log_append_realloc_data_ptr ( THREAD_ENTRY thread_p,
int  length 
)
static
static void log_prior_lsa_append_add_align ( size_t  add)
static
static void log_prior_lsa_append_advance_when_doesnot_fit ( size_t  length)
static
static void log_prior_lsa_append_align ( )
static
void LOG_RESET_PREV_LSA ( const LOG_LSA lsa)
bool prior_is_tde_encrypted ( const log_prior_node node)

Definition at line 1567 of file log_append.cpp.

References log_prior_node::tde_encrypted.

Referenced by logpb_append_next_record().

Here is the caller graph for this function:

LOG_PRIOR_NODE* prior_lsa_alloc_and_copy_data ( THREAD_ENTRY thread_p,
LOG_RECTYPE  rec_type,
LOG_RCVINDEX  rcvindex,
LOG_DATA_ADDR addr,
int  ulength,
const char *  udata,
int  rlength,
const char *  rdata 
)

Definition at line 273 of file log_append.cpp.

References ARG_FILE_LINE, assert, assert_release, log_prior_node::data_header, ER_ERROR_SEVERITY, ER_FAILED, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), free_and_init, LOG_2PC_ABORT_DECISION, LOG_2PC_ABORT_INFORM_PARTICPS, LOG_2PC_COMMIT_DECISION, LOG_2PC_COMMIT_INFORM_PARTICPS, LOG_2PC_PREPARE, LOG_2PC_START, LOG_ABORT, LOG_COMMIT, LOG_COMMIT_WITH_POSTPONE, LOG_COMPENSATE, LOG_DBEXTERN_REDO_DATA, LOG_DIFF_UNDOREDO_DATA, LOG_DUMMY_CRASH_RECOVERY, LOG_DUMMY_GENERIC, LOG_DUMMY_HA_SERVER_STATE, LOG_DUMMY_HEAD_POSTPONE, LOG_DUMMY_OVF_RECORD, LOG_END_CHKPT, log_prior_node::log_header, LOG_MVCC_DIFF_UNDOREDO_DATA, LOG_MVCC_REDO_DATA, LOG_MVCC_UNDO_DATA, LOG_MVCC_UNDOREDO_DATA, LOG_POSTPONE, LOG_REDO_DATA, LOG_REPLICATION_DATA, LOG_REPLICATION_STATEMENT, LOG_RUN_POSTPONE, LOG_SAVEPOINT, LOG_START_CHKPT, LOG_SYSOP_ATOMIC_START, LOG_SYSOP_END, LOG_SYSOP_START_POSTPONE, LOG_UNDO_DATA, LOG_UNDOREDO_DATA, log_prior_node::next, NO_ERROR, NULL, prior_lsa_gen_2pc_prepare_record(), prior_lsa_gen_dbout_redo_record(), prior_lsa_gen_end_chkpt_record(), prior_lsa_gen_postpone_record(), prior_lsa_gen_record(), log_prior_node::rdata, log_prior_node::rlength, log_prior_node::tde_encrypted, log_rec_header::type, log_prior_node::udata, and log_prior_node::ulength.

Referenced by log_2pc_append_decision(), log_2pc_append_start(), log_2pc_prepare_global_tran(), log_append_commit_postpone(), log_append_compensate_internal(), log_append_dboutside_redo(), log_append_donetime_internal(), log_append_empty_record(), log_append_ha_server_state(), log_append_postpone(), log_append_repl_info_internal(), log_append_run_postpone(), log_append_savepoint(), log_append_sysop_end(), log_append_sysop_start_postpone(), log_complete_for_2pc(), log_sysop_start_atomic(), and logpb_checkpoint().

Here is the caller graph for this function:

static void prior_lsa_append_data ( int  length)
static
static int prior_lsa_copy_redo_crumbs_to_node ( LOG_PRIOR_NODE node,
int  num_crumbs,
const LOG_CRUMB crumbs 
)
static
static int prior_lsa_copy_undo_crumbs_to_node ( LOG_PRIOR_NODE node,
int  num_crumbs,
const LOG_CRUMB crumbs 
)
static
static int prior_lsa_copy_undo_data_to_node ( LOG_PRIOR_NODE node,
int  length,
const char *  data 
)
static
static int prior_lsa_gen_2pc_prepare_record ( THREAD_ENTRY thread_p,
LOG_PRIOR_NODE node,
int  gtran_length,
const char *  gtran_data,
int  lock_length,
const char *  lock_data 
)
static
static int prior_lsa_gen_dbout_redo_record ( THREAD_ENTRY thread_p,
LOG_PRIOR_NODE node,
LOG_RCVINDEX  rcvindex,
int  length,
const char *  data 
)
static
static int prior_lsa_gen_end_chkpt_record ( THREAD_ENTRY thread_p,
LOG_PRIOR_NODE node,
int  tran_length,
const char *  tran_data,
int  topop_length,
const char *  topop_data 
)
static
static int prior_lsa_gen_undoredo_record_from_crumbs ( THREAD_ENTRY thread_p,
LOG_PRIOR_NODE node,
LOG_RCVINDEX  rcvindex,
LOG_DATA_ADDR addr,
int  num_ucrumbs,
const LOG_CRUMB ucrumbs,
int  num_rcrumbs,
const LOG_CRUMB rcrumbs 
)
static

Definition at line 648 of file log_append.cpp.

References ARG_FILE_LINE, assert, assert_release, CAST_BUFLEN, log_crumb::data, log_rec_undoredo::data, log_rec_undo::data, log_rec_redo::data, log_prior_node::data_header, log_prior_node::data_header_length, log_zip::data_length, ER_ERROR_SEVERITY, ER_FAILED, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), error(), free_and_init, i, mvcc_info::id, log_crumb::length, log_rec_undo::length, log_rec_redo::length, log_append_get_data_ptr(), log_append_get_zip_redo(), log_append_get_zip_undo(), log_append_realloc_data_ptr(), log_zip::log_data, log_diff(), LOG_DIFF_UNDOREDO_DATA, LOG_FIND_CURRENT_TDES(), log_prior_node::log_header, LOG_IS_MVCC_OP_RECORD_TYPE, LOG_IS_MVCC_OPERATION, LOG_IS_REDO_RECORD_TYPE, LOG_IS_UNDO_RECORD_TYPE, LOG_IS_UNDOREDO_RECORD_TYPE, LOG_MVCC_DIFF_UNDOREDO_DATA, LOG_MVCC_REDO_DATA, LOG_MVCC_UNDO_DATA, LOG_MVCC_UNDOREDO_DATA, LOG_REDO_DATA, LOG_UNDO_DATA, LOG_UNDOREDO_DATA, log_zip(), log_Zip_min_size_to_compress, log_Zip_support, LSA_SET_NULL(), MAKE_ZIP_LEN, log_rec_mvcc_undoredo::mvccid, log_rec_mvcc_undo::mvccid, log_rec_mvcc_redo::mvccid, MVCCID_IS_VALID, log_tdes::mvccinfo, NO_ERROR, NULL, NULL_PAGEID, NULL_VOLID, log_data_addr::offset, log_data::offset, log_data::pageid, vpid::pageid, pgbuf_get_vpid_ptr(), log_data_addr::pgptr, log_vacuum_info::prev_mvcc_op_log_lsa, prior_lsa_copy_redo_crumbs_to_node(), prior_lsa_copy_redo_data_to_node(), prior_lsa_copy_undo_crumbs_to_node(), prior_lsa_copy_undo_data_to_node(), log_data::rcvindex, log_prior_node::rdata, log_rec_mvcc_redo::redo, log_rec_undoredo::rlength, RVES_NOTIFY_VACUUM, mvcc_info::sub_ids, log_rec_header::type, log_prior_node::udata, log_rec_undoredo::ulength, log_rec_mvcc_undo::undo, log_rec_mvcc_undoredo::undoredo, log_rec_mvcc_undoredo::vacuum_info, log_rec_mvcc_undo::vacuum_info, log_data_addr::vfid, log_vacuum_info::vfid, VFID_COPY, VFID_SET_NULL, log_data::volid, and vpid::volid.

Referenced by LOG_PRIOR_LSA_LAST_APPEND_OFFSET(), and prior_lsa_alloc_and_copy_crumbs().

Here is the caller graph for this function:

static LOG_LSA prior_lsa_next_record_internal ( THREAD_ENTRY thread_p,
LOG_PRIOR_NODE node,
LOG_TDES tdes,
int  with_lock 
)
static

Definition at line 1348 of file log_append.cpp.

References assert, log_rcv_tdes::atomic_sysop_start_lsa, log_prior_node::data_header, log_prior_node::data_header_length, log_header::does_block_need_vacuum, log_global::hdr, if(), log_rec_sysop_end::lastparent_lsa, log_prior_lsa_info::list_size, LOG_COMMIT_WITH_POSTPONE, LOG_CS_ENTER(), LOG_CS_EXIT(), log_Gl, log_prior_node::log_header, log_is_in_crash_recovery(), LOG_ISRESTARTED, LOG_MVCC_DIFF_UNDOREDO_DATA, LOG_MVCC_UNDO_DATA, LOG_MVCC_UNDOREDO_DATA, log_prior_lsa_append_add_align(), log_prior_lsa_append_advance_when_doesnot_fit(), LOG_PRIOR_LSA_WITHOUT_LOCK, LOG_SYSOP_ATOMIC_START, LOG_SYSOP_END, LOG_SYSOP_END_LOGICAL_MVCC_UNDO, LOG_SYSOP_START_POSTPONE, log_wakeup_log_flush_daemon(), logpb_get_memsize(), logpb_prior_lsa_append_all_list(), LSA_AS_ARGS, LSA_COPY(), LSA_ISNULL(), LSA_LT(), LSA_SET_NULL(), log_header::mvcc_op_log_lsa, log_rec_mvcc_undoredo::mvccid, log_rec_mvcc_undo::mvccid, MVCCID_NULL, log_prior_node::next, NULL, log_tdes::num_log_records_written, log_lsa::pageid, perfmon_inc_stat(), log_vacuum_info::prev_mvcc_op_log_lsa, log_global::prior_info, log_prior_lsa_info::prior_list_header, log_prior_lsa_info::prior_list_tail, prior_lsa_append_data(), prior_lsa_end_append(), log_prior_lsa_info::prior_lsa_mutex, prior_lsa_start_append(), prior_update_header_mvcc_info(), PSTAT_PRIOR_LSA_LIST_MAXED, log_tdes::rcv, log_prior_node::rlength, log_prior_node::start_lsa, log_tdes::state, log_rec_sysop_start_postpone::sysop_end, log_rcv_tdes::sysop_start_postpone_lsa, thread_sleep(), log_rcv_tdes::tran_start_postpone_lsa, TRAN_UNACTIVE_TOPOPE_COMMITTED_WITH_POSTPONE, log_rec_header::type, log_prior_node::ulength, vacuum_er_log, VACUUM_ER_LOG_LOGGING, vacuum_get_log_blockid(), log_rec_mvcc_undoredo::vacuum_info, log_rec_mvcc_undo::vacuum_info, and vacuum_produce_log_block_data().

Referenced by LOG_PRIOR_LSA_LAST_APPEND_OFFSET(), prior_lsa_next_record(), and prior_lsa_next_record_with_lock().

Here is the caller graph for this function:

LOG_LSA prior_lsa_next_record_with_lock ( THREAD_ENTRY thread_p,
LOG_PRIOR_NODE node,
log_tdes tdes 
)

Definition at line 1543 of file log_append.cpp.

References LOG_PRIOR_LSA_WITH_LOCK, and prior_lsa_next_record_internal().

Referenced by log_append_donetime_internal(), log_append_repl_info_internal(), and logpb_checkpoint().

Here is the caller graph for this function:

Variable Documentation

int log_data_length = 0
static
char* log_data_ptr = NULL
static
int log_Zip_min_size_to_compress = 255
static

Definition at line 33 of file log_append.cpp.

Referenced by prior_lsa_gen_undoredo_record_from_crumbs().

LOG_ZIP* log_zip_redo = NULL
static

Definition at line 36 of file log_append.cpp.

Referenced by log_append_get_zip_redo().

bool log_Zip_support = false
static
LOG_ZIP* log_zip_undo = NULL
static

Definition at line 35 of file log_append.cpp.

Referenced by log_append_get_zip_undo().