41 #include <sys/types.h> 60 #if defined(SERVER_MODE) 96 #if !defined(SERVER_MODE) 98 #define pthread_mutex_init(a, b) 99 #define pthread_mutex_destroy(a) 100 #define pthread_mutex_lock(a) 0 101 #define pthread_mutex_unlock(a) 113 #define LOG_ISCHECKPOINT_TIME() \ 114 (log_Gl.rcv_phase == LOG_RESTARTED \ 115 && log_Gl.run_nxchkpt_atpageid != NULL_PAGEID \ 116 && log_Gl.hdr.append_lsa.pageid >= log_Gl.run_nxchkpt_atpageid) 118 #if defined(SERVER_MODE) 119 #define LOG_FLUSH_LOGGING_HAS_BEEN_SKIPPED(thread_p) \ 121 if (log_Gl.hdr.has_logging_been_skipped != true) { \ 123 LOG_CS_ENTER((thread_p)); \ 124 if (log_Gl.hdr.has_logging_been_skipped != true) { \ 125 log_Gl.hdr.has_logging_been_skipped = true; \ 126 logpb_flush_header((thread_p)); \ 128 LOG_CS_EXIT(thread_p); \ 132 #define LOG_FLUSH_LOGGING_HAS_BEEN_SKIPPED(thread_p) \ 134 if (log_Gl.hdr.has_logging_been_skipped != true) { \ 136 log_Gl.hdr.has_logging_been_skipped = true; \ 137 logpb_flush_header((thread_p)); \ 148 #define LOG_ISUNSAFE_TO_SKIP_RCVINDEX(RCVI) \ 149 ((RCVI) == RVDK_LINK_PERM_VOLEXT) 151 #define LOG_NEED_TO_SET_LSA(RCVI, PGPTR) \ 152 (((RCVI) != RVBT_MVCC_INCREMENTS_UPD) \ 153 && ((RCVI) != RVBT_LOG_GLOBAL_UNIQUE_STATS_COMMIT) \ 154 && ((RCVI) != RVBT_REMOVE_UNIQUE_STATS) \ 155 && ((RCVI) != RVLOC_CLASSNAME_DUMMY) \ 156 && ((RCVI) != RVDK_LINK_PERM_VOLEXT || !pgbuf_is_lsa_temporary(PGPTR))) 182 #define LOG_TDES_LAST_SYSOP(tdes) (&(tdes)->topops.stack[(tdes)->topops.last]) 183 #define LOG_TDES_LAST_SYSOP_PARENT_LSA(tdes) (&LOG_TDES_LAST_SYSOP(tdes)->lastparent_lsa) 184 #define LOG_TDES_LAST_SYSOP_POSP_LSA(tdes) (&LOG_TDES_LAST_SYSOP(tdes)->posp_lsa) 186 #if defined (SERVER_MODE) 189 std::atomic<std::int64_t> log_Clock_msec = {0};
195 const char *prefix_logname,
DKNPAGES npages, INT64 * db_creation);
197 const char *prefix_logname,
bool ismedia_crash,
BO_RESTART_ARG * r_args,
198 bool init_emergency);
199 #if defined(SERVER_MODE) 212 int data_size,
const char *data);
225 static void log_ascii_dump (FILE * out_fp,
int length,
void *data);
226 static void log_hexa_dump (FILE * out_fp,
int length,
void *data);
228 void (*dumpfun) (FILE * fp,
int,
void *),
LOG_ZIP * log_dump_ptr);
257 LOG_ZIP * log_zip_p, FILE * out_fp);
286 bool release,
bool decache_classrepr);
298 const char *data,
bool is_rv_finish_postpone);
305 int data_size,
const char *data);
309 #if defined(SERVER_MODE) 313 #endif // SERVER_MODE 315 #if defined(SERVER_MODE) 323 static std::atomic_bool log_Flush_has_been_requested = {
false};
326 static void log_daemons_init ();
327 static void log_daemons_destroy ();
348 return "LOG_UNDOREDO_DATA";
351 return "LOG_DIFF_UNDOREDO_DATA";
354 return "LOG_UNDO_DATA";
357 return "LOG_REDO_DATA";
360 return "LOG_MVCC_UNDOREDO_DATA";
363 return "LOG_MVCC_DIFF_UNDOREDO_DATA";
366 return "LOG_MVCC_UNDO_DATA";
369 return "LOG_MVCC_REDO_DATA";
372 return "LOG_DBEXTERN_REDO_DATA";
375 return "LOG_DUMMY_HEAD_POSTPONE";
378 return "LOG_POSTPONE";
381 return "LOG_RUN_POSTPONE";
384 return "LOG_COMPENSATE";
387 return "LOG_WILL_COMMIT";
390 return "LOG_COMMIT_WITH_POSTPONE";
396 return "LOG_SYSOP_START_POSTPONE";
399 return "LOG_SYSOP_END";
405 return "LOG_START_CHKPT";
408 return "LOG_END_CHKPT";
411 return "LOG_SAVEPOINT";
414 return "LOG_2PC_PREPARE";
417 return "LOG_2PC_START";
420 return "LOG_2PC_COMMIT_DECISION";
423 return "LOG_2PC_ABORT_DECISION";
426 return "LOG_2PC_COMMIT_INFORM_PARTICPS";
429 return "LOG_2PC_ABORT_INFORM_PARTICPS";
432 return "LOG_2PC_RECV_ACK";
435 return "LOG_DUMMY_CRASH_RECOVERY";
438 return "LOG_END_OF_LOG";
441 return "LOG_REPLICATION_DATA";
443 return "LOG_REPLICATION_STATEMENT";
446 return "LOG_SYSOP_ATOMIC_START";
449 return "LOG_DUMMY_HA_SERVER_STATE";
451 return "LOG_DUMMY_OVF_RECORD";
453 return "LOG_DUMMY_GENERIC";
464 return "UNKNOWN_LOG_REC_TYPE";
539 #if defined(CUBRID_DEBUG) 544 "log_find_crash_point_lsa: Warning, only expected to be called during recovery phases.");
633 INT64 vol_dbcreation;
640 if (difftime ((time_t) vol_dbcreation, (time_t) (*log_dbcreation)) == 0)
670 #if defined(SERVER_MODE) 701 log_npages = db_npages;
755 db_creation = time (
NULL);
756 if (db_creation == -1)
762 error_code =
log_create_internal (thread_p, db_fullname, logpath, prefix_logname, npages, &db_creation);
786 DKNPAGES npages, INT64 * db_creation)
791 VOLID volid1, volid2;
805 (void) umask (S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
861 #if defined(CUBRID_DEBUG) 868 temp_pgptr = (
LOG_PAGE *) aligned_temp_pgbuf;
880 #if defined(CUBRID_DEBUG) 887 temp_pgptr = (
LOG_PAGE *) aligned_temp_pgbuf;
915 catmsg =
"ACTIVE: %s %d pages\n";
969 fprintf (stdout,
"**Running without logging**\n");
1009 "\tprefix_logname = %s \n" "\tismedia_crash = %d \n",
1010 db_fullname !=
NULL ? db_fullname :
"(UNKNOWN)",
1011 logpath !=
NULL ? logpath :
"(UNKNOWN)",
1012 prefix_logname !=
NULL ? prefix_logname :
"(UNKNOWN)", ismedia_crash);
1014 (void)
log_initialize_internal (thread_p, db_fullname, logpath, prefix_logname, ismedia_crash, r_args,
false);
1016 #if defined(SERVER_MODE) 1017 log_daemons_init ();
1018 #endif // SERVER_MODE 1021 #if !defined(NDEBUG) 1024 fprintf (stdout,
"**Running without logging**\n");
1047 const char *prefix_logname,
bool ismedia_crash,
BO_RESTART_ARG * r_args,
bool init_emergency)
1054 time_t *stopat = (r_args) ? &r_args->
stopat :
NULL;
1056 #
if !defined (NDEBUG)
1061 (void) umask (S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
1102 if (ismedia_crash !=
false)
1107 INT64 db_creation = -1;
1141 if (ismedia_crash !=
false && (r_args) && r_args->
restore_slave)
1196 r_args, init_emergency);
1226 const char *env_value;
1232 env_value =
envvar_get (
"LOG_UNSAFE_RECOVER_NEW_RELEASE");
1233 if (env_value !=
NULL)
1235 if (atoi (env_value) != 0)
1249 if (unsafe ==
false)
1316 init_emergency =
true;
1359 #if defined(SERVER_MODE) 1404 if (disk_compatibility_functions !=
NULL)
1406 for (i = 0; disk_compatibility_functions[
i] !=
NULL; i++)
1408 (*(disk_compatibility_functions[
i])) ();
1474 #if defined (ENABLE_UNUSED_FUNCTION) 1486 log_update_compatibility_and_release (
THREAD_ENTRY * thread_p,
float compatibility,
char release[])
1501 #if defined(SERVER_MODE) || defined(SA_MODE) 1516 #if defined(SERVER_MODE) 1529 if (thread_p ==
NULL)
1556 #if defined(SERVER_MODE) 1558 int *abort_thread_running;
1559 static int already_called = 0;
1573 if (abort_thread_running ==
NULL)
1583 repeat_loop =
false;
1597 std::bind (log_abort_task_execute, std::placeholders::_1, std::ref (*tdes));
1600 abort_thread_running[
i] = 1;
1611 if (abort_thread_running !=
NULL)
1622 if (abort_thread_running !=
NULL)
1668 int save_tran_index;
1669 bool anyloose_ends =
false;
1672 #if defined(SERVER_MODE) 1673 log_daemons_destroy ();
1727 anyloose_ends =
true;
1753 if (anyloose_ends ==
false && error_code ==
NO_ERROR)
1792 #if defined (SERVER_MODE) 1794 #endif // SERVER_MODE 1812 const char *prefix_logname)
1838 int redo_length,
const void *undo_data,
const void *redo_data)
1844 assert (0 <= undo_length);
1845 assert (0 == undo_length || undo_data !=
NULL);
1847 undo_crumb.
data = undo_data;
1848 undo_crumb.
length = undo_length;
1851 assert (0 <= redo_length);
1852 assert (0 == redo_length || redo_data !=
NULL);
1854 redo_crumb.
data = redo_data;
1855 redo_crumb.
length = redo_length;
1862 PGLENGTH offset,
int undo_length,
int redo_length,
const void *undo_data,
1863 const void *redo_data)
1875 assert (0 <= undo_length);
1876 assert (0 == undo_length || undo_data !=
NULL);
1878 undo_crumb.
data = undo_data;
1879 undo_crumb.
length = undo_length;
1882 assert (0 <= redo_length);
1883 assert (0 == redo_length || redo_data !=
NULL);
1885 redo_crumb.
data = redo_data;
1886 redo_crumb.
length = redo_length;
1926 undo_crumb.
data = data;
1927 undo_crumb.
length = length;
1934 PGLENGTH offset,
int length,
const void *data)
1948 undo_crumb.
data = data;
1949 undo_crumb.
length = length;
1988 redo_crumb.
data = data;
1989 redo_crumb.
length = length;
1996 PGLENGTH offset,
int length,
const void *data)
2010 redo_crumb.
data = data;
2011 redo_crumb.
length = length;
2040 #if defined(CUBRID_DEBUG) 2058 #if !defined(SERVER_MODE) 2109 num_redo_crumbs, redo_crumbs);
2148 assert (tdes->is_active_worker_transaction ());
2153 assert (tdes->is_active_worker_transaction ());
2180 #if defined(CUBRID_DEBUG) 2317 #if defined(CUBRID_DEBUG) 2412 assert (tdes->is_active_worker_transaction ());
2417 assert (tdes->is_active_worker_transaction ());
2435 const RECDES * undo_recdes,
const RECDES * redo_recdes)
2447 int num_undo_crumbs;
2448 int num_redo_crumbs;
2459 if (tdes && tdes->null_log.is_set && undo_recdes && redo_recdes)
2461 tdes->null_log.recdes = malloc (
sizeof (
RECDES));
2466 *(tdes->null_log.recdes) = *undo_recdes;
2467 tdes->null_log.recdes->data = malloc (undo_recdes->
length);
2468 if (tdes->null_log.recdes->data ==
NULL)
2473 (void) memcpy (tdes->null_log.recdes->data, undo_recdes->
data, undo_recdes->
length);
2475 undo_crumbs[0].
length =
sizeof (undo_recdes->
type);
2476 undo_crumbs[0].
data = (
char *) &undo_recdes->
type;
2477 undo_crumbs[1].
length = 0;
2479 num_undo_crumbs = 2;
2480 redo_crumbs[0].
length = sizeof (redo_recdes->
type);
2481 redo_crumbs[0].
data = (
char *) &redo_recdes->
type;
2482 redo_crumbs[1].
length = 0;
2484 num_redo_crumbs = 2;
2490 if (undo_recdes !=
NULL)
2492 undo_crumbs[0].
length =
sizeof (undo_recdes->
type);
2493 undo_crumbs[0].
data = (
char *) &undo_recdes->
type;
2495 undo_crumbs[1].
data = undo_recdes->
data;
2496 num_undo_crumbs = 2;
2501 num_undo_crumbs = 0;
2504 if (redo_recdes !=
NULL)
2506 redo_crumbs[0].
length =
sizeof (redo_recdes->
type);
2507 redo_crumbs[0].
data = (
char *) &redo_recdes->
type;
2509 redo_crumbs[1].
data = redo_recdes->
data;
2510 num_redo_crumbs = 2;
2515 num_redo_crumbs = 0;
2551 crumbs[0].
data = (
char *) &recdes->
type;
2592 crumbs[0].
data = (
char *) &recdes->
type;
2634 #if defined(CUBRID_DEBUG) 2708 #if defined(CUBRID_DEBUG) 2735 rcv.
data = (
char *) data;
2738 (void) (*
RV_fun[rcvindex].redofun) (thread_p, &rcv);
2765 rcv.
data = (
char *) data;
2768 (void) (*
RV_fun[rcvindex].redofun) (thread_p, &rcv);
2769 if (skipredo ==
false)
2861 int length,
const void *data,
const LOG_LSA * ref_lsa)
2884 #if defined(CUBRID_DEBUG) 2886 "log_run_postpone: Warning run postpone logging is ignored when transaction is not committed\n");
2922 run_posp->
length = length;
3035 #if defined(CUBRID_DEBUG) 3073 compensate->
length = length;
3170 assert (tdes->is_active_worker_transaction () || tdes->is_system_main_transaction ());
3181 ha_server_state->
state = state;
3208 #if defined(CUBRID_DEBUG) 3212 "log_skip_logging_set_lsa: A data page pointer must" 3213 " be given as part of the address... ignored\n");
3249 #if defined(SERVER_MODE) 3256 #if defined(CUBRID_DEBUG) 3260 "log_skip_logging: A data page pointer must be given as part of the address... ignored\n");
3363 assert (tdes->is_active_worker_transaction ());
3376 if (savept_name ==
NULL)
3383 length = (int)
strlen (savept_name) + 1;
3436 log_pgptr = (
LOG_PAGE *) aligned_log_pgbuf;
3438 while (!
LSA_ISNULL (&prev_lsa) && found ==
false)
3447 while (found ==
false && prev_lsa.
pageid == log_lsa.
pageid)
3477 ptr = (
char *) log_pgptr->
area + log_lsa.
offset;
3478 if (strcmp (savept_name, ptr) == 0)
3488 unsigned int copy_length;
3497 remains_length = length;
3499 while (remains_length > 0)
3502 if (log_lsa.
offset + remains_length < (
int) LOGAREA_SIZE)
3504 copy_length = remains_length;
3508 copy_length = LOGAREA_SIZE - (int) (log_lsa.
offset);
3511 memcpy (ptr + area_offset, (
char *) log_pgptr->
area + log_lsa.
offset, copy_length);
3512 remains_length -= copy_length;
3513 area_offset += copy_length;
3514 log_lsa.
offset += copy_length;
3516 if (strcmp (savept_name, ptr) == 0)
3554 return "LOG_SYSOP_END_COMMIT";
3556 return "LOG_SYSOP_END_ABORT";
3558 return "LOG_SYSOP_END_LOGICAL_UNDO";
3560 return "LOG_SYSOP_END_LOGICAL_MVCC_UNDO";
3562 return "LOG_SYSOP_END_LOGICAL_COMPENSATE";
3564 return "LOG_SYSOP_END_LOGICAL_RUN_POSTPONE";
3567 return "UNKNOWN LOG_SYSOP_END_TYPE";
3583 if (thread_p ==
NULL)
3596 assert (tdes->is_allowed_sysop ());
3598 tdes->lock_topop ();
3607 tdes->unlock_topop ();
3618 "Start system operation. Current worker tdes: tdes->trid=%d, tdes->topops.last=%d, " 3619 "tdes->tail_lsa=(%lld, %d). Worker state=%d.", tdes->
trid, tdes->
topops.
last,
3624 tdes->on_sysop_start ();
3688 int mod_factor = 5000;
3708 if ((*tdes_out) !=
NULL && (*tdes_out)->topops.last < 0)
3752 tdes->unlock_topop ();
3760 "Ended all top operations. Tdes: tdes->trid=%d tdes->head_lsa=(%lld, %d), " 3761 "tdes->tail_lsa=(%lld, %d), tdes->undo_nxlsa=(%lld, %d), " 3762 "tdes->tail_topresult_lsa=(%lld, %d). Worker state=%d.", tdes->
trid,
3769 tdes->on_sysop_end ();
3775 #if defined(SERVER_MODE) 3778 if (!tdes->is_under_sysop ())
3805 bool is_rv_finish_postpone)
3921 const char *undo_data)
3949 log_record.
vfid = vfid;
4045 save_state = tdes->
state;
4062 tdes->
state = save_state;
4152 if (*tdes_out ==
NULL)
4284 if (tdes->is_system_worker_transaction () && !tdes->is_under_sysop ())
4498 LOG_REPL_RECORD *repl_rec;
4514 && ((is_commit && repl_rec->must_flush != LOG_REPL_DONT_NEED_FLUSH)
4515 || repl_rec->must_flush == LOG_REPL_NEED_FLUSH))
4519 repl_rec->repl_data, 0,
NULL);
4526 if (repl_rec->tde_encrypted)
4544 log->
length = repl_rec->length;
4545 log->
rcvindex = repl_rec->rcvindex;
4556 repl_rec->must_flush = LOG_REPL_DONT_NEED_FLUSH;
4668 #if defined(SERVER_MODE) 4686 #if !defined (NDEBUG) 4690 time_t xxtime = time (
NULL);
4692 (void) ctime_r (&xxtime, time_val);
4848 bool decache_classrepr)
4850 if (decache_classrepr)
4948 if (retain_lock !=
true)
4976 if (retain_lock !=
true)
5096 assert (!tdes->is_system_worker_transaction ());
5101 #if defined(CUBRID_DEBUG) 5103 "log_commit: Transaction %d (index = %d) is" 5104 " not active and cannot be committed. Its state is %s\n", tdes->
trid, tdes->
tran_index,
5138 state =
log_2pc_commit (thread_p, tdes, execute_2pc_type, &decision);
5204 assert (!tdes->is_system_worker_transaction ());
5310 if (savepoint_name ==
NULL || log_get_savepoint_lsa (thread_p, savepoint_name, tdes, savept_lsa) ==
NULL)
5383 assert (!tdes->is_system_worker_transaction ());
5385 state = tdes->
state;
5427 state = tdes->
state;
5435 tdes->unlock_global_oldest_visible_mvccid ();
5452 #if defined(SERVER_MODE) 5480 int return_2pc_loose_tranindex;
5481 bool all_acks =
true;
5488 assert (!tdes->is_system_worker_transaction ());
5490 state = tdes->
state;
5527 state = tdes->
state;
5549 state = tdes->
state;
5567 wait_msecs = wait_msecs * 1000;
5585 memcpy (new_tdes, tdes,
sizeof (*tdes));
5617 #if defined(SERVER_MODE) 5642 if (tdes->
isloose_end ==
true && all_acks ==
true)
5644 return_2pc_loose_tranindex =
true;
5648 return_2pc_loose_tranindex =
false;
5665 #if !defined(NDEBUG) 5669 time_t xxtime = time (
NULL);
5671 (void) ctime_r (&xxtime, time_val);
5713 state = tdes->
state;
5719 tdes->unlock_global_oldest_visible_mvccid ();
5728 if (return_2pc_loose_tranindex ==
false)
5752 #if defined(SERVER_MODE) 5785 for (i = 0, ptr = (
char *) data; i < length; i++)
5787 (void) fputc (*ptr++, out_fp);
5805 fprintf (out_fp,
" 00000: ");
5806 for (i = 0, ptr = (
char *) data; i < length; i++)
5808 fprintf (out_fp,
"%02X ", (
unsigned char) (*ptr++));
5809 if (i % 16 == 15 && i != length)
5811 fprintf (out_fp,
"\n %05d: ", i + 1);
5814 fprintf (out_fp,
"\n");
5820 char *ptr = (
char *) data;
5831 fprintf (out_fp,
"C[%s] K[%s]\n", class_name, sb.
get_buffer ());
5843 ptr = (
char *) data;
5848 fprintf (out_fp,
"C[%s] S[%s]\n", class_name, sql);
5868 void (*dumpfun) (FILE *,
int,
void *),
LOG_ZIP * log_dump_ptr)
5871 bool is_zipped =
false;
5872 bool is_unzipped =
false;
5881 if (dumpfun ==
NULL)
5897 ptr = (
char *) log_page_p->
area + log_lsa->
offset;
5899 if (length != 0 && is_zipped)
5901 is_unzipped =
log_unzip (log_dump_ptr, length, ptr);
5904 if (is_zipped && is_unzipped)
5907 log_lsa->
offset += length;
5911 (*dumpfun) (out_fp, length, ptr);
5912 log_lsa->
offset += length;
5918 ptr = (
char *) malloc (length);
5929 is_unzipped =
log_unzip (log_dump_ptr, length, ptr);
5932 if (is_zipped && is_unzipped)
5938 (*dumpfun) (out_fp, length, ptr);
5952 fprintf (out_fp,
"\n ** DUMP LOG HEADER **\n");
5955 (
void) ctime_r (&tmp_time, time_val);
5957 "HDR: Magic Symbol = %s at disk location = %lld\n Creation_time = %s" 5958 " Release = %s, Compatibility_disk_version = %g,\n" 5959 " Db_pagesize = %d, log_pagesize= %d, Shutdown = %d,\n" 5960 " Next_trid = %d, Next_mvcc_id = %llu, Num_avg_trans = %d, Num_avg_locks = %d,\n" 5961 " Num_active_log_pages = %d, First_active_log_page = %lld,\n" 5962 " Current_append = %lld|%d, Checkpoint = %lld|%d,\n", log_header_p->
magic,
5970 " Next_archive_pageid = %lld at active_phy_pageid = %d,\n" 5971 " Next_archive_num = %d, Last_archiv_num_for_syscrashes = %d,\n" 5972 " Last_deleted_arv_num = %d, has_logging_been_skipped = %d,\n" 5973 " bkup_lsa: level0 = %lld|%d, level1 = %lld|%d, level2 = %lld|%d,\n Log_prefix = %s\n",
5995 " Volid = %d Pageid = %d Offset = %d,\n Undo(Before) length = %d, Redo(After) length = %d,\n",
5999 undo_length = undoredo->
ulength;
6000 redo_length = undoredo->
rlength;
6005 fprintf (out_fp,
"-->> Undo (Before) Data:\n");
6006 log_dump_data (thread_p, out_fp, undo_length, log_lsa, log_page_p,
RV_fun[rcvindex].dump_undofun, log_zip_p);
6008 fprintf (out_fp,
"-->> Redo (After) Data:\n");
6009 log_dump_data (thread_p, out_fp, redo_length, log_lsa, log_page_p,
RV_fun[rcvindex].dump_redofun, log_zip_p);
6027 fprintf (out_fp,
" Volid = %d Pageid = %d Offset = %d,\n Undo (Before) length = %d,\n", undo->
data.
volid,
6030 undo_length = undo->
length;
6035 fprintf (out_fp,
"-->> Undo (Before) Data:\n");
6036 log_dump_data (thread_p, out_fp, undo_length, log_lsa, log_page_p,
RV_fun[rcvindex].dump_undofun, log_zip_p);
6054 fprintf (out_fp,
" Volid = %d Pageid = %d Offset = %d,\n Redo (After) length = %d,\n", redo->
data.
volid,
6057 redo_length = redo->
length;
6062 fprintf (out_fp,
"-->> Redo (After) Data:\n");
6063 log_dump_data (thread_p, out_fp, redo_length, log_lsa, log_page_p,
RV_fun[rcvindex].dump_redofun, log_zip_p);
6082 " Volid = %d Pageid = %d Offset = %d,\n Undo(Before) length = %d, Redo(After) length = %d,\n",
6085 fprintf (out_fp,
" MVCCID = %llu, \n Prev_mvcc_op_log_lsa = %lld|%d, \n VFID = (%d, %d)",
6086 (
long long int) mvcc_undoredo->
mvccid,
6097 fprintf (out_fp,
"-->> Undo (Before) Data:\n");
6098 log_dump_data (thread_p, out_fp, undo_length, log_lsa, log_page_p,
RV_fun[rcvindex].dump_undofun, log_zip_p);
6100 fprintf (out_fp,
"-->> Redo (After) Data:\n");
6101 log_dump_data (thread_p, out_fp, redo_length, log_lsa, log_page_p,
RV_fun[rcvindex].dump_redofun, log_zip_p);
6119 fprintf (out_fp,
" Volid = %d Pageid = %d Offset = %d,\n Undo (Before) length = %d,\n",
6122 fprintf (out_fp,
" MVCCID = %llu, \n Prev_mvcc_op_log_lsa = %lld|%d, \n VFID = (%d, %d)",
6132 fprintf (out_fp,
"-->> Undo (Before) Data:\n");
6133 log_dump_data (thread_p, out_fp, undo_length, log_lsa, log_page_p,
RV_fun[rcvindex].dump_undofun, log_zip_p);
6151 fprintf (out_fp,
" Volid = %d Pageid = %d Offset = %d,\n Redo (After) length = %d,\n",
6154 fprintf (out_fp,
" MVCCID = %llu, \n", (
long long int) mvcc_redo->
mvccid);
6161 fprintf (out_fp,
"-->> Redo (After) Data:\n");
6162 log_dump_data (thread_p, out_fp, redo_length, log_lsa, log_page_p,
RV_fun[rcvindex].dump_redofun, log_zip_p);
6179 " Volid = %d Pageid = %d Offset = %d,\n Run postpone (Redo/After) length = %d, corresponding" 6180 " to\n Postpone record with LSA = %lld|%d\n", run_posp->
data.
volid, run_posp->
data.
pageid,
6183 redo_length = run_posp->
length;
6188 fprintf (out_fp,
"-->> Run Postpone (Redo/After) Data:\n");
6205 redo_length = dbout_redo->
length;
6208 fprintf (out_fp,
", Recv_index = %s, Length = %d,\n",
rv_rcvindex_string (rcvindex), redo_length);
6213 fprintf (out_fp,
"-->> Database external Data:\n");
6223 int length_compensate;
6231 fprintf (out_fp,
" Volid = %d Pageid = %d Offset = %d,\n Compensate length = %d, Next_to_UNDO = %lld|%d\n",
6235 length_compensate = compensate->
length;
6240 fprintf (out_fp,
"-->> Compensate Data:\n");
6241 log_dump_data (thread_p, out_fp, length_compensate, log_lsa, log_page_p,
RV_fun[rcvindex].dump_undofun,
NULL);
6254 fprintf (out_fp,
", First postpone record at before or after Page = %lld and offset = %d\n",
6270 tmp_time = (time_t) donetime->
at_time;
6271 (
void) ctime_r (&tmp_time, time_val);
6272 fprintf (out_fp,
",\n Transaction finish time at = %s\n", time_val);
6283 void (*dump_function) (FILE *, int,
void *);
6287 fprintf (out_fp,
", Target log lsa = %lld|%d\n",
LSA_AS_ARGS (&repl_log->
lsa));
6288 length = repl_log->
length;
6295 type =
"RVREPL_DATA_INSERT";
6299 type =
"RVREPL_DATA_UPDATE_START";
6303 type =
"RVREPL_DATA_UPDATE";
6307 type =
"RVREPL_DATA_UPDATE_END";
6311 type =
"RVREPL_DATA_DELETE";
6315 type =
"RVREPL_SCHEMA";
6319 fprintf (out_fp,
"T[%s] ", type);
6321 log_dump_data (thread_p, out_fp, length, log_lsa, log_page_p, dump_function,
NULL);
6345 (void) log_dump_record_sysop_end_internal (thread_p, &sysop_start_postpone.
sysop_end, log_lsa, log_page_p, log_zip_p,
6347 fprintf (out_fp,
" postpone_lsa = %lld|%d \n",
LSA_AS_ARGS (&sysop_start_postpone.
posp_lsa));
6370 fprintf (out_fp,
",\n Prev parent LSA = %lld|%d, Prev_topresult_lsa = %lld|%d, %s \n",
6373 switch (sysop_end->
type)
6383 fprintf (out_fp,
" run_postpone_lsa = %lld|%d, postpone = %s \n",
6385 sysop_end->
run_postpone.is_sysop_postpone ?
"sysop" :
"transaction");
6391 fprintf (out_fp,
" Volid = %d Pageid = %d Offset = %d,\n Undo (Before) length = %d,\n",
6398 log_dump_data (thread_p, out_fp, undo_length, log_lsa, log_page_p,
RV_fun[rcvindex].dump_undofun, log_zip_p);
6404 fprintf (out_fp,
" Volid = %d Pageid = %d Offset = %d,\n Undo (Before) length = %d,\n",
6407 fprintf (out_fp,
" MVCCID = %llu, \n Prev_mvcc_op_log_lsa = %lld|%d, \n VFID = (%d, %d)",
6415 log_dump_data (thread_p, out_fp, undo_length, log_lsa, log_page_p,
RV_fun[rcvindex].dump_undofun, log_zip_p);
6468 ntops = length /
sizeof (*chkpt_topops);
6472 for (i = 0; i < ntops; i++)
6474 chkpt_topone = &chkpt_topops[
i];
6475 fprintf (out_fp,
" Trid = %d \n", chkpt_topone->
trid);
6476 fprintf (out_fp,
" Sysop start postpone LSA = %lld|%d \n",
6479 (void) fprintf (out_fp,
"\n");
6486 int length_active_tran;
6493 fprintf (out_fp,
", Num_trans = %d,\n", chkpt->
ntrans);
6500 if (length_topope > 0)
6512 int length_save_point;
6520 length_save_point = savept->
length;
6524 fprintf (out_fp,
" Savept Name =");
6534 unsigned int nobj_locks;
6541 fprintf (out_fp,
", Client_name = %s, Gtrid = %d, Num objlocks = %u\n", prepared->
user_name, prepared->
gtrid,
6574 fprintf (out_fp,
" Client_name = %s, Gtrid = %d, Num_participants = %d", start_2pc->
user_name, start_2pc->
gtrid,
6593 fprintf (out_fp,
" Participant index = %d\n", received_ack->
particp_index);
6606 fprintf (out_fp,
" HA server state = %d\n", ha_server_state->
state);
6615 switch (record_type)
6661 fprintf (out_fp,
"\n");
6716 fprintf (out_fp,
"\n");
6723 fprintf (out_fp,
"\n... xxx END OF LOG xxx ...\n");
6730 fprintf (out_fp,
"log_dump: Unknown record type = %d (%s).\n", record_type,
log_to_string (record_type));
6778 fprintf (out_fp,
"**************** DUMP LOGGING INFORMATION ************\n");
6791 lsa.
pageid = start_logpageid;
6794 if (isforward !=
false)
6821 "\n START DUMPING LOG_RECORDS: %s, start_logpageid = %lld,\n" 6822 " Num_pages_to_dump = %d, desired_tranid = %d\n", (isforward ?
"Forward" :
"Backaward"),
6823 (
long long int) start_logpageid, dump_npages, desired_tranid);
6827 log_pgptr = (
LOG_PAGE *) aligned_log_pgbuf;
6829 if (log_dump_ptr ==
NULL)
6832 if (log_dump_ptr ==
NULL)
6834 fprintf (out_fp,
" Error memory alloc... Quit\n");
6840 while (!
LSA_ISNULL (&lsa) && dump_npages-- > 0)
6844 fprintf (out_fp,
" Error reading page %lld... Quit\n", (
long long int) lsa.
pageid);
6845 if (log_dump_ptr !=
NULL)
6879 type = log_rec->
type;
6891 fprintf (out_fp,
"\n\n>>>>>****\n");
6892 fprintf (out_fp,
"Guess next address = %lld|%d for LSA = %lld|%d\n",
6894 fprintf (out_fp,
"<<<<<****\n");
6899 if (isforward !=
false)
6905 fprintf (out_fp,
"\n****\n");
6906 fprintf (out_fp,
"log_dump: Problems finding next record. BYE\n");
6907 fprintf (out_fp,
"\n****\n");
6941 "\nLSA = %3lld|%3d, Forw log = %3lld|%3d, Backw log = %3lld|%3d,\n" 6942 " Trid = %3d, Prev tran logrec = %3lld|%3d\n Type = %s", (
long long int) log_lsa.
pageid,
6951 fprintf (out_fp,
"\n****\n");
6952 fprintf (out_fp,
"log_dump: Incomplete log_record.. Quit\n");
6953 fprintf (out_fp,
"\n****\n");
6960 log_pgptr =
log_dump_record (thread_p, out_fp, type, &log_lsa, log_pgptr, log_dump_ptr);
6978 fprintf (out_fp,
"\n FINISH DUMPING LOG_RECORDS \n");
6979 fprintf (out_fp,
"******************************************************\n");
7027 bool is_zipped =
false;
7073 area = (
char *) malloc (rcv->
length);
7149 "log_rollback_record: SYSTEM ERROR... Transaction %d, " 7150 "Log record %lld|%d, rcvindex = %s, was not undone due to error (%d)\n",
7160 "BTREE_ROLLBACK: Successfully executed undo/compensate for log entry before " 7161 "lsa=%lld|%d, undo_nxlsa=%lld|%d. Transaction=%d, rcvindex=%d.\n",
7162 (
long long int) log_lsa->
pageid, (
int) log_lsa->
offset,
7175 "log_rollback_record: SYSTEM ERROR... Transaction %d, " 7176 "Log record %lld|%d, rcvindex = %s, was not undone due to error (%d)\n",
7192 save_state = tdes->
state;
7198 #if defined(CUBRID_DEBUG) 7225 "log_rollback_record: SYSTEM ERROR... Transaction %d, " 7226 "Log record %lld|%d, rcvindex = %s, was not undone due to error (%d)\n",
7235 tdes->
state = save_state;
7281 int num_retries = 0;
7288 #if defined(CUBRID_DEBUG) 7290 "WARNING: RETRY DURING UNDO WAS NEEDED ... TranIndex: %d, Cnt = %d, Err = %d, Rcvindex = %s\n",
7315 const char *fmt =
"TYPE[%d], TRID[%d], PREV[%lld,%d], BACK[%lld,%d], FORW[%lld,%d]";
7354 int old_wait_msecs = 0;
7356 int data_header_size = 0;
7357 bool is_mvcc_op =
false;
7385 if (upto_lsa_ptr !=
NULL)
7387 LSA_COPY (&upto_lsa, upto_lsa_ptr);
7394 log_pgptr = (
LOG_PAGE *) aligned_log_pgbuf;
7400 if (log_unzip_ptr ==
NULL)
7406 while (!
LSA_ISNULL (&prev_tranlsa) && !isdone)
7409 LSA_COPY (&log_lsa, &prev_tranlsa);
7416 if (log_unzip_ptr !=
NULL)
7426 if (upto_lsa_ptr !=
NULL &&
LSA_LE (&prev_tranlsa, &upto_lsa))
7448 switch (log_rec->
type)
7470 data_header_size =
sizeof (*mvcc_undoredo);
7475 undoredo = &mvcc_undoredo->
undoredo;
7482 data_header_size =
sizeof (*undoredo);
7497 log_rollback_record (thread_p, &log_lsa, log_pgptr, rcvindex, &rcv_vpid, &rcv, tdes, log_unzip_ptr);
7510 data_header_size =
sizeof (*mvcc_undo);
7514 undo = &mvcc_undo->
undo;
7521 data_header_size =
sizeof (*undo);
7535 log_rollback_record (thread_p, &log_lsa, log_pgptr, rcvindex, &rcv_vpid, &rcv, tdes, log_unzip_ptr);
7575 log_rollback_record (thread_p, &log_lsa, log_pgptr, rcvindex, &rcv_vpid, &rcv, tdes, log_unzip_ptr);
7591 log_rollback_record (thread_p, &log_lsa, log_pgptr, rcvindex, &rcv_vpid, &rcv, tdes, log_unzip_ptr);
7671 if (log_unzip_ptr !=
NULL)
7699 char *aligned_log_pgbuf;
7707 int nxtop_count = 0;
7708 int nxtop_stack_size = 0;
7720 log_pgptr = (
LOG_PAGE *) aligned_log_pgbuf;
7722 nxtop_stack = *out_nxtop_range_stack;
7727 if (nxtop_count >= nxtop_stack_size)
7729 prev_nxtop_stack = nxtop_stack;
7731 nxtop_stack_size *= 2;
7733 if (nxtop_stack ==
NULL)
7735 if (prev_nxtop_stack != *out_nxtop_range_stack)
7743 memcpy (nxtop_stack, prev_nxtop_stack, (nxtop_stack_size / 2) *
sizeof (
LOG_TOPOP_RANGE));
7745 if (prev_nxtop_stack != *out_nxtop_range_stack)
7751 if (last_fetch_page_id != top_result_lsa.
pageid)
7755 if (nxtop_stack != *out_nxtop_range_stack)
7771 LSA_COPY (&tmp_log_lsa, &top_result_lsa);
7775 last_fetch_page_id = tmp_log_lsa.
pageid;
7781 if (
LSA_ISNULL (&prev_last_parent_lsa) ||
LSA_LE (&top_result_lsa, &prev_last_parent_lsa))
7787 LSA_COPY (&(nxtop_stack[nxtop_count].end_lsa), &prev_tran_lsa);
7792 LSA_COPY (&(nxtop_stack[nxtop_count].end_lsa), &top_result_lsa);
7804 if (nxtop_stack != *out_nxtop_range_stack)
7814 *out_nxtop_range_stack = nxtop_stack;
7878 sysop_start_postpone.
sysop_end = *sysop_end;
7885 tdes->
state = save_state;
7893 tdes->
state = save_state;
7919 char *aligned_log_pgbuf;
7927 int nxtop_count = 0;
7934 log_pgptr = (
LOG_PAGE *) aligned_log_pgbuf;
7937 LSA_COPY (&next_start_seek_lsa, start_postpone_lsa);
7939 nxtop_stack = nxtop_array;
7944 LSA_COPY (&start_seek_lsa, &next_start_seek_lsa);
7946 if (nxtop_count > 0)
7949 nxtop_range = &(nxtop_stack[nxtop_count]);
7953 end_seek_lsa = &(nxtop_range->
start_lsa);
7958 end_seek_lsa = &end_postpone_lsa;
7969 end_seek_lsa = &end_postpone_lsa;
7977 LSA_COPY (&forward_lsa, &start_seek_lsa);
7980 while (!
LSA_ISNULL (&forward_lsa) && !isdone)
7996 if (
LSA_GT (&forward_lsa, end_seek_lsa))
8040 switch (log_rec->
type)
8065 int mod_factor = 5000;
8089 if (!
LSA_EQ (&log_lsa, &start_seek_lsa))
8091 #if defined(CUBRID_DEBUG) 8093 "log_do_postpone: SYSTEM ERROR.. Bad log_rectype = %d\n (%s)." 8119 #if defined(CUBRID_DEBUG) 8121 "log_do_postpone: SYSTEM ERROR..Bad log_rectype = %d (%s)... ignored\n",
8142 if (nxtop_stack != nxtop_array && nxtop_stack !=
NULL)
8155 char *rcv_data =
NULL;
8175 rcv_data = (
char *) log_pgptr->
area + log_lsa->
offset;
8180 area = (
char *) malloc (redo.
length);
8226 rcv.
data = redo_rcv_data;
8315 log_pgptr = (
LOG_PAGE *) aligned_log_pgbuf;
8331 pageid = end_lsa->
pageid;
8333 while (end_lsa->
pageid == pageid)
8360 #if defined(CUBRID_DEBUG) 8385 end_lsa->
pageid = pageid + 1;
8450 DKNPAGES log_npages, FILE * out_fp)
8467 ret =
log_create_internal (thread_p, db_fullname, logpath, prefix_logname, log_npages, &db_creation);
8483 char vol_fullname[PATH_MAX];
8537 fprintf (out_fp,
"%s... done\n", vol_fullname);
8576 INT64 ignore_dbcreation;
8577 float ignore_dbcomp;
8582 &log_page_size, &ignore_dbcreation, &ignore_dbcomp, &dummy) == -1)
8617 return db_iopagesize;
8631 return db_iopagesize;
8646 const char *prefix_logname)
8649 PGLENGTH dummy_ignore_log_page_size;
8650 INT64 dummy_ignore_dbcreation;
8651 float dummy_ignore_dbcomp;
8656 &dummy_ignore_log_page_size, &dummy_ignore_dbcreation, &dummy_ignore_dbcomp,
8758 #if defined (ENABLE_UNUSED_FUNCTION) 8774 log_simulate_crash (
THREAD_ENTRY * thread_p,
int flush_log,
int flush_data_pages)
8784 if (flush_log !=
false || flush_data_pages !=
false)
8789 if (flush_data_pages)
8956 buf[
sizeof (buf) - 1] = 0;
9381 bool is_zipped =
false;
9386 bool area_was_mallocated =
false;
9416 udata_length = undo->
length;
9424 udata_length = undoredo->
ulength;
9447 udata_size = udata_length;
9456 undo_data = (
char *) log_page_p->
area + process_lsa.
offset;
9468 area = (
char *) malloc (udata_size);
9475 area_was_mallocated =
true;
9486 if (log_unzip_ptr ==
NULL)
9493 if (
log_unzip (log_unzip_ptr, udata_size, (
char *) undo_data))
9496 undo_data = (
char *) log_unzip_ptr->
log_data;
9507 recdes->
type = *(INT16 *) (undo_data);
9508 recdes->
length = udata_size -
sizeof (recdes->
type);
9523 memcpy (recdes->
data, (
char *) (undo_data) + sizeof (recdes->
type), recdes->
length);
9526 if (area_was_mallocated)
9530 if (log_unzip_ptr !=
NULL)
9555 char **undo_buffer,
int *undo_size,
char **undo_data)
9604 *undo_data = log_page->
area + log_lsa->
offset;
9608 if (*undo_buffer_size == 0)
9612 else if (*undo_buffer_size < *undo_size)
9615 if (new_ptr ==
NULL)
9620 *undo_buffer_size = *undo_size;
9621 *undo_buffer = new_ptr;
9623 *undo_data = *undo_buffer;
9635 is_timed_wait =
true;
9637 #if defined (SERVER_MODE) 9638 if (log_Flush_has_been_requested)
9640 period = std::chrono::milliseconds (0);
9645 const int MAX_WAIT_TIME_MSEC = 1000;
9648 assert (log_group_commit_interval_msec >= 0);
9650 if (log_group_commit_interval_msec == 0)
9652 period = std::chrono::milliseconds (MAX_WAIT_TIME_MSEC);
9656 period = std::chrono::milliseconds (log_group_commit_interval_msec);
9668 assert (log_checkpoint_interval_sec >= 0);
9670 if (log_checkpoint_interval_sec > 0)
9673 is_timed_wait =
true;
9674 period = std::chrono::seconds (log_checkpoint_interval_sec);
9679 is_timed_wait =
false;
9683 #if defined (SERVER_MODE) 9690 if (log_Remove_log_archive_daemon)
9692 log_Remove_log_archive_daemon->
wakeup ();
9697 #if defined (SERVER_MODE) 9704 if (log_Checkpoint_daemon)
9706 log_Checkpoint_daemon->
wakeup ();
9719 #if defined (SERVER_MODE) 9720 log_Flush_has_been_requested =
true;
9721 log_Flush_daemon->
wakeup ();
9732 #if defined (SERVER_MODE) 9733 return log_Flush_daemon !=
NULL;
9739 #if defined (SERVER_MODE) 9744 log_flush_daemon_get_stats (UINT64 * statsp)
9746 if (log_Flush_daemon !=
NULL)
9751 #endif // SERVER_MODE 9754 #if defined(SERVER_MODE) 9768 #if defined(SERVER_MODE) 9777 using clock = std::chrono::system_clock;
9779 bool m_is_timed_wait;
9781 std::chrono::milliseconds m_param_period;
9784 void compute_period ()
9788 assert (remove_log_archives_interval_sec >= 0);
9791 m_param_period = std::chrono::milliseconds (remove_log_archives_interval_sec * 1000);
9793 if (m_param_period > std::chrono::milliseconds (0))
9795 m_is_timed_wait =
true;
9799 if ((now - m_log_deleted_time) > m_param_period)
9801 m_period = m_param_period;
9805 m_period = m_param_period - (now - m_log_deleted_time);
9811 m_is_timed_wait =
false;
9816 log_remove_log_archive_daemon_task ()
9817 : m_is_timed_wait (
true)
9819 , m_param_period (0)
9820 , m_log_deleted_time ()
9829 is_timed_wait = m_is_timed_wait;
9843 if (m_is_timed_wait)
9845 if (m_period != m_param_period)
9853 m_log_deleted_time = clock::now ();
9865 #if defined(SERVER_MODE) 9876 gettimeofday (&now,
NULL);
9878 log_Clock_msec = (now.tv_sec * 1000LL) + (now.tv_usec / 1000LL);
9882 #if defined(SERVER_MODE) 9886 #if defined(WINDOWS) 9896 time_t log_record_time = 0;
9898 int delay_limit_in_secs;
9899 int acceptable_delay_in_secs;
9900 int curr_delay_in_secs;
9923 if (acceptable_delay_in_secs < 0)
9925 acceptable_delay_in_secs = 0;
9930 if (error_code ==
NO_ERROR && log_record_time > 0)
9932 curr_delay_in_secs = (int) (time (
NULL) - log_record_time);
9933 if (curr_delay_in_secs > 0)
9938 if (delay_limit_in_secs > 0)
9940 if (curr_delay_in_secs > delay_limit_in_secs)
9945 curr_delay_in_secs, delay_limit_in_secs);
9950 else if (curr_delay_in_secs <= acceptable_delay_in_secs)
9955 curr_delay_in_secs, acceptable_delay_in_secs);
9968 #if defined(SERVER_MODE) 9988 log_Flush_has_been_requested =
false;
9993 #if defined(SERVER_MODE) 9998 log_checkpoint_daemon_init ()
10010 #if defined(SERVER_MODE) 10015 log_remove_log_archive_daemon_init ()
10017 assert (log_Remove_log_archive_daemon ==
NULL);
10019 log_remove_log_archive_daemon_task *daemon_task =
new log_remove_log_archive_daemon_task ();
10021 &log_remove_log_archive_daemon_task::get_remove_log_archives_interval,
10023 std::placeholders::_1,
10024 std::placeholders::_2);
10030 "log_remove_log_archive");
10034 #if defined(SERVER_MODE) 10039 log_clock_daemon_init ()
10050 #if defined(SERVER_MODE) 10055 log_check_ha_delay_info_daemon_init ()
10057 assert (log_Check_ha_delay_info_daemon ==
NULL);
10063 "log_check_ha_delay_info");
10067 #if defined(SERVER_MODE) 10072 log_flush_daemon_init ()
10083 #if defined(SERVER_MODE) 10088 log_daemons_init ()
10090 log_remove_log_archive_daemon_init ();
10091 log_checkpoint_daemon_init ();
10092 log_check_ha_delay_info_daemon_init ();
10093 log_clock_daemon_init ();
10094 log_flush_daemon_init ();
10098 #if defined(SERVER_MODE) 10103 log_daemons_destroy ()
10121 #if defined (SERVER_MODE) 10122 if (log_Clock_msec > 0)
10124 return log_Clock_msec;
10128 struct timeval now;
10129 gettimeofday (&now,
NULL);
10131 return (now.tv_sec * 1000LL) + (now.tv_usec / 1000LL);
10135 #if defined (SERVER_MODE) 10139 (void) log_abort_by_tdes (&thread_ref, &tdes);
10141 #endif // SERVER_MODE 10179 #if !defined (NDEBUG) 10224 #if defined (SERVER_MODE) 10235 #if defined (SERVER_MODE) 10246 #if defined (SERVER_MODE) 10257 #if defined (SERVER_MODE) 10268 #if defined (SERVER_MODE) 10279 #if defined (SERVER_MODE) 10286 #else // not server mode 10288 #endif // not server mode 10294 #if defined (SERVER_MODE) 10296 #else // not server mode 10298 #endif // not server mode #define LOG_READ_ADD_ALIGN(thread_p, add, lsa, log_pgptr)
unsigned int num_object_locks
void tx_lob_locator_clear(cubthread::entry *thread_p, log_tdes *tdes, bool at_commit, LOG_LSA *savept_lsa)
int num_coord_loose_end_indices
#define ER_LK_UNILATERALLY_ABORTED
unsigned long gc_flush_count
void partition_decache_class(THREAD_ENTRY *thread_p, const OID *class_oid)
static int logtb_tran_update_stats_online_index_rb(THREAD_ENTRY *thread_p, void *data, void *args)
void log_initialize(THREAD_ENTRY *thread_p, const char *db_fullname, const char *logpath, const char *prefix_logname, int ismedia_crash, BO_RESTART_ARG *r_args)
int db_make_datetime(DB_VALUE *value, const DB_DATETIME *datetime)
CSS_CONN_ENTRY * css_find_conn_by_tran_index(int tran_index)
cubthread::entry * thread_get_thread_entry_info(void)
void reset_start_mvccid()
int mht_map_no_key(THREAD_ENTRY *thread_p, const MHT_TABLE *ht, int(*map_func)(THREAD_ENTRY *thread_p, void *data, void *args), void *func_args)
int logpb_initialize_log_names(THREAD_ENTRY *thread_p, const char *db_fullname, const char *logpath, const char *prefix_logname)
void log_append_redo_data(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, int length, const void *data)
void LOG_CS_PROMOTE(THREAD_ENTRY *thread_p)
TRAN_STATE log_commit_local(THREAD_ENTRY *thread_p, LOG_TDES *tdes, bool retain_lock, bool is_local_tran)
void log_append_repl_info(THREAD_ENTRY *thread_p, LOG_TDES *tdes, bool is_commit)
#define ER_LOG_REDO_INTERFACE
void add(const char *classname, const OID &class_oid, const LOG_LSA &lsa)
void log_update_global_btid_online_index_stats(THREAD_ENTRY *thread_p)
#define ER_LOG_UNKNOWN_SAVEPOINT
#define ER_LOG_MAYNEED_MEDIA_RECOVERY
void logtb_complete_mvcc(THREAD_ENTRY *thread_p, LOG_TDES *tdes, bool committed)
const char * log_Db_fullname
void log_append_undoredo_data2(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, const VFID *vfid, PAGE_PTR pgptr, PGLENGTH offset, int undo_length, int redo_length, const void *undo_data, const void *redo_data)
void LOG_CS_DEMOTE(THREAD_ENTRY *thread_p)
MHT_TABLE * unique_stats_hash
int xdisk_get_purpose_and_space_info(THREAD_ENTRY *thread_p, VOLID volid, DISK_VOLPURPOSE *vol_purpose, DISK_VOLUME_SPACE_INFO *space_info)
void css_set_ha_repl_delayed(void)
bool pgbuf_is_lsa_temporary(PAGE_PTR pgptr)
#define LOG_TDES_LAST_SYSOP(tdes)
#define BO_IS_SERVER_RESTARTED()
STATIC_INLINE void log_sysop_end_final(THREAD_ENTRY *thread_p, LOG_TDES *tdes) __attribute__((ALWAYS_INLINE))
void log_2pc_dump_acqobj_locks(FILE *fp, int length, void *data)
int logpb_initialize_header(THREAD_ENTRY *thread_p, LOG_HEADER *loghdr, const char *prefix_logname, DKNPAGES npages, INT64 *db_creation)
PGLENGTH log_get_io_page_size(THREAD_ENTRY *thread_p, const char *db_fullname, const char *logpath, const char *prefix_logname)
TRAN_STATE log_abort(THREAD_ENTRY *thread_p, int tran_index)
void log_append_undoredo_crumbs(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, int num_undo_crumbs, int num_redo_crumbs, const LOG_CRUMB *undo_crumbs, const LOG_CRUMB *redo_crumbs)
int pgbuf_flush_all_unfixed_and_set_lsa_as_null(THREAD_ENTRY *thread_p, VOLID volid)
int locator_drop_transient_class_name_entries(THREAD_ENTRY *thread_p, LOG_LSA *savep_lsa)
bool LOG_CS_OWN(THREAD_ENTRY *thread_p)
void qmgr_clear_trans_wakeup(THREAD_ENTRY *thread_p, int tran_index, bool is_tran_died, bool is_abort)
#define HA_DELAY_ERR_CORRECTION
static LOG_PAGE * log_dump_record_2pc_prepare_commit(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p)
char user_name[DB_MAX_USER_LENGTH+1]
size_t css_count_transaction_worker_threads(THREAD_ENTRY *thread_p, int tran_index, int client_id)
const char * rv_rcvindex_string(LOG_RCVINDEX rcvindex)
void logpb_fatal_error(THREAD_ENTRY *thread_p, bool logexit, const char *file_name, const int lineno, const char *fmt,...)
bool LSA_EQ(const log_lsa *plsa1, const log_lsa *plsa2)
static void log_append_commit_log_with_lock(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_LSA *commit_lsa)
#define ER_LOG_FATAL_ERROR
int(* undofun)(THREAD_ENTRY *thread_p, LOG_RCV *logrcv)
LOG_TRAN_UPDATE_STATS log_upd_stats
void LSA_COPY(log_lsa *plsa1, const log_lsa *plsa2)
void log_sysop_end_logical_compensate(THREAD_ENTRY *thread_p, LOG_LSA *undo_nxlsa)
int fileio_reset_volume(THREAD_ENTRY *thread_p, int vol_fd, const char *vlabel, DKNPAGES npages, const LOG_LSA *reset_lsa_p)
static LOG_PAGE * log_dump_record_dbout_redo(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p)
void log_append_dboutside_redo(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, int length, const void *data)
enum log_getnewtrid LOG_GETNEWTRID
#define ER_LOG_PAGE_CORRUPTED
int db_make_bigint(DB_VALUE *value, const DB_BIGINT num)
LOG_VACUUM_INFO vacuum_info
static LOG_PAGE * log_dump_record_mvcc_undo(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p, LOG_ZIP *log_zip_p)
LOG_2PC_COORDINATOR * coord
LOG_LSA sysop_start_postpone_lsa
#define GET_ZIP_LEN(length)
LOG_LSA * log_get_append_lsa(void)
int logpb_fetch_page(THREAD_ENTRY *thread_p, const LOG_LSA *req_lsa, LOG_CS_ACCESS_MODE access_mode, LOG_PAGE *log_pgptr)
#define CUBRID_MAGIC_LOG_ACTIVE
void log_sysop_start_atomic(THREAD_ENTRY *thread_p)
void log_rv_dump_hexa(FILE *fp, int length, void *data)
const int LOG_SYSTEM_TRAN_INDEX
#define RCV_IS_LOGICAL_LOG(vpid, idx)
#define CUBRID_MAGIC_LOG_ARCHIVE
static LOG_PAGE * log_dump_record_undo(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p, LOG_ZIP *log_zip_p)
LOG_LSA * log_get_eof_lsa(void)
#define csect_enter(a, b, c)
VOLID fileio_find_next_perm_volume(THREAD_ENTRY *thread_p, VOLID volid)
static LOG_LSA * log_get_savepoint_lsa(THREAD_ENTRY *thread_p, const char *savept_name, LOG_TDES *tdes, LOG_LSA *savept_lsa)
static int log_initialize_internal(THREAD_ENTRY *thread_p, const char *db_fullname, const char *logpath, const char *prefix_logname, bool ismedia_crash, BO_RESTART_ARG *r_args, bool init_emergency)
int logpb_flush_page(THREAD_ENTRY *thread_p, LOG_PAGE *log_pgptr)
int logpb_background_archiving(THREAD_ENTRY *thread_p)
static LOG_PAGE * log_dump_record_sysop_start_postpone(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p, LOG_ZIP *log_zip_p)
int log_set_no_logging(void)
#define pgbuf_unfix(thread_p, pgptr)
static void log_cleanup_modified_class(const tx_transient_class_entry &t, bool &stop)
#define LOG_GET_LOG_RECORD_HEADER(log_page_p, lsa)
#define ER_LOG_HAS_TOPOPS_DURING_COMMIT_ABORT
void xlogtb_dump_trantable(THREAD_ENTRY *thread_p, FILE *out_fp)
const LOG_PAGEID LOGPB_HEADER_PAGE_ID
int log_execute_run_postpone(THREAD_ENTRY *thread_p, LOG_LSA *log_lsa, LOG_REC_REDO *redo, char *redo_rcv_data)
void log_skip_logging_set_lsa(THREAD_ENTRY *thread_p, LOG_DATA_ADDR *addr)
void thread_sleep(double millisec)
char user_name[DB_MAX_USER_LENGTH+1]
void logtb_clear_tdes(THREAD_ENTRY *thread_p, LOG_TDES *tdes)
#define ER_LOG_POSTPONE_INTERFACE
enum log_wrote_eot_log LOG_WRITE_EOT_LOG
void get_stats(cubperf::stat_value *stats_out)
#define assert_release(e)
#define REL_MAX_RELEASE_LENGTH
static bool log_verify_dbcreation(THREAD_ENTRY *thread_p, VOLID volid, const INT64 *log_dbcreation)
void pgbuf_set_dirty(THREAD_ENTRY *thread_p, PAGE_PTR pgptr, bool free_page)
#define LOG_CHECK_LOG_APPLIER(thread_p)
LOG_LSA * log_get_restart_lsa(void)
INT64 log_get_clock_msec(void)
void LOG_CS_ENTER(THREAD_ENTRY *thread_p)
#define VACUUM_IS_THREAD_VACUUM
void pgbuf_notify_vacuum_follows(THREAD_ENTRY *thread_p, PAGE_PTR page)
LOG_PRIOR_NODE * prior_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)
int csect_promote(THREAD_ENTRY *thread_p, int cs_index, int wait_secs)
static const int LOG_REC_UNDO_MAX_ATTEMPTS
VOLID logpb_add_volume(const char *db_fullname, VOLID new_volid, const char *new_volfullname, DISK_VOLPURPOSE new_volpurpose)
#define VFID_AS_ARGS(vfidp)
void log_append_undo_data2(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, const VFID *vfid, PAGE_PTR pgptr, PGLENGTH offset, int length, const void *data)
#define ER_LOG_THEREARE_PENDING_ACTIONS_MUST_LOG
char log_Name_active[PATH_MAX]
void log_sysop_start(THREAD_ENTRY *thread_p)
static void log_ascii_dump(FILE *out_fp, int length, void *data)
const VOLID LOG_DBLOG_ACTIVE_VOLID
unsigned long commit_count
void xlog_dump(THREAD_ENTRY *thread_p, FILE *out_fp, int isforward, LOG_PAGEID start_logpageid, DKNPAGES dump_npages, TRANID desired_tranid)
log_postpone_cache m_log_postpone_cache
#define OID_SET_NULL(oidp)
#define LOG_MAY_CONTAIN_USER_DATA(rcvindex)
int log_get_charset_from_header_page(THREAD_ENTRY *thread_p, const char *db_fullname, const char *logpath, const char *prefix_logname)
int log_archive_log_header_start_scan(THREAD_ENTRY *thread_p, int show_type, DB_VALUE **arg_values, int arg_cnt, void **ptr)
#define ER_LOG_MOUNT_FAIL
void(* REL_FIXUP_FUNCTION)(void)
LOG_GROUP_COMMIT_INFO group_commit_info
LOG_TDES * LOG_FIND_TDES(int tran_index)
int pgbuf_flush_all_unfixed(THREAD_ENTRY *thread_p, VOLID volid)
int logpb_create_volume_info(const char *db_fullname)
#define VACUUM_ER_LOG_TOPOPS
char * or_unpack_string_nocopy(char *ptr, char **string)
#define LSA_AS_ARGS(lsa_ptr)
bool log_2pc_clear_and_is_tran_distributed(log_tdes *tdes)
#define VACUUM_ER_LOG_WORKER
#define LOG_TOPOP_STACK_INIT_SIZE
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)
LOG_ZIP_SIZE_T data_length
STATIC_INLINE int log_sysop_get_level(THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
void rv_check_rvfuns(void)
#define ER_LOG_COMPENSATE_INTERFACE
const VOLID LOG_DBLOG_BKUPINFO_VOLID
static void log_cleanup_modified_class_list(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_LSA *savept_lsa, bool release, bool decache_classrepr)
void log_2pc_dump_gtrinfo(FILE *fp, int length, void *data)
const char * log_state_string(TRAN_STATE state)
void xcache_remove_by_oid(THREAD_ENTRY *thread_p, const OID *oid)
#define PTR_ALIGN(addr, boundary)
int logpb_check_and_reset_temp_lsa(THREAD_ENTRY *thread_p, VOLID volid)
static LOG_PAGE * log_dump_record_sysop_end(THREAD_ENTRY *thread_p, LOG_LSA *log_lsa, LOG_PAGE *log_page_p, LOG_ZIP *log_zip_p, FILE *out_fp)
std::mutex prior_lsa_mutex
LOG_VACUUM_INFO vacuum_info
bool LSA_LT(const log_lsa *plsa1, const log_lsa *plsa2)
void log_sysop_end_logical_undo(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, const VFID *vfid, int undo_size, const char *undo_data)
#define er_log_debug(...)
static void log_tran_do_postpone(THREAD_ENTRY *thread_p, LOG_TDES *tdes)
LOG_ZIP * log_zip_alloc(LOG_ZIP_SIZE_T size)
struct lk_acqobj_lock LK_ACQOBJ_LOCK
static void log_hexa_dump(FILE *out_fp, int length, void *data)
#define MSGCAT_LOG_LOGINFO_ACTIVE
tx_transient_class_registry m_modified_classes
#define pgbuf_invalidate_all(thread_p, volid)
void logpb_flush_header(THREAD_ENTRY *thread_p)
void _er_log_debug(const char *file_name, const int line_no, const char *fmt,...)
static void log_dump_data(THREAD_ENTRY *thread_p, FILE *out_fp, int length, LOG_LSA *log_lsa, LOG_PAGE *log_page_p, void(*dumpfun)(FILE *fp, int, void *), LOG_ZIP *log_dump_ptr)
#define ER_ONLY_IN_STANDALONE
void log_wakeup_log_flush_daemon()
void logpb_set_dirty(THREAD_ENTRY *thread_p, LOG_PAGE *log_pgptr)
bool has_class(const OID &class_oid) const
int fileio_mount(THREAD_ENTRY *thread_p, const char *db_full_name_p, const char *vol_label_p, VOLID vol_id, int lock_wait, bool is_do_sync)
void add_lsa(const log_lsa &lsa)
int xlogtb_reset_wait_msecs(THREAD_ENTRY *thread_p, int wait_msecs)
STATIC_INLINE void log_sysop_end_begin(THREAD_ENTRY *thread_p, int *tran_index_out, LOG_TDES **tdes_out) __attribute__((ALWAYS_INLINE))
#define LOG_TDES_LAST_SYSOP_PARENT_LSA(tdes)
void log_do_postpone(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_LSA *start_postpone_lsa)
#define VFID_ISNULL(vfid_ptr)
void describe_value(const db_value *value)
STATIC_INLINE bool vacuum_is_process_log_for_vacuum(THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
LOG_LSA tail_topresult_lsa
void file_tempcache_drop_tran_temp_files(THREAD_ENTRY *thread_p)
const char * log_to_string(LOG_RECTYPE type)
#define TR_TABLE_CS_ENTER(thread_p)
void log_set_db_restore_time(THREAD_ENTRY *thread_p, INT64 db_restore_time)
static void log_append_repl_info_and_commit_log(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_LSA *commit_lsa)
void log_append_redo_data2(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, const VFID *vfid, PAGE_PTR pgptr, PGLENGTH offset, int length, const void *data)
#define LOG_IS_SYSTEM_OP_STARTED(tdes)
static LOG_PAGE * log_dump_record_ha_server_state(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *log_lsa, LOG_PAGE *log_page_p)
int db_make_string(DB_VALUE *value, DB_CONST_C_CHAR str)
void LOG_RESET_PREV_LSA(const LOG_LSA *lsa)
LOG_LSA prior_lsa_next_record(THREAD_ENTRY *thread_p, LOG_PRIOR_NODE *node, log_tdes *tdes)
STATIC_INLINE void log_sysop_get_tran_index_and_tdes(THREAD_ENTRY *thread_p, int *tran_index_out, LOG_TDES **tdes_out) __attribute__((ALWAYS_INLINE))
#define ER_LOG_CORRUPTED_DB_DUE_NOLOGGING
manager * get_manager(void)
int disk_set_creation(THREAD_ENTRY *thread_p, INT16 volid, const char *new_vol_fullname, const INT64 *new_dbcreation, const LOG_LSA *new_chkptlsa, bool logchange, DISK_FLUSH_TYPE flush)
static LOG_PAGE * log_dump_record_commit_postpone(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p)
static LOG_PAGE * log_dump_record_redo(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p, LOG_ZIP *log_zip_p)
static void destroy_system_transactions()
static void log_append_repl_info_with_lock(THREAD_ENTRY *thread_p, LOG_TDES *tdes, bool is_commit)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
void lock_unlock_all(THREAD_ENTRY *thread_p)
char * xdisk_get_fullname(THREAD_ENTRY *thread_p, VOLID volid, char *vol_fullname)
void css_push_external_task(CSS_CONN_ENTRY *conn, cubthread::entry_task *task)
void spage_free_saved_spaces(THREAD_ENTRY *thread_p, void *first_save_entry)
void logpb_flush_pages_direct(THREAD_ENTRY *thread_p)
#define csect_check_own(a, b)
TRAN_STATE log_2pc_commit(THREAD_ENTRY *thread_p, log_tdes *tdes, LOG_2PC_EXECUTE execute_2pc_type, bool *decision)
int log_read_sysop_start_postpone(THREAD_ENTRY *thread_p, LOG_LSA *log_lsa, LOG_PAGE *log_page, bool with_undo_data, LOG_REC_SYSOP_START_POSTPONE *sysop_start_postpone, int *undo_buffer_size, char **undo_buffer, int *undo_size, char **undo_data)
void LOG_CS_ENTER_READ_MODE(THREAD_ENTRY *thread_p)
char * fileio_get_volume_label(VOLID vol_id, bool is_peek)
LOG_REC_SYSOP_END sysop_end
#define ER_HA_REPL_DELAY_DETECTED
TRAN_STATE log_complete_for_2pc(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_RECTYPE iscommitted, LOG_GETNEWTRID get_newtrid)
const VOLID LOG_DBLOG_ARCHIVE_VOLID
int log_rv_copy_char(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
void log_skip_logging(THREAD_ENTRY *thread_p, LOG_DATA_ADDR *addr)
bool log_is_logged_since_restart(const LOG_LSA *lsa_ptr)
static void log_repl_schema_dump(FILE *out_fp, int length, void *data)
clock::time_point time_point
#define ER_LK_PAGE_TIMEOUT
const VOLID LOG_DBFIRST_VOLID
char log_Name_info[PATH_MAX]
void log_final(THREAD_ENTRY *thread_p)
int prm_get_integer_value(PARAM_ID prm_id)
int logpb_fetch_start_append_page(THREAD_ENTRY *thread_p)
static void log_sysop_do_postpone(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_REC_SYSOP_END *sysop_end, int data_size, const char *data)
LOG_LSA * pgbuf_get_lsa(PAGE_PTR pgptr)
LOG_LOGGING_STAT log_Stat
#define LOG_ISTRAN_ACTIVE(tdes)
std::chrono::high_resolution_clock clock
#define LOG_NEED_TO_SET_LSA(RCVI, PGPTR)
void * logtb_realloc_topops_stack(LOG_TDES *tdes, int num_elms)
#define ER_OUT_OF_VIRTUAL_MEMORY
void LOG_CS_EXIT(THREAD_ENTRY *thread_p)
#define LOG_HAS_LOGGING_BEEN_IGNORED()
void log_append_undo_data(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, int length, const void *data)
void LOG_RESET_APPEND_LSA(const LOG_LSA *lsa)
LOG_PAGEID current_page_id
void logpb_initialize_logging_statistics(void)
LOG_LSA prior_lsa_next_record_with_lock(THREAD_ENTRY *thread_p, LOG_PRIOR_NODE *node, log_tdes *tdes)
int logpb_initialize_pool(THREAD_ENTRY *thread_p)
void fpcache_remove_by_class(THREAD_ENTRY *thread_p, const OID *class_oid)
void log_wakeup_checkpoint_daemon()
bool LSA_LE(const log_lsa *plsa1, const log_lsa *plsa2)
void lsa_to_string(char *buf, int buf_size, const log_lsa *lsa)
LOG_LSA final_restored_lsa
void log_append_redo_recdes2(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, const VFID *vfid, PAGE_PTR pgptr, PGLENGTH offset, const RECDES *recdes)
#define LOG_TDES_LAST_SYSOP_POSP_LSA(tdes)
bool log_is_log_flush_daemon_available()
const char * css_ha_server_state_string(HA_SERVER_STATE state)
void log_sysop_end_recovery_postpone(THREAD_ENTRY *thread_p, LOG_REC_SYSOP_END *log_record, int data_size, const char *data)
static int log_create_internal(THREAD_ENTRY *thread_p, const char *db_fullname, const char *logpath, const char *prefix_logname, DKNPAGES npages, INT64 *db_creation)
#define DISK_SECTS_NPAGES(nsects)
int file_get_tde_algorithm(THREAD_ENTRY *thread_p, const VFID *vfid, PGBUF_LATCH_CONDITION fix_head_cond, TDE_ALGORITHM *tde_algo)
LOG_PAGEID last_sync_pageid
int prior_set_tde_encrypted(log_prior_node *node, LOG_RCVINDEX recvindex)
LOG_PAGEID logical_pageid
void logpb_decache_archive_info(THREAD_ENTRY *thread_p)
void log_wakeup_remove_log_archive_daemon()
#define TRAN_LOCK_INFINITE_WAIT
void db_localdatetime(time_t *epoch_time, DB_DATETIME *datetime)
bool btree_is_btid_online_index(THREAD_ENTRY *thread_p, OID *class_oid, BTID *btid)
multi_index_unique_stats m_multiupd_stats
void log_append_compensate_with_undo_nxlsa(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, const VPID *vpid, PGLENGTH offset, PAGE_PTR pgptr, int length, const void *data, LOG_TDES *tdes, const LOG_LSA *undo_nxlsa)
enum log_rectype LOG_RECTYPE
void log_get_checkpoint_interval(bool &is_timed_wait, cubthread::delta_time &period)
void log_restart_emergency(THREAD_ENTRY *thread_p, const char *db_fullname, const char *logpath, const char *prefix_logname)
int logtb_update_global_unique_stats_by_delta(THREAD_ENTRY *thread_p, BTID *btid, int oid_delta, int null_delta, int key_delta, bool log)
LOG_REC_MVCC_UNDO mvcc_undo
int catcls_get_apply_info_log_record_time(THREAD_ENTRY *thread_p, time_t *log_record_time)
SCAN_CODE log_archive_log_header_next_scan(THREAD_ENTRY *thread_p, int cursor, DB_VALUE **out_values, int out_cnt, void *ptr)
#define FI_TEST_ARG(th, code, arg, state)
void log_append_compensate(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, const VPID *vpid, PGLENGTH offset, PAGE_PTR pgptr, int length, const void *data, LOG_TDES *tdes)
float log_get_db_compatibility(void)
LOG_LSA prev_mvcc_op_log_lsa
#define RCV_IS_LOGICAL_RUN_POSTPONE_MANUAL(idx)
bool css_is_shutdown_timeout_expired(void)
int num_prepared_loose_end_indices
LOG_LSA * log_startof_nxrec(THREAD_ENTRY *thread_p, LOG_LSA *lsa, bool canuse_forwaddr)
int sysprm_reload_and_init(const char *db_name, const char *conf_file)
TDE_ALGORITHM pgbuf_get_tde_algorithm(PAGE_PTR pgptr)
void fileio_dismount(THREAD_ENTRY *thread_p, int vol_fd)
bool rel_is_log_compatible(const char *writer_rel_str, const char *reader_rel_str)
TRAN_STATE log_abort_partial(THREAD_ENTRY *thread_p, const char *savepoint_name, LOG_LSA *savept_lsa)
LOG_PAGE * logpb_create_header_page(THREAD_ENTRY *thread_p)
LOG_LSA * log_get_final_restored_lsa(void)
const char * rel_name(void)
int fileio_synchronize_all(THREAD_ENTRY *thread_p, bool is_include)
static LOG_PAGE * log_dump_record_2pc_start(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p)
LOG_LSA * log_get_parent_lsa_system_op(THREAD_ENTRY *thread_p, LOG_LSA *parent_lsa)
#define MSGCAT_LOG_FINISH_ABORT
DKNPAGES chkpt_every_npages
#define LOG_ISCHECKPOINT_TIME()
static void log_append_sysop_end(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_REC_SYSOP_END *sysop_end, int data_size, const char *data)
int log_create(THREAD_ENTRY *thread_p, const char *db_fullname, const char *logpath, const char *prefix_logname, DKNPAGES npages)
#define LOG_ISTRAN_ABORTED(tdes)
static LOG_PAGE * log_dump_record_postpone(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p)
#define strncpy_bufsize(buf, str)
void log_append_undo_crumbs(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, int num_crumbs, const LOG_CRUMB *crumbs)
int log_rv_outside_noop_redo(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
int(* redofun)(THREAD_ENTRY *thread_p, LOG_RCV *logrcv)
void log_stop_ha_delay_registration()
bool log_is_in_crash_recovery(void)
void log_append_run_postpone(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, const VPID *rcv_vpid, int length, const void *data, const LOG_LSA *ref_lsa)
void logpb_initialize_arv_page_info_table(void)
#define vacuum_er_log(er_log_level, msg,...)
int logtb_define_trantable_log_latch(THREAD_ENTRY *thread_p, int num_expected_tran_indices)
bool LSA_ISNULL(const log_lsa *lsa_ptr)
void log_append_undoredo_recdes(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, const RECDES *undo_recdes, const RECDES *redo_recdes)
void log_append_undoredo_recdes2(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, const VFID *vfid, PAGE_PTR pgptr, PGLENGTH offset, const RECDES *undo_recdes, const RECDES *redo_recdes)
bool do_postpone(cubthread::entry &thread_ref, const log_lsa &start_postpone_lsa)
struct log_info_chkpt_trans LOG_INFO_CHKPT_TRANS
int btree_get_class_oid_of_unique_btid(THREAD_ENTRY *thread_p, BTID *btid, OID *class_oid)
int log_get_num_pages_for_creation(int db_npages)
void log_2pc_dump_participants(FILE *fp, int block_length, void *block_particps_ids)
int logtb_assign_tran_index(THREAD_ENTRY *thread_p, TRANID trid, TRAN_STATE state, const BOOT_CLIENT_CREDENTIAL *client_credential, TRAN_STATE *current_state, int wait_msecs, TRAN_ISOLATION isolation)
static int log_run_postpone_op(THREAD_ENTRY *thread_p, LOG_LSA *log_lsa, LOG_PAGE *log_pgptr)
static void log_append_commit_postpone(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_LSA *start_postpone_lsa)
#define db_private_free_and_init(thrd, ptr)
static void log_append_abort_log(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_LSA *abort_lsa)
#define pthread_mutex_lock(a)
void log_append_undoredo_data(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, int undo_length, int redo_length, const void *undo_data, const void *redo_data)
#define pgbuf_fix(thread_p, vpid, fetch_mode, requestmode, condition)
static void log_append_compensate_internal(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, const VPID *vpid, PGLENGTH offset, PAGE_PTR pgptr, int length, const void *data, LOG_TDES *tdes, const LOG_LSA *undo_nxlsa)
const char * get_buffer() const
void log_append_undo_recdes(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, const RECDES *recdes)
void css_unset_ha_repl_delayed(void)
char * or_unpack_int(char *ptr, int *number)
int logpb_read_page_from_file(THREAD_ENTRY *thread_p, LOG_PAGEID pageid, LOG_CS_ACCESS_MODE access_mode, LOG_PAGE *log_pgptr)
LOG_UNIQUE_STATS tran_stats
#define db_private_alloc(thrd, size)
#define LOG_IS_MVCC_OPERATION(rcvindex)
STATIC_INLINE void log_sysop_end_random_exit(THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
char log_Name_bkupinfo[PATH_MAX]
static LOG_PAGE * log_dump_record_mvcc_undoredo(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p, LOG_ZIP *log_zip_p)
LOG_PRIOR_LSA_INFO prior_info
int logpb_remove_archive_logs_exceed_limit(THREAD_ENTRY *thread_p, int max_count)
#define LOG_SET_CURRENT_TRAN_INDEX(thrd, index)
char log_Name_bg_archive[PATH_MAX]
static void log_append_sysop_start_postpone(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_REC_SYSOP_START_POSTPONE *sysop_start_postpone, int data_size, const char *data)
int pgbuf_flush_all(THREAD_ENTRY *thread_p, VOLID volid)
void er_set_with_oserror(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
#define ER_LOG_UNKNOWN_TRANINDEX
int pr_clear_value(DB_VALUE *value)
#define MSGCAT_CATALOG_CUBRID
void log_append_ha_server_state(THREAD_ENTRY *thread_p, int state)
int log_active_log_header_end_scan(THREAD_ENTRY *thread_p, void **ptr)
PGLENGTH logpb_find_header_parameters(THREAD_ENTRY *thread_p, const bool force_read_log_header, const char *db_fullname, const char *logpath, const char *prefix_logname, PGLENGTH *io_page_size, PGLENGTH *log_page_size, INT64 *db_creation, float *db_compatibility, int *db_charset)
char * or_unpack_mem_value(char *buf, DB_VALUE *value)
static LOG_PAGE * log_dump_record_mvcc_redo(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p, LOG_ZIP *log_zip_p)
LOG_REC_UNDOREDO undoredo
const LOG_LSA * pgbuf_set_lsa(THREAD_ENTRY *thread_p, PAGE_PTR pgptr, const LOG_LSA *lsa_ptr)
void log_sysop_abort(THREAD_ENTRY *thread_p)
#define ER_LOG_MISSING_COMPENSATING_RECORD
struct log_repl * repl_records
static void log_change_tran_as_completed(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_RECTYPE iscommitted, LOG_LSA *lsa)
LOG_LSA prv_topresult_lsa
bool LSA_GE(const log_lsa *plsa1, const log_lsa *plsa2)
static void log_find_end_log(THREAD_ENTRY *thread_p, LOG_LSA *end_lsa)
std::function< void(Context &)> exec_func_type
#define LOG_FLUSH_LOGGING_HAS_BEEN_SKIPPED(thread_p)
SCAN_CODE log_active_log_header_next_scan(THREAD_ENTRY *thread_p, int cursor, DB_VALUE **out_values, int out_cnt, void *ptr)
#define LOG_ISTRAN_2PC_PREPARE(tdes)
MVCCID logtb_get_current_mvccid(THREAD_ENTRY *thread_p)
LOG_PAGEID run_nxchkpt_atpageid
#define RCV_IS_BTREE_LOGICAL_LOG(idx)
const char * envvar_get(const char *name)
static LOG_PAGE * log_dump_record_transaction_finish(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p)
bool LOG_CS_OWN_WRITE_MODE(THREAD_ENTRY *thread_p)
static void error(const char *msg)
void log_append_postpone(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, int length, const void *data)
#define VPID_ISNULL(vpid_ptr)
static LOG_PAGE * log_dump_record_replication(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p)
REL_COMPATIBILITY rel_get_disk_compatible(float db_level, REL_FIXUP_FUNCTION **fixups)
void log_append_undo_recdes2(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, const VFID *vfid, PAGE_PTR pgptr, PGLENGTH offset, const RECDES *recdes)
static LOG_PAGE * log_dump_record_save_point(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p)
STATIC_INLINE void perfmon_inc_stat(THREAD_ENTRY *thread_p, PERF_STAT_ID psid) __attribute__((ALWAYS_INLINE))
std::chrono::system_clock::duration delta_time
LOG_TDES * LOG_FIND_CURRENT_TDES(THREAD_ENTRY *thread_p=NULL)
void logtb_free_tran_index(THREAD_ENTRY *thread_p, int tran_index)
bool log_check_system_op_is_started(THREAD_ENTRY *thread_p)
#define pgbuf_fix_if_not_deallocated(thread_p, vpid, latch_mode, latch_condition, page)
#define LOG_FIND_THREAD_TRAN_INDEX(thrd)
#define LOG_READ_ALIGN(thread_p, lsa, log_pgptr)
#define ER_HA_REPL_DELAY_RESOLVED
void destroy_daemon(daemon *&daemon_arg)
static LOG_PAGE * log_dump_record(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_RECTYPE record_type, LOG_LSA *lsa_p, LOG_PAGE *log_page_p, LOG_ZIP *log_zip_p)
const char * logwr_log_ha_filestat_to_string(enum LOG_HA_FILESTAT val)
bool log_unzip(LOG_ZIP *log_unzip, LOG_ZIP_SIZE_T length, void *data)
int log_add_to_modified_class_list(THREAD_ENTRY *thread_p, const char *classname, const OID *class_oid)
DKNPAGES fileio_get_number_of_volume_pages(int vol_fd, size_t page_size)
TRAN_STATE log_complete(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_RECTYPE iscommitted, LOG_GETNEWTRID get_newtrid, LOG_WRITE_EOT_LOG wrote_eot_log)
static void log_append_donetime_internal(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_LSA *eot_lsa, LOG_RECTYPE iscommitted, enum LOG_PRIOR_LSA_LOCK with_lock)
static void log_sysop_commit_internal(THREAD_ENTRY *thread_p, LOG_REC_SYSOP_END *log_record, int data_size, const char *data, bool is_rv_finish_postpone)
BACKGROUND_ARCHIVING_INFO bg_archive_info
#define csect_enter_as_reader(a, b, c)
void log_zip_free(LOG_ZIP *log_zip)
static bool log_can_skip_undo_logging(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, const LOG_TDES *tdes, LOG_DATA_ADDR *addr)
#define free_and_init(ptr)
#define LOG_ISRESTARTED()
void LSA_SET_NULL(log_lsa *lsa_ptr)
int csect_demote(THREAD_ENTRY *thread_p, int cs_index, int wait_secs)
STATIC_INLINE bool vacuum_worker_state_is_execute(THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
static bool log_No_logging
const VOLID LOG_DBLOG_BG_ARCHIVE_VOLID
void logpb_flush_pages(THREAD_ENTRY *thread_p, LOG_LSA *flush_lsa)
void logpb_copy_from_log(THREAD_ENTRY *thread_p, char *area, int length, LOG_LSA *log_lsa, LOG_PAGE *log_pgptr)
int db_make_string_copy(DB_VALUE *value, DB_CONST_C_CHAR str)
std::function< void(bool &, delta_time &)> period_function
enum log_2pc_execute LOG_2PC_EXECUTE
bool LSA_GT(const log_lsa *plsa1, const log_lsa *plsa2)
static void log_dump_checkpoint_topops(FILE *out_fp, int length, void *data)
bool logpb_is_pool_initialized(void)
void log_append_empty_record(THREAD_ENTRY *thread_p, LOG_RECTYPE logrec_type, LOG_DATA_ADDR *addr)
static void log_append_repl_info_internal(THREAD_ENTRY *thread_p, LOG_TDES *tdes, bool is_commit, int with_lock)
static bool log_can_skip_redo_logging(LOG_RCVINDEX rcvindex, const LOG_TDES *ignore_tdes, LOG_DATA_ADDR *addr)
void log_rv_dump_char(FILE *fp, int length, void *data)
bool logpb_is_page_in_archive(LOG_PAGEID pageid)
bool prm_get_bool_value(PARAM_ID prm_id)
#define ZIP_CHECK(length)
bool css_is_ha_repl_delayed(void)
#define ER_LOG_INCOMPATIBLE_DATABASE
HA_SERVER_STATE css_ha_server_state(void)
static LOG_PAGE * log_dump_record_2pc_acknowledgement(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p)
#define ER_LOG_NOTACTIVE_TOPOPS
LOG_LSA sysop_start_postpone_lsa
void log_sysop_attach_to_outer(THREAD_ENTRY *thread_p)
int log_recreate(THREAD_ENTRY *thread_p, const char *db_fullname, const char *logpath, const char *prefix_logname, DKNPAGES log_npages, FILE *out_fp)
int log_archive_log_header_end_scan(THREAD_ENTRY *thread_p, void **ptr)
void logpb_dump_checkpoint_trans(FILE *out_fp, int length, void *data)
void log_sysop_commit(THREAD_ENTRY *thread_p)
void reset_transaction_lowest_active(int tran_index)
void log_recovery(THREAD_ENTRY *thread_p, int ismedia_crash, time_t *stopat)
static void log_rollback(THREAD_ENTRY *thread_p, LOG_TDES *tdes, const LOG_LSA *upto_lsa_ptr)
TRAN_STATE log_abort_local(THREAD_ENTRY *thread_p, LOG_TDES *tdes, bool is_local_tran)
int fileio_format(THREAD_ENTRY *thread_p, const char *db_full_name_p, const char *vol_label_p, VOLID vol_id, DKNPAGES npages, bool is_sweep_clean, bool is_do_lock, bool is_do_sync, size_t page_size, int kbytes_to_be_written_per_sec, bool reuse_file)
#define pthread_mutex_unlock(a)
#define DB_VALUE_TYPE(value)
void log_append_redo_crumbs(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, int num_crumbs, const LOG_CRUMB *crumbs)
int log_active_log_header_start_scan(THREAD_ENTRY *thread_p, int show_type, DB_VALUE **arg_values, int arg_cnt, void **ptr)
int db_make_null(DB_VALUE *value)
char * msgcat_message(int cat_id, int set_id, int msg_id)
#define ER_LOG_DOESNT_CORRESPOND_TO_DATABASE
void logpb_fetch_header(THREAD_ENTRY *thread_p, LOG_HEADER *hdr)
void decache_heap_repr(const LOG_LSA &downto_lsa)
static int log_undo_rec_restartable(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, LOG_RCV *rcv)
LOG_LSA * log_get_crash_point_lsa(void)
void log_abort_all_active_transaction(THREAD_ENTRY *thread_p)
bool log_is_in_crash_recovery_and_not_yet_completes_redo(void)
void log_get_log_group_commit_interval(bool &is_timed_wait, cubthread::delta_time &period)
STATIC_INLINE void perfmon_set_stat(THREAD_ENTRY *thread_p, PERF_STAT_ID psid, int statval, bool check_watchers) __attribute__((ALWAYS_INLINE))
LOG_TOPOPS_ADDRESSES * stack
void map(const map_func_type &func) const
int log_dump_log_info(const char *logname_info, bool also_stdout, const char *fmt,...)
static void log_rollback_record(THREAD_ENTRY *thread_p, LOG_LSA *log_lsa, LOG_PAGE *log_page_p, LOG_RCVINDEX rcvindex, VPID *rcv_vpid, LOG_RCV *rcv, LOG_TDES *tdes, LOG_ZIP *log_unzip_ptr)
enum log_sysop_end_type LOG_SYSOP_END_TYPE
static void log_dump_record_header_to_string(LOG_RECORD_HEADER *log, char *buf, size_t len)
static LOG_PAGE * log_dump_record_sysop_end_internal(THREAD_ENTRY *thread_p, LOG_REC_SYSOP_END *sysop_end, LOG_LSA *log_lsa, LOG_PAGE *log_page_p, LOG_ZIP *log_zip_p, FILE *out_fp)
int logtb_get_new_tran_id(THREAD_ENTRY *thread_p, LOG_TDES *tdes)
void add_redo_data(const log_prior_node &node)
static void log_dump_header(FILE *out_fp, LOG_HEADER *log_header_p)
int db_make_int(DB_VALUE *value, const int num)
#define RCV_IS_LOGICAL_COMPENSATE_MANUAL(idx)
bool log_is_tran_in_system_op(THREAD_ENTRY *thread_p)
void log_sysop_end_logical_run_postpone(THREAD_ENTRY *thread_p, LOG_LSA *posp_lsa)
#define ER_LOG_INCOMPATIBLE_PREFIX_NAME
void logtb_undefine_trantable(THREAD_ENTRY *thread_p)
#define VOLATILE_ACCESS(v, t)
int disk_get_creation_time(THREAD_ENTRY *thread_p, INT16 volid, INT64 *db_creation)
enum ha_server_state HA_SERVER_STATE
LOG_PAGEID logpb_checkpoint(THREAD_ENTRY *thread_p)
void logpb_finalize_pool(THREAD_ENTRY *thread_p)
bool log_does_allow_replication(void)
#define ER_LOG_RECOVER_ON_OLD_RELEASE
static LOG_PAGE * log_dump_record_checkpoint(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p)
#define ER_LOG_NONAME_SAVEPOINT
STATIC_INLINE void log_sysop_end_unstack(THREAD_ENTRY *thread_p, LOG_TDES *tdes) __attribute__((ALWAYS_INLINE))
TRAN_STATE log_commit(THREAD_ENTRY *thread_p, int tran_index, bool retain_lock)
LOG_LSA * log_append_savepoint(THREAD_ENTRY *thread_p, const char *savept_name)
static void log_append_commit_log(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_LSA *commit_lsa)
static LOG_PAGE * log_dump_record_compensate(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p)
daemon * create_daemon(const looper &looper_arg, entry_task *exec_p, const char *daemon_name="", entry_manager *context_manager=NULL)
const char * rel_release_string(void)
#define ER_LOG_CANNOT_ADD_SAVEPOINT
char * logpb_backup_level_info_to_string(char *buf, int buf_size, const LOG_HDR_BKUP_LEVEL_INFO *info)
#define db_private_realloc(thrd, ptr, size)
static void log_repl_data_dump(FILE *out_fp, int length, void *data)
#define TR_TABLE_CS_EXIT(thread_p)
void logpb_create_log_info(const char *logname_info, const char *db_fullname)
int log_get_next_nested_top(THREAD_ENTRY *thread_p, LOG_TDES *tdes, LOG_LSA *start_postpone_lsa, LOG_TOPOP_RANGE **out_nxtop_range_stack)
callable_task< entry > entry_callable_task
int log_get_db_start_parameters(INT64 *db_creation, LOG_LSA *chkpt_lsa)
#define MSGCAT_LOG_FINISH_COMMIT
int fileio_open(const char *vol_label_p, int flags, int mode)
LOG_LSA atomic_sysop_start_lsa
SCAN_CODE log_get_undo_record(THREAD_ENTRY *thread_p, LOG_PAGE *log_page_p, LOG_LSA process_lsa, RECDES *recdes)
void log_set_ha_promotion_time(THREAD_ENTRY *thread_p, INT64 ha_promotion_time)
#define LOG_ISUNSAFE_TO_SKIP_RCVINDEX(RCVI)
DB_CONST_C_CHAR db_get_string(const DB_VALUE *value)
#define ER_LOG_COMPILATION_RELEASE
int db_set_page_size(PGLENGTH io_page_size, PGLENGTH log_page_size)
bool log_is_class_being_modified(THREAD_ENTRY *thread_p, const OID *class_oid)
bool fileio_map_mounted(THREAD_ENTRY *thread_p, bool(*fun)(THREAD_ENTRY *thread_p, VOLID vol_id, void *args), void *args)
void log_append_redo_recdes(THREAD_ENTRY *thread_p, LOG_RCVINDEX rcvindex, LOG_DATA_ADDR *addr, const RECDES *recdes)
STATIC_INLINE VACUUM_WORKER_STATE vacuum_get_worker_state(THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
const char * log_sysop_end_type_string(LOG_SYSOP_END_TYPE end_type)
#define LOG_READ_ADVANCE_WHEN_DOESNT_FIT(thread_p, length, lsa, log_pgptr)
struct log_rec_sysop_end::@180::@182 run_postpone
static LOG_PAGE * log_dump_record_undoredo(THREAD_ENTRY *thread_p, FILE *out_fp, LOG_LSA *lsa_p, LOG_PAGE *log_page_p, LOG_ZIP *log_zip_p)
int fileio_get_volume_descriptor(VOLID vol_id)