CUBRID Engine  latest
vacuum.c File Reference
#include "system.h"
#include "vacuum.h"
#include "base_flag.hpp"
#include "boot_sr.h"
#include "btree.h"
#include "dbtype.h"
#include "heap_file.h"
#include "lockfree_circular_queue.hpp"
#include "log_append.hpp"
#include "log_compress.h"
#include "log_lsa.hpp"
#include "log_impl.h"
#include "mvcc.h"
#include "mvcc_table.hpp"
#include "object_representation.h"
#include "object_representation_sr.h"
#include "overflow_file.h"
#include "page_buffer.h"
#include "perf_monitor.h"
#include "resource_shared_pool.hpp"
#include "thread_entry_task.hpp"
#include "thread_looper.hpp"
#include "thread_manager.hpp"
#include "util_func.h"
#include <atomic>
#include <condition_variable>
#include <mutex>
#include <stack>
#include <cstring>

Go to the source code of this file.

Classes

struct  vacuum_data_entry
 
struct  vacuum_data_page
 
class  vacuum_job_cursor
 
class  vacuum_shutdown_sequence
 
struct  vacuum_data
 
struct  vacuum_data_load
 
struct  vacuum_heap_helper
 
struct  vacuum_dropped_file
 
struct  vacuum_dropped_files_page
 
struct  vacuum_track_dropped_files
 
struct  vacuum_dropped_files_rcv_data
 
class  vacuum_master_context_manager
 
class  vacuum_master_task
 
class  vacuum_worker_context_manager
 
class  vacuum_worker_task
 

Macros

#define MAX_SLOTS_IN_PAGE   (IO_MAX_PAGE_SIZE / sizeof (SPAGE_SLOT))
 
#define VACUUM_STATS_CACHE_SIZE   100
 
#define VACUUM_FIRST_LOG_PAGEID_IN_BLOCK(blockid)   ((blockid) * vacuum_Data.log_block_npages)
 
#define VACUUM_LAST_LOG_PAGEID_IN_BLOCK(blockid)   (VACUUM_FIRST_LOG_PAGEID_IN_BLOCK (blockid + 1) - 1)
 
#define VACUUM_DATA_ENTRY_FLAG_MASK   0xE000000000000000
 
#define VACUUM_DATA_ENTRY_BLOCKID_MASK   0x1FFFFFFFFFFFFFFF
 
#define VACUUM_BLOCK_STATUS_MASK   0xC000000000000000
 
#define VACUUM_BLOCK_STATUS_VACUUMED   0x8000000000000000
 
#define VACUUM_BLOCK_STATUS_IN_PROGRESS_VACUUM   0x4000000000000000
 
#define VACUUM_BLOCK_STATUS_AVAILABLE   0x0000000000000000
 
#define VACUUM_BLOCK_FLAG_INTERRUPTED   0x2000000000000000
 
#define VACUUM_BLOCKID_WITHOUT_FLAGS(blockid)   ((blockid) & VACUUM_DATA_ENTRY_BLOCKID_MASK)
 
#define VACUUM_BLOCKID_GET_FLAGS(blockid)   ((blockid) & VACUUM_DATA_ENTRY_FLAG_MASK)
 
#define VACUUM_BLOCK_STATUS(blockid)   ((blockid) & VACUUM_BLOCK_STATUS_MASK)
 
#define VACUUM_BLOCK_STATUS_IS_VACUUMED(blockid)   (VACUUM_BLOCK_STATUS (blockid) == VACUUM_BLOCK_STATUS_VACUUMED)
 
#define VACUUM_BLOCK_STATUS_IS_IN_PROGRESS(blockid)   (VACUUM_BLOCK_STATUS (blockid) == VACUUM_BLOCK_STATUS_IN_PROGRESS_VACUUM)
 
#define VACUUM_BLOCK_STATUS_IS_AVAILABLE(blockid)   (VACUUM_BLOCK_STATUS (blockid) == VACUUM_BLOCK_STATUS_AVAILABLE)
 
#define VACUUM_BLOCK_STATUS_SET_VACUUMED(blockid)   ((blockid) = ((blockid) & ~VACUUM_BLOCK_STATUS_MASK) | VACUUM_BLOCK_STATUS_VACUUMED)
 
#define VACUUM_BLOCK_STATUS_SET_IN_PROGRESS(blockid)   ((blockid) = ((blockid) & ~VACUUM_BLOCK_STATUS_MASK) | VACUUM_BLOCK_STATUS_IN_PROGRESS_VACUUM)
 
#define VACUUM_BLOCK_STATUS_SET_AVAILABLE(blockid)   ((blockid) = ((blockid) & ~VACUUM_BLOCK_STATUS_MASK) | VACUUM_BLOCK_STATUS_AVAILABLE)
 
#define VACUUM_BLOCK_IS_INTERRUPTED(blockid)   (((blockid) & VACUUM_BLOCK_FLAG_INTERRUPTED) != 0)
 
#define VACUUM_BLOCK_SET_INTERRUPTED(blockid)   ((blockid) |= VACUUM_BLOCK_FLAG_INTERRUPTED)
 
#define VACUUM_BLOCK_CLEAR_INTERRUPTED(blockid)   ((blockid) &= ~VACUUM_BLOCK_FLAG_INTERRUPTED)
 
#define VACUUM_DATA_PAGE_HEADER_SIZE   (offsetof (VACUUM_DATA_PAGE, data))
 
#define vacuum_fix_data_page(thread_p, vpidp)
 
#define vacuum_unfix_data_page(thread_p, data_page)
 
#define vacuum_set_dirty_data_page(thread_p, data_page, free)
 
#define vacuum_unfix_first_and_last_data_page(thread_p)
 
#define vacuum_job_cursor_print_format   "vacuum_job_cursor(%lld, %d|%d|%d)"
 
#define vacuum_job_cursor_print_args(cursor)   (long long int) (cursor).get_blockid (), VPID_AS_ARGS (&(cursor).get_page_vpid ()), (int) (cursor).get_index ()
 
#define VACUUM_BLOCK_DATA_BUFFER_CAPACITY   1024
 
#define VACUUM_PREFETCH_LOG_BLOCK_BUFFER_PAGES   ((size_t) (1 + vacuum_Data.log_block_npages))
 
#define VACUUM_FINISHED_JOB_QUEUE_CAPACITY   2048
 
#define VACUUM_LOG_BLOCK_BUFFER_INVALID   (-1)
 
#define VACUUM_WORKER_INDEX_TO_TRANID(index)   (-index + LOG_LAST_VACUUM_WORKER_TRANID)
 
#define VACUUM_WORKER_TRANID_TO_INDEX(trid)   (-trid + LOG_LAST_VACUUM_WORKER_TRANID)
 
#define VACUUM_PERF_HEAP_START(thread_p, helper)   PERF_UTIME_TRACKER_START (thread_p, &(helper)->time_track);
 
#define VACUUM_PERF_HEAP_TRACK_PREPARE(thread_p, helper)
 
#define VACUUM_PERF_HEAP_TRACK_EXECUTE(thread_p, helper)
 
#define VACUUM_PERF_HEAP_TRACK_LOGGING(thread_p, helper)
 
#define VACUUM_LOG_VACUUM_HEAP_REUSABLE   0x8000
 
#define VACUUM_LOG_VACUUM_HEAP_ALL_VACUUMED   0x4000
 
#define VACUUM_LOG_VACUUM_HEAP_MASK   0xC000
 
#define VACUUM_DEFAULT_HEAP_OBJECT_BUFFER_SIZE   4000
 
#define VACUUM_DROPPED_FILES_PAGE_HEADER_SIZE   (offsetof (VACUUM_DROPPED_FILES_PAGE, dropped_files))
 
#define VACUUM_DROPPED_FILES_PAGE_CAPACITY
 
#define VACUUM_DROPPED_FILES_MAX_PAGE_CAPACITY
 
#define VACUUM_DROPPED_FILE_FLAG_DUPLICATE   0x8000
 
#define vacuum_fix_dropped_entries_page(thread_p, vpidp, latch)
 
#define vacuum_unfix_dropped_entries_page(thread_p, dropped_page)
 
#define vacuum_set_dirty_dropped_entries_page(thread_p, dropped_page, free)
 
#define VACUUM_TRACK_DROPPED_FILES_SIZE   (DB_PAGESIZE + sizeof (VACUUM_TRACK_DROPPED_FILES *))
 
#define VACUUM_LOG_DATA_ENTRY_MSG(name)   "name = {blockid = %lld, flags = %lld, start_lsa = %lld|%d, oldest_visible_mvccid=%llu, newest_mvccid=%llu }"
 
#define VACUUM_LOG_DATA_ENTRY_AS_ARGS(data)
 
#define VACUUM_VERIFY_VACUUM_DATA(thread_p)   vacuum_verify_vacuum_data_debug (thread_p)
 
#define TEMP_BUFFER_SIZE   VACUUM_FINISHED_JOB_QUEUE_CAPACITY
 
#define MAX_PAGE_MAX_DATA_ENTRIES   (IO_MAX_PAGE_SIZE / sizeof (VACUUM_DATA_ENTRY))
 
#define VACUUM_CLEANUP_DROPPED_FILES_MAX_REDO_CRUMBS   3
 
#define TEMP_BUFFER_SIZE   1024
 

Typedefs

typedef struct vacuum_data_entry VACUUM_DATA_ENTRY
 
typedef struct vacuum_data_page VACUUM_DATA_PAGE
 
typedef struct vacuum_data VACUUM_DATA
 
typedef struct vacuum_data_load VACUUM_DATA_LOAD
 
typedef struct vacuum_heap_helper VACUUM_HEAP_HELPER
 
typedef struct vacuum_dropped_file VACUUM_DROPPED_FILE
 
typedef struct vacuum_dropped_files_page VACUUM_DROPPED_FILES_PAGE
 
typedef struct vacuum_track_dropped_files VACUUM_TRACK_DROPPED_FILES
 
typedef struct vacuum_dropped_files_rcv_data VACUUM_DROPPED_FILES_RCV_DATA
 

Functions

static void vacuum_set_dirty_data_page_dont_free (cubthread::entry *thread_p, vacuum_data_page *data_page)
 
static void vacuum_update_keep_from_log_pageid (THREAD_ENTRY *thread_p)
 
static int vacuum_compare_blockids (const void *ptr1, const void *ptr2)
 
static void vacuum_data_mark_finished (THREAD_ENTRY *thread_p)
 
static void vacuum_data_empty_page (THREAD_ENTRY *thread_p, VACUUM_DATA_PAGE *prev_data_page, VACUUM_DATA_PAGE **data_page)
 
static void vacuum_data_initialize_new_page (THREAD_ENTRY *thread_p, VACUUM_DATA_PAGE *data_page)
 
static void vacuum_init_data_page_with_last_blockid (THREAD_ENTRY *thread_p, VACUUM_DATA_PAGE *data_page, VACUUM_LOG_BLOCKID blockid)
 
static int vacuum_recover_lost_block_data (THREAD_ENTRY *thread_p)
 
static int vacuum_process_log_block (THREAD_ENTRY *thread_p, VACUUM_DATA_ENTRY *block_data, bool sa_mode_partial_block)
 
static int vacuum_process_log_record (THREAD_ENTRY *thread_p, VACUUM_WORKER *worker, LOG_LSA *log_lsa_p, LOG_PAGE *log_page_p, LOG_DATA *log_record_data, MVCCID *mvccid, char **undo_data_ptr, int *undo_data_size, LOG_VACUUM_INFO *vacuum_info, bool *is_file_dropped, bool stop_after_vacuum_info)
 
static void vacuum_read_log_aligned (THREAD_ENTRY *thread_entry, LOG_LSA *log_lsa, LOG_PAGE *log_page)
 
static void vacuum_read_log_add_aligned (THREAD_ENTRY *thread_entry, size_t size, LOG_LSA *log_lsa, LOG_PAGE *log_page)
 
static void vacuum_read_advance_when_doesnt_fit (THREAD_ENTRY *thread_entry, size_t size, LOG_LSA *log_lsa, LOG_PAGE *log_page)
 
static void vacuum_copy_data_from_log (THREAD_ENTRY *thread_p, char *area, int length, LOG_LSA *log_lsa, LOG_PAGE *log_page)
 
static void vacuum_finished_block_vacuum (THREAD_ENTRY *thread_p, VACUUM_DATA_ENTRY *block_data, bool is_vacuum_complete)
 
static bool vacuum_is_work_in_progress (THREAD_ENTRY *thread_p)
 
static int vacuum_worker_allocate_resources (THREAD_ENTRY *thread_p, VACUUM_WORKER *worker)
 
static void vacuum_finalize_worker (THREAD_ENTRY *thread_p, VACUUM_WORKER *worker_info)
 
static int vacuum_compare_heap_object (const void *a, const void *b)
 
static int vacuum_collect_heap_objects (THREAD_ENTRY *thread_p, VACUUM_WORKER *worker, OID *oid, VFID *vfid)
 
static void vacuum_cleanup_collected_by_vfid (VACUUM_WORKER *worker, VFID *vfid)
 
static int vacuum_heap (THREAD_ENTRY *thread_p, VACUUM_WORKER *worker, MVCCID threshold_mvccid, bool was_interrupted)
 
static int vacuum_heap_prepare_record (THREAD_ENTRY *thread_p, VACUUM_HEAP_HELPER *helper)
 
static int vacuum_heap_record_insid_and_prev_version (THREAD_ENTRY *thread_p, VACUUM_HEAP_HELPER *helper)
 
static int vacuum_heap_record (THREAD_ENTRY *thread_p, VACUUM_HEAP_HELPER *helper)
 
static int vacuum_heap_get_hfid_and_file_type (THREAD_ENTRY *thread_p, VACUUM_HEAP_HELPER *helper, const VFID *vfid)
 
static void vacuum_heap_page_log_and_reset (THREAD_ENTRY *thread_p, VACUUM_HEAP_HELPER *helper, bool update_best_space_stat, bool unlatch_page)
 
static void vacuum_log_vacuum_heap_page (THREAD_ENTRY *thread_p, PAGE_PTR page_p, int n_slots, PGSLOTID *slots, MVCC_SATISFIES_VACUUM_RESULT *results, bool reusable, bool all_vacuumed)
 
static void vacuum_log_remove_ovf_insid (THREAD_ENTRY *thread_p, PAGE_PTR ovfpage)
 
static void vacuum_log_redoundo_vacuum_record (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slotid, RECDES *undo_recdes, bool reusable)
 
static int vacuum_log_prefetch_vacuum_block (THREAD_ENTRY *thread_p, VACUUM_DATA_ENTRY *entry)
 
static int vacuum_fetch_log_page (THREAD_ENTRY *thread_p, LOG_PAGEID log_pageid, LOG_PAGE *log_page)
 
static int vacuum_compare_dropped_files (const void *a, const void *b)
 
static int vacuum_add_dropped_file (THREAD_ENTRY *thread_p, VFID *vfid, MVCCID mvccid)
 
static int vacuum_cleanup_dropped_files (THREAD_ENTRY *thread_p)
 
static int vacuum_find_dropped_file (THREAD_ENTRY *thread_p, bool *is_file_dropped, VFID *vfid, MVCCID mvccid)
 
static void vacuum_log_cleanup_dropped_files (THREAD_ENTRY *thread_p, PAGE_PTR page_p, INT16 *indexes, INT16 n_indexes)
 
static void vacuum_dropped_files_set_next_page (THREAD_ENTRY *thread_p, VACUUM_DROPPED_FILES_PAGE *page_p, VPID *next_page)
 
static int vacuum_get_first_page_dropped_files (THREAD_ENTRY *thread_p, VPID *first_page_vpid)
 
static void vacuum_notify_all_workers_dropped_file (const VFID &vfid_dropped, MVCCID mvccid)
 
static bool is_not_vacuumed_and_lost (THREAD_ENTRY *thread_p, MVCC_REC_HEADER *rec_header)
 
static void print_not_vacuumed_to_log (OID *oid, OID *class_oid, MVCC_REC_HEADER *rec_header, int btree_node_type)
 
static bool vacuum_is_empty (void)
 
static void vacuum_convert_thread_to_master (THREAD_ENTRY *thread_p, thread_type &save_type)
 
static void vacuum_convert_thread_to_worker (THREAD_ENTRY *thread_p, VACUUM_WORKER *worker, thread_type &save_type)
 
static void vacuum_restore_thread (THREAD_ENTRY *thread_p, thread_type save_type)
 
static void vacuum_data_load_first_and_last_page (THREAD_ENTRY *thread_p)
 
static void vacuum_data_unload_first_and_last_page (THREAD_ENTRY *thread_p)
 
static void vacuum_data_empty_update_last_blockid (THREAD_ENTRY *thread_p)
 
static void vacuum_verify_vacuum_data_debug (THREAD_ENTRY *thread_p)
 
static void vacuum_verify_vacuum_data_page_fix_count (THREAD_ENTRY *thread_p)
 
static void vacuum_check_shutdown_interruption (const THREAD_ENTRY *thread_p, int error_code)
 
void vacuum_init_thread_context (cubthread::entry &context, thread_type type, VACUUM_WORKER *worker)
 
int xvacuum (THREAD_ENTRY *thread_p)
 
void xvacuum_dump (THREAD_ENTRY *thread_p, FILE *outfp)
 
int vacuum_initialize (THREAD_ENTRY *thread_p, int vacuum_log_block_npages, VFID *vacuum_data_vfid, VFID *dropped_files_vfid, bool is_restore)
 
int vacuum_boot (THREAD_ENTRY *thread_p)
 
void vacuum_stop_workers (THREAD_ENTRY *thread_p)
 
void vacuum_stop_master (THREAD_ENTRY *thread_p)
 
void vacuum_finalize (THREAD_ENTRY *thread_p)
 
int vacuum_heap_page (THREAD_ENTRY *thread_p, VACUUM_HEAP_OBJECT *heap_objects, int n_heap_objects, MVCCID threshold_mvccid, HFID *hfid, bool *reusable, bool was_interrupted)
 
int vacuum_rv_redo_vacuum_heap_page (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
int vacuum_rv_redo_remove_ovf_insid (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
void vacuum_produce_log_block_data (THREAD_ENTRY *thread_p)
 
int vacuum_rv_redo_vacuum_complete (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
int vacuum_data_load_and_recover (THREAD_ENTRY *thread_p)
 
int vacuum_load_dropped_files_from_disk (THREAD_ENTRY *thread_p)
 
int vacuum_create_file_for_vacuum_data (THREAD_ENTRY *thread_p, VFID *vacuum_data_vfid)
 
int vacuum_rv_redo_initialize_data_page (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
int vacuum_create_file_for_dropped_files (THREAD_ENTRY *thread_p, VFID *dropped_files_vfid)
 
int vacuum_rv_redo_data_finished (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
void vacuum_rv_redo_data_finished_dump (FILE *fp, int length, void *data)
 
int vacuum_consume_buffer_log_blocks (THREAD_ENTRY *thread_p)
 
int vacuum_rv_undoredo_data_set_link (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
void vacuum_rv_undoredo_data_set_link_dump (FILE *fp, int length, void *data)
 
int vacuum_rv_redo_append_data (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
void vacuum_rv_redo_append_data_dump (FILE *fp, int length, void *data)
 
VACUUM_LOG_BLOCKID vacuum_get_log_blockid (LOG_PAGEID pageid)
 
LOG_PAGEID vacuum_min_log_pageid_to_keep (THREAD_ENTRY *thread_p)
 
bool vacuum_is_safe_to_remove_archives (void)
 
int vacuum_rv_redo_start_job (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
void vacuum_log_add_dropped_file (THREAD_ENTRY *thread_p, const VFID *vfid, const OID *class_oid, bool pospone_or_undo)
 
int vacuum_rv_redo_add_dropped_file (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
int vacuum_rv_undo_add_dropped_file (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
int vacuum_rv_replace_dropped_file (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
int vacuum_rv_notify_dropped_file (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
int vacuum_is_file_dropped (THREAD_ENTRY *thread_p, bool *is_file_dropped, VFID *vfid, MVCCID mvccid)
 
int vacuum_rv_redo_cleanup_dropped_files (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
int vacuum_rv_set_next_page_dropped_files (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
DISK_ISVALID vacuum_check_not_vacuumed_recdes (THREAD_ENTRY *thread_p, OID *oid, OID *class_oid, RECDES *recdes, int btree_node_type)
 
DISK_ISVALID vacuum_check_not_vacuumed_rec_header (THREAD_ENTRY *thread_p, OID *oid, OID *class_oid, MVCC_REC_HEADER *rec_header, int btree_node_type)
 
bool vacuum_is_mvccid_vacuumed (MVCCID id)
 
int vacuum_rv_undo_vacuum_heap_record (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
int vacuum_rv_redo_vacuum_heap_record (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
void vacuum_notify_server_crashed (LOG_LSA *recovery_lsa)
 
void vacuum_notify_server_shutdown (void)
 
int vacuum_rv_check_at_undo (THREAD_ENTRY *thread_p, PAGE_PTR pgptr, INT16 slotid, INT16 rec_type)
 
void vacuum_sa_reflect_last_blockid (THREAD_ENTRY *thread_p)
 
int vacuum_rv_es_nop (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
int vacuum_reset_data_after_copydb (THREAD_ENTRY *thread_p)
 

Variables

static VACUUM_DATA vacuum_Data
 
VACUUM_DATA_LOAD vacuum_Data_load = { VPID_INITIALIZER, VPID_INITIALIZER }
 
VACUUM_WORKER vacuum_Master
 
lockfree::circular_queue< vacuum_data_entry > * vacuum_Block_data_buffer = NULL
 
lockfree::circular_queue< VACUUM_LOG_BLOCKID > * vacuum_Finished_job_queue = NULL
 
VACUUM_WORKER vacuum_Workers [VACUUM_MAX_WORKER_COUNT]
 
static bool vacuum_Dropped_files_loaded = false
 
static VFID vacuum_Dropped_files_vfid
 
static VPID vacuum_Dropped_files_vpid
 
static INT32 vacuum_Dropped_files_count = 0
 
VACUUM_TRACK_DROPPED_FILESvacuum_Track_dropped_files
 
INT32 vacuum_Dropped_files_version = 0
 
pthread_mutex_t vacuum_Dropped_files_mutex
 
VFID vacuum_Last_dropped_vfid
 
bool vacuum_Is_booted = false
 
static cubthread::daemonvacuum_Master_daemon = NULL
 
static vacuum_master_context_managervacuum_Master_context_manager = NULL
 
static cubthread::entry_workpoolvacuum_Worker_threads = NULL
 
static vacuum_worker_context_managervacuum_Worker_context_manager = NULL
 

Macro Definition Documentation

#define MAX_PAGE_MAX_DATA_ENTRIES   (IO_MAX_PAGE_SIZE / sizeof (VACUUM_DATA_ENTRY))
#define MAX_SLOTS_IN_PAGE   (IO_MAX_PAGE_SIZE / sizeof (SPAGE_SLOT))

Definition at line 66 of file vacuum.c.

Referenced by vacuum_log_vacuum_heap_page().

#define TEMP_BUFFER_SIZE   1024
#define VACUUM_BLOCK_CLEAR_INTERRUPTED (   blockid)    ((blockid) &= ~VACUUM_BLOCK_FLAG_INTERRUPTED)

Definition at line 176 of file vacuum.c.

Referenced by vacuum_data_entry::set_vacuumed().

#define VACUUM_BLOCK_DATA_BUFFER_CAPACITY   1024

Definition at line 460 of file vacuum.c.

Referenced by vacuum_initialize().

#define VACUUM_BLOCK_FLAG_INTERRUPTED   0x2000000000000000

Definition at line 137 of file vacuum.c.

#define VACUUM_BLOCK_IS_INTERRUPTED (   blockid)    (((blockid) & VACUUM_BLOCK_FLAG_INTERRUPTED) != 0)

Definition at line 172 of file vacuum.c.

Referenced by vacuum_data_entry::was_interrupted().

#define VACUUM_BLOCK_SET_INTERRUPTED (   blockid)    ((blockid) |= VACUUM_BLOCK_FLAG_INTERRUPTED)

Definition at line 174 of file vacuum.c.

Referenced by vacuum_data_entry::set_interrupted().

#define VACUUM_BLOCK_STATUS (   blockid)    ((blockid) & VACUUM_BLOCK_STATUS_MASK)

Definition at line 153 of file vacuum.c.

#define VACUUM_BLOCK_STATUS_AVAILABLE   0x0000000000000000

Definition at line 135 of file vacuum.c.

#define VACUUM_BLOCK_STATUS_IN_PROGRESS_VACUUM   0x4000000000000000

Definition at line 134 of file vacuum.c.

#define VACUUM_BLOCK_STATUS_IS_AVAILABLE (   blockid)    (VACUUM_BLOCK_STATUS (blockid) == VACUUM_BLOCK_STATUS_AVAILABLE)

Definition at line 161 of file vacuum.c.

Referenced by vacuum_data_entry::is_available().

#define VACUUM_BLOCK_STATUS_IS_IN_PROGRESS (   blockid)    (VACUUM_BLOCK_STATUS (blockid) == VACUUM_BLOCK_STATUS_IN_PROGRESS_VACUUM)

Definition at line 159 of file vacuum.c.

Referenced by vacuum_data_entry::is_job_in_progress().

#define VACUUM_BLOCK_STATUS_IS_VACUUMED (   blockid)    (VACUUM_BLOCK_STATUS (blockid) == VACUUM_BLOCK_STATUS_VACUUMED)
#define VACUUM_BLOCK_STATUS_MASK   0xC000000000000000

Definition at line 132 of file vacuum.c.

#define VACUUM_BLOCK_STATUS_SET_AVAILABLE (   blockid)    ((blockid) = ((blockid) & ~VACUUM_BLOCK_STATUS_MASK) | VACUUM_BLOCK_STATUS_AVAILABLE)

Definition at line 169 of file vacuum.c.

Referenced by vacuum_data_entry::set_interrupted().

#define VACUUM_BLOCK_STATUS_SET_IN_PROGRESS (   blockid)    ((blockid) = ((blockid) & ~VACUUM_BLOCK_STATUS_MASK) | VACUUM_BLOCK_STATUS_IN_PROGRESS_VACUUM)

Definition at line 167 of file vacuum.c.

Referenced by vacuum_data_entry::set_job_in_progress().

#define VACUUM_BLOCK_STATUS_SET_VACUUMED (   blockid)    ((blockid) = ((blockid) & ~VACUUM_BLOCK_STATUS_MASK) | VACUUM_BLOCK_STATUS_VACUUMED)

Definition at line 165 of file vacuum.c.

Referenced by vacuum_data_entry::set_vacuumed().

#define VACUUM_BLOCK_STATUS_VACUUMED   0x8000000000000000

Definition at line 133 of file vacuum.c.

#define VACUUM_BLOCKID_GET_FLAGS (   blockid)    ((blockid) & VACUUM_DATA_ENTRY_FLAG_MASK)

Definition at line 145 of file vacuum.c.

Referenced by vacuum_data_mark_finished().

#define VACUUM_CLEANUP_DROPPED_FILES_MAX_REDO_CRUMBS   3
#define VACUUM_DATA_ENTRY_BLOCKID_MASK   0x1FFFFFFFFFFFFFFF

Definition at line 128 of file vacuum.c.

#define VACUUM_DATA_ENTRY_FLAG_MASK   0xE000000000000000

Definition at line 126 of file vacuum.c.

#define VACUUM_DATA_PAGE_HEADER_SIZE   (offsetof (VACUUM_DATA_PAGE, data))

Definition at line 203 of file vacuum.c.

Referenced by vacuum_initialize().

#define VACUUM_DEFAULT_HEAP_OBJECT_BUFFER_SIZE   4000

Definition at line 552 of file vacuum.c.

Referenced by vacuum_worker_allocate_resources().

#define VACUUM_DROPPED_FILE_FLAG_DUPLICATE   0x8000

Definition at line 601 of file vacuum.c.

#define VACUUM_DROPPED_FILES_MAX_PAGE_CAPACITY
Value:
/ sizeof (VACUUM_DROPPED_FILE)))
#define VACUUM_DROPPED_FILES_PAGE_HEADER_SIZE
Definition: vacuum.c:589
#define IO_MAX_PAGE_SIZE
struct vacuum_dropped_file VACUUM_DROPPED_FILE
Definition: vacuum.c:570

Definition at line 597 of file vacuum.c.

Referenced by vacuum_cleanup_dropped_files().

#define VACUUM_DROPPED_FILES_PAGE_CAPACITY
Value:
/ sizeof (VACUUM_DROPPED_FILE)))
#define VACUUM_DROPPED_FILES_PAGE_HEADER_SIZE
Definition: vacuum.c:589
#define DB_PAGESIZE
struct vacuum_dropped_file VACUUM_DROPPED_FILE
Definition: vacuum.c:570

Definition at line 593 of file vacuum.c.

Referenced by vacuum_add_dropped_file().

#define VACUUM_DROPPED_FILES_PAGE_HEADER_SIZE   (offsetof (VACUUM_DROPPED_FILES_PAGE, dropped_files))

Definition at line 589 of file vacuum.c.

#define VACUUM_FINISHED_JOB_QUEUE_CAPACITY   2048

Definition at line 476 of file vacuum.c.

Referenced by vacuum_initialize().

#define VACUUM_FIRST_LOG_PAGEID_IN_BLOCK (   blockid)    ((blockid) * vacuum_Data.log_block_npages)
#define vacuum_fix_data_page (   thread_p,
  vpidp 
)
Value:
/* Check if page is vacuum_Data.first_page */ \
/* True: vacuum_Data.first_page */ \
/* False: check if page is vacuum_Data.last_page. */ \
/* True: vacuum_Data.last_page */ \
/* False: fix the page. */ \
char * PAGE_PTR
VACUUM_DATA_PAGE * first_page
Definition: vacuum.c:368
VACUUM_DATA_PAGE * last_page
Definition: vacuum.c:369
static VACUUM_DATA vacuum_Data
Definition: vacuum.c:428
#define VPID_EQ(vpid_ptr1, vpid_ptr2)
Definition: dbtype_def.h:915
#define NULL
Definition: freelistheap.h:34
#define pgbuf_fix(thread_p, vpid, fetch_mode, requestmode, condition)
Definition: page_buffer.h:255
VPID * pgbuf_get_vpid_ptr(PAGE_PTR pgptr)
Definition: page_buffer.c:4609

Definition at line 214 of file vacuum.c.

Referenced by vacuum_job_cursor::search(), vacuum_data_empty_page(), vacuum_data_load_and_recover(), vacuum_data_load_first_and_last_page(), vacuum_data_mark_finished(), vacuum_reset_data_after_copydb(), and vacuum_verify_vacuum_data_debug().

#define vacuum_fix_dropped_entries_page (   thread_p,
  vpidp,
  latch 
)
Value:
((VACUUM_DROPPED_FILES_PAGE *) pgbuf_fix (thread_p, vpidp, OLD_PAGE, \
latch, \
#define pgbuf_fix(thread_p, vpid, fetch_mode, requestmode, condition)
Definition: page_buffer.h:255

Definition at line 606 of file vacuum.c.

Referenced by vacuum_add_dropped_file(), vacuum_cleanup_dropped_files(), vacuum_find_dropped_file(), and vacuum_load_dropped_files_from_disk().

#define vacuum_job_cursor_print_args (   cursor)    (long long int) (cursor).get_blockid (), VPID_AS_ARGS (&(cursor).get_page_vpid ()), (int) (cursor).get_index ()
#define vacuum_job_cursor_print_format   "vacuum_job_cursor(%lld, %d|%d|%d)"
#define VACUUM_LAST_LOG_PAGEID_IN_BLOCK (   blockid)    (VACUUM_FIRST_LOG_PAGEID_IN_BLOCK (blockid + 1) - 1)

Definition at line 75 of file vacuum.c.

Referenced by vacuum_recover_lost_block_data().

#define VACUUM_LOG_BLOCK_BUFFER_INVALID   (-1)

Definition at line 478 of file vacuum.c.

#define VACUUM_LOG_DATA_ENTRY_AS_ARGS (   data)
Value:
(long long) VACUUM_BLOCKID_WITHOUT_FLAGS ((data)->blockid), (long long) VACUUM_BLOCKID_GET_FLAGS ((data)->blockid), \
LSA_AS_ARGS (&(data)->start_lsa), (unsigned long long) (data)->oldest_visible_mvccid, \
(unsigned long long) (data)->newest_mvccid
#define LSA_AS_ARGS(lsa_ptr)
Definition: log_lsa.hpp:78
#define VACUUM_BLOCKID_WITHOUT_FLAGS(blockid)
Definition: vacuum.c:141
#define VACUUM_BLOCKID_GET_FLAGS(blockid)
Definition: vacuum.c:145

Definition at line 657 of file vacuum.c.

Referenced by vacuum_data_unload_first_and_last_page(), and vacuum_process_log_block().

#define VACUUM_LOG_DATA_ENTRY_MSG (   name)    "name = {blockid = %lld, flags = %lld, start_lsa = %lld|%d, oldest_visible_mvccid=%llu, newest_mvccid=%llu }"

Definition at line 655 of file vacuum.c.

Referenced by vacuum_data_unload_first_and_last_page(), and vacuum_process_log_block().

#define VACUUM_LOG_VACUUM_HEAP_ALL_VACUUMED   0x4000

Definition at line 547 of file vacuum.c.

Referenced by vacuum_log_vacuum_heap_page(), and vacuum_rv_redo_vacuum_heap_page().

#define VACUUM_LOG_VACUUM_HEAP_MASK   0xC000
#define VACUUM_LOG_VACUUM_HEAP_REUSABLE   0x8000
#define VACUUM_PERF_HEAP_START (   thread_p,
  helper 
)    PERF_UTIME_TRACKER_START (thread_p, &(helper)->time_track);

Definition at line 531 of file vacuum.c.

Referenced by vacuum_heap_page().

#define VACUUM_PERF_HEAP_TRACK_EXECUTE (   thread_p,
  helper 
)
Value:
PERF_UTIME_TRACKER_TIME_AND_RESTART (thread_p, &(helper)->time_track, \

Definition at line 536 of file vacuum.c.

Referenced by vacuum_heap_page(), vacuum_heap_page_log_and_reset(), and vacuum_heap_record().

#define VACUUM_PERF_HEAP_TRACK_LOGGING (   thread_p,
  helper 
)
Value:
PERF_UTIME_TRACKER_TIME_AND_RESTART (thread_p, &(helper)->time_track, \

Definition at line 539 of file vacuum.c.

Referenced by vacuum_heap_page(), vacuum_heap_page_log_and_reset(), and vacuum_heap_record().

#define VACUUM_PERF_HEAP_TRACK_PREPARE (   thread_p,
  helper 
)
Value:
PERF_UTIME_TRACKER_TIME_AND_RESTART (thread_p, &(helper)->time_track, \

Definition at line 533 of file vacuum.c.

Referenced by vacuum_heap_page(), and vacuum_heap_prepare_record().

#define VACUUM_PREFETCH_LOG_BLOCK_BUFFER_PAGES   ((size_t) (1 + vacuum_Data.log_block_npages))

Definition at line 470 of file vacuum.c.

Referenced by vacuum_log_prefetch_vacuum_block(), and vacuum_worker_allocate_resources().

#define vacuum_set_dirty_data_page (   thread_p,
  data_page,
  free 
)
Value:
do \
{ \
if ((data_page) != vacuum_Data.first_page && (data_page) != vacuum_Data.last_page) \
{ \
pgbuf_set_dirty (thread_p, (PAGE_PTR) (data_page), free); \
} \
{ \
/* Do not unfix first or last page. */ \
pgbuf_set_dirty (thread_p, (PAGE_PTR) (data_page), DONT_FREE); \
} \
if ((free) == FREE) \
{ \
(data_page) = NULL; \
} \
} while (0)
char * PAGE_PTR
VACUUM_DATA_PAGE * first_page
Definition: vacuum.c:368
void pgbuf_set_dirty(THREAD_ENTRY *thread_p, PAGE_PTR pgptr, bool free_page)
Definition: page_buffer.c:4280
#define FREE(PTR)
Definition: cas_common.h:56
VACUUM_DATA_PAGE * last_page
Definition: vacuum.c:369
static VACUUM_DATA vacuum_Data
Definition: vacuum.c:428
#define NULL
Definition: freelistheap.h:34
if(extra_options)
Definition: dynamic_load.c:958
else
#define DONT_FREE
Definition: page_buffer.h:41

Definition at line 239 of file vacuum.c.

Referenced by vacuum_consume_buffer_log_blocks(), vacuum_data_empty_page(), vacuum_data_load_and_recover(), vacuum_data_mark_finished(), vacuum_init_data_page_with_last_blockid(), and xvacuum().

#define vacuum_set_dirty_dropped_entries_page (   thread_p,
  dropped_page,
  free 
)
Value:
do \
{ \
pgbuf_set_dirty (thread_p, (PAGE_PTR) (dropped_page), free); \
if ((free) == FREE) \
{ \
(dropped_page) = NULL; \
} \
} while (0)
char * PAGE_PTR
void pgbuf_set_dirty(THREAD_ENTRY *thread_p, PAGE_PTR pgptr, bool free_page)
Definition: page_buffer.c:4280
#define FREE(PTR)
Definition: cas_common.h:56
#define NULL
Definition: freelistheap.h:34
if(extra_options)
Definition: dynamic_load.c:958

Definition at line 616 of file vacuum.c.

Referenced by vacuum_add_dropped_file(), vacuum_cleanup_dropped_files(), vacuum_create_file_for_dropped_files(), and vacuum_dropped_files_set_next_page().

#define VACUUM_STATS_CACHE_SIZE   100

Definition at line 69 of file vacuum.c.

#define VACUUM_TRACK_DROPPED_FILES_SIZE   (DB_PAGESIZE + sizeof (VACUUM_TRACK_DROPPED_FILES *))

Definition at line 637 of file vacuum.c.

Referenced by vacuum_add_dropped_file(), and vacuum_load_dropped_files_from_disk().

#define vacuum_unfix_data_page (   thread_p,
  data_page 
)
Value:
do \
{ \
if ((data_page) != vacuum_Data.first_page && (data_page) != vacuum_Data.last_page) \
{ \
/* Do not unfix first or last page. */ \
pgbuf_unfix (thread_p, (PAGE_PTR) (data_page)); \
} \
(data_page) = NULL; \
} while (0)
char * PAGE_PTR
VACUUM_DATA_PAGE * first_page
Definition: vacuum.c:368
#define pgbuf_unfix(thread_p, pgptr)
Definition: page_buffer.h:276
VACUUM_DATA_PAGE * last_page
Definition: vacuum.c:369
static VACUUM_DATA vacuum_Data
Definition: vacuum.c:428
#define NULL
Definition: freelistheap.h:34
if(extra_options)
Definition: dynamic_load.c:958

Definition at line 227 of file vacuum.c.

Referenced by vacuum_job_cursor::search(), vacuum_job_cursor::unload(), vacuum_create_file_for_vacuum_data(), vacuum_data_empty_page(), vacuum_data_load_and_recover(), vacuum_data_mark_finished(), and vacuum_verify_vacuum_data_debug().

#define vacuum_unfix_dropped_entries_page (   thread_p,
  dropped_page 
)
Value:
do \
{ \
pgbuf_unfix (thread_p, (PAGE_PTR) (dropped_page)); \
(dropped_page) = NULL; \
} while (0)
char * PAGE_PTR
#define pgbuf_unfix(thread_p, pgptr)
Definition: page_buffer.h:276
#define NULL
Definition: freelistheap.h:34

Definition at line 610 of file vacuum.c.

Referenced by vacuum_add_dropped_file(), vacuum_cleanup_dropped_files(), vacuum_find_dropped_file(), and vacuum_load_dropped_files_from_disk().

#define vacuum_unfix_first_and_last_data_page (   thread_p)
Value:
do \
{ \
{ \
} \
{ \
} \
} while (0)
char * PAGE_PTR
VACUUM_DATA_PAGE * first_page
Definition: vacuum.c:368
#define pgbuf_unfix(thread_p, pgptr)
Definition: page_buffer.h:276
VACUUM_DATA_PAGE * last_page
Definition: vacuum.c:369
static VACUUM_DATA vacuum_Data
Definition: vacuum.c:428
#define NULL
Definition: freelistheap.h:34
if(extra_options)
Definition: dynamic_load.c:958

Definition at line 265 of file vacuum.c.

Referenced by vacuum_data_load_first_and_last_page(), vacuum_data_unload_first_and_last_page(), and vacuum_reset_data_after_copydb().

#define VACUUM_VERIFY_VACUUM_DATA (   thread_p)    vacuum_verify_vacuum_data_debug (thread_p)

Definition at line 746 of file vacuum.c.

Referenced by vacuum_consume_buffer_log_blocks(), and vacuum_data_mark_finished().

#define VACUUM_WORKER_INDEX_TO_TRANID (   index)    (-index + LOG_LAST_VACUUM_WORKER_TRANID)

Definition at line 481 of file vacuum.c.

#define VACUUM_WORKER_TRANID_TO_INDEX (   trid)    (-trid + LOG_LAST_VACUUM_WORKER_TRANID)

Definition at line 485 of file vacuum.c.

Typedef Documentation

typedef struct vacuum_data VACUUM_DATA

Definition at line 359 of file vacuum.c.

Definition at line 94 of file vacuum.c.

Definition at line 432 of file vacuum.c.

Definition at line 184 of file vacuum.c.

Definition at line 570 of file vacuum.c.

Definition at line 578 of file vacuum.c.

Definition at line 645 of file vacuum.c.

Definition at line 494 of file vacuum.c.

Definition at line 630 of file vacuum.c.

Function Documentation

static bool is_not_vacuumed_and_lost ( THREAD_ENTRY thread_p,
MVCC_REC_HEADER rec_header 
)
static
static void print_not_vacuumed_to_log ( OID oid,
OID class_oid,
MVCC_REC_HEADER rec_header,
int  btree_node_type 
)
static
static int vacuum_add_dropped_file ( THREAD_ENTRY thread_p,
VFID vfid,
MVCCID  mvccid 
)
static

Definition at line 5749 of file vacuum.c.

References ARG_FILE_LINE, assert, assert_release, DB_PAGESIZE, vacuum_track_dropped_files::dropped_data_page, vacuum_dropped_files_page::dropped_files, ER_ERROR_SEVERITY, ER_FAILED, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), file_alloc(), file_init_page_type(), FREE, log_append_redo_data2(), log_append_undoredo_data(), LOG_DATA_ADDR_INITIALIZER, LOG_FIND_CURRENT_TDES(), LOG_ISRESTARTED, MVCC_ID_FOLLOW_OR_EQUAL, vacuum_dropped_file::mvccid, MVCCID_NULL, vacuum_dropped_files_page::n_dropped_files, vacuum_dropped_files_page::next_page, vacuum_track_dropped_files::next_tracked_page, NO_ERROR, NULL, log_data_addr::offset, PAGE_DROPPED_FILES, PGBUF_LATCH_WRITE, PGBUF_PAGE_STATE_ARGS, pgbuf_set_page_ptype(), log_data_addr::pgptr, RVPGBUF_NEW_PAGE, RVVAC_DROPPED_FILE_ADD, RVVAC_DROPPED_FILE_REPLACE, util_bsearch(), vacuum_compare_dropped_files(), vacuum_Dropped_files_count, vacuum_Dropped_files_loaded, VACUUM_DROPPED_FILES_PAGE_CAPACITY, vacuum_dropped_files_set_next_page(), vacuum_er_log, VACUUM_ER_LOG_DROPPED_FILES, vacuum_er_log_error, VACUUM_ER_LOG_RECOVERY, vacuum_fix_dropped_entries_page, vacuum_load_dropped_files_from_disk(), vacuum_set_dirty_dropped_entries_page, vacuum_Track_dropped_files, VACUUM_TRACK_DROPPED_FILES_SIZE, vacuum_unfix_dropped_entries_page, log_data_addr::vfid, vacuum_dropped_file::vfid, VFID_AS_ARGS, VFID_COPY, VFID_ISNULL, VPID_COPY, VPID_INITIALIZER, VPID_ISNULL, and VPID_SET_NULL.

Referenced by vacuum_rv_notify_dropped_file().

Here is the caller graph for this function:

DISK_ISVALID vacuum_check_not_vacuumed_rec_header ( THREAD_ENTRY thread_p,
OID oid,
OID class_oid,
MVCC_REC_HEADER rec_header,
int  btree_node_type 
)
DISK_ISVALID vacuum_check_not_vacuumed_recdes ( THREAD_ENTRY thread_p,
OID oid,
OID class_oid,
RECDES recdes,
int  btree_node_type 
)

Definition at line 7255 of file vacuum.c.

References DISK_ERROR, NO_ERROR, or_mvcc_get_header(), and vacuum_check_not_vacuumed_rec_header().

Referenced by heap_chkreloc_next().

Here is the caller graph for this function:

static void vacuum_check_shutdown_interruption ( const THREAD_ENTRY thread_p,
int  error_code 
)
static

Definition at line 7834 of file vacuum.c.

References assert, ASSERT_ERROR, ER_INTERRUPTED, and vacuum_is_thread_vacuum_worker().

Referenced by vacuum_heap(), vacuum_heap_page(), vacuum_heap_prepare_record(), vacuum_process_log_block(), and vacuum_process_log_record().

Here is the caller graph for this function:

static void vacuum_cleanup_collected_by_vfid ( VACUUM_WORKER worker,
VFID vfid 
)
static

Definition at line 6853 of file vacuum.c.

References assert, vacuum_worker::heap_objects, vacuum_worker::n_heap_objects, vacuum_compare_heap_object(), vacuum_heap_object::vfid, and VFID_EQ.

Referenced by vacuum_process_log_record().

Here is the caller graph for this function:

static int vacuum_collect_heap_objects ( THREAD_ENTRY thread_p,
VACUUM_WORKER worker,
OID oid,
VFID vfid 
)
static
static int vacuum_compare_blockids ( const void *  ptr1,
const void *  ptr2 
)
static

Definition at line 4078 of file vacuum.c.

References VACUUM_BLOCKID_WITHOUT_FLAGS.

Referenced by vacuum_data_mark_finished().

Here is the caller graph for this function:

static int vacuum_compare_dropped_files ( const void *  a,
const void *  b 
)
static

Definition at line 5723 of file vacuum.c.

References assert, vfid::fileid, NULL, and vfid::volid.

Referenced by vacuum_add_dropped_file(), and vacuum_find_dropped_file().

Here is the caller graph for this function:

static int vacuum_compare_heap_object ( const void *  a,
const void *  b 
)
static
int vacuum_consume_buffer_log_blocks ( THREAD_ENTRY thread_p)

Definition at line 5006 of file vacuum.c.

References assert, assert_release, vacuum_data_entry::blockid, CAST_BUFLEN, lockfree::circular_queue< T >::consume(), vacuum_data_page::data, log_header::does_block_need_vacuum, DONT_FREE, ER_FAILED, file_alloc(), file_init_page_type(), FREE, vacuum_data_entry::get_blockid(), mvcctable::get_global_oldest_visible(), vacuum_data::get_last_blockid(), log_global::hdr, vacuum_data_page::index_free, vacuum_data_page::index_unvacuumed, vacuum_data_entry::is_available(), lockfree::circular_queue< T >::is_empty(), vacuum_data::last_page, log_append_redo_data2(), log_append_undoredo_data2(), log_Gl, log_sysop_abort(), log_sysop_commit(), log_sysop_start(), LSA_COPY(), LSA_SET_NULL(), log_global::mvcc_table, MVCCID_NULL, vacuum_data_entry::newest_mvccid, vacuum_data_page::next_page, NO_ERROR, NULL, log_lsa::offset, vacuum_data_entry::oldest_visible_mvccid, vacuum_data::page_data_max_count, PAGE_VACUUM_DATA, log_lsa::pageid, log_global::prior_info, log_prior_lsa_info::prior_lsa, log_prior_lsa_info::prior_lsa_mutex, prm_get_bool_value(), PRM_ID_DISABLE_VACUUM, RVVAC_DATA_APPEND_BLOCKS, RVVAC_DATA_SET_LINK, vacuum_data::set_last_blockid(), vacuum_data_entry::set_vacuumed(), vacuum_data_entry::start_lsa, vacuum_data_empty_update_last_blockid(), vacuum_data::vacuum_data_file, vacuum_er_log, vacuum_er_log_error, VACUUM_ER_LOG_VACUUM_DATA, vacuum_get_log_blockid(), vacuum_init_data_page_with_last_blockid(), vacuum_is_empty(), log_header::vacuum_last_blockid, vacuum_set_dirty_data_page, vacuum_update_keep_from_log_pageid(), VACUUM_VERIFY_VACUUM_DATA, vacuum_verify_vacuum_data_page_fix_count(), VPID_COPY, and VPID_INITIALIZER.

Referenced by vacuum_data::update(), vacuum_finalize(), and vacuum_recover_lost_block_data().

Here is the caller graph for this function:

static void vacuum_convert_thread_to_master ( THREAD_ENTRY thread_p,
thread_type save_type 
)
static

Definition at line 7705 of file vacuum.c.

References NULL, thread_get_thread_entry_info(), TT_VACUUM_MASTER, and vacuum_Master.

Referenced by vacuum_recover_lost_block_data(), and xvacuum().

Here is the caller graph for this function:

static void vacuum_convert_thread_to_worker ( THREAD_ENTRY thread_p,
VACUUM_WORKER worker,
thread_type save_type 
)
static
static void vacuum_copy_data_from_log ( THREAD_ENTRY thread_p,
char *  area,
int  length,
LOG_LSA log_lsa,
LOG_PAGE log_page 
)
static

Definition at line 3771 of file vacuum.c.

References log_page::area, LOGAREA_SIZE, log_lsa::offset, and vacuum_read_advance_when_doesnt_fit().

Referenced by vacuum_process_log_record().

Here is the caller graph for this function:

static void vacuum_data_empty_update_last_blockid ( THREAD_ENTRY thread_p)
static
int vacuum_data_load_and_recover ( THREAD_ENTRY thread_p)

Definition at line 4095 of file vacuum.c.

References log_global::append, assert, ASSERT_ERROR, ASSERT_ERROR_AND_SET, assert_release, vacuum_data_entry::blockid, vacuum_data_page::data, DONT_FREE, file_descriptor_get(), vacuum_data::first_page, vacuum_data::get_last_blockid(), log_global::hdr, i, vacuum_data_page::index_free, vacuum_data_page::index_unvacuumed, vacuum_data_entry::is_job_in_progress(), vacuum_data::is_loaded, vacuum_data::last_page, log_Gl, logpb_last_complete_blockid(), LSA_AS_ARGS, LSA_ISNULL(), LSA_SET_NULL(), log_header::mvcc_op_log_lsa, log_global::mvcc_table, MVCCID_NULL, vacuum_data_page::next_page, NO_ERROR, NULL, vacuum_data::oldest_unvacuumed_mvccid, vacuum_data::page_data_max_count, pgbuf_get_vpid(), log_append_info::prev_lsa, vacuum_data::recovery_lsa, vacuum_data_entry::set_interrupted(), vacuum_data::set_last_blockid(), vacuum_data::set_oldest_unvacuumed_on_boot(), mvcctable::update_global_oldest_visible(), file_descriptors::vacuum_data, vacuum_data::vacuum_data_file, vacuum_data_unload_first_and_last_page(), vacuum_er_log, VACUUM_ER_LOG_RECOVERY, VACUUM_ER_LOG_VACUUM_DATA, vacuum_fix_data_page, vacuum_is_empty(), log_header::vacuum_last_blockid, VACUUM_NULL_LOG_BLOCKID, vacuum_recover_lost_block_data(), vacuum_set_dirty_data_page, vacuum_unfix_data_page, vacuum_update_keep_from_log_pageid(), vacuum_verify_vacuum_data_page_fix_count(), VFID_ISNULL, VPID_COPY, file_vacuum_data_des::vpid_first, vacuum_data_load::vpid_first, VPID_ISNULL, and vacuum_data_load::vpid_last.

Referenced by vacuum_boot().

Here is the caller graph for this function:

static void vacuum_data_unload_first_and_last_page ( THREAD_ENTRY thread_p)
static

Definition at line 2941 of file vacuum.c.

References log_global::append, assert, BO_IS_SERVER_RESTARTED, vacuum_master_task::check_shutdown(), vacuum_shutdown_sequence::check_shutdown_request(), vacuum_master_task::execute(), vacuum_data::first_page, vacuum_data_entry::get_blockid(), cubthread::get_manager(), vacuum_data_entry::is_available(), vacuum_master_task::is_cursor_entry_available(), vacuum_master_task::is_cursor_entry_ready_to_vacuum(), lockfree::circular_queue< T >::is_half_full(), vacuum_data_entry::is_job_in_progress(), vacuum_data::is_loaded, vacuum_master_task::is_task_queue_full(), vacuum_data_entry::is_vacuumed(), vacuum_data::last_page, log_Gl, log_global::mvcc_table, log_lsa::pageid, pgbuf_flush_if_requested(), pgbuf_get_vpid(), log_append_info::prev_lsa, prm_get_bool_value(), PRM_ID_DISABLE_VACUUM, PSTAT_VAC_MASTER, cubthread::manager::push_task(), vacuum_master_task::should_force_data_update(), vacuum_master_task::should_interrupt_iteration(), vacuum_data::shutdown_sequence, vacuum_master_task::start_job_on_cursor_entry(), mvcctable::update_global_oldest_visible(), vacuum_data_load_first_and_last_page(), vacuum_er_log, VACUUM_ER_LOG_JOBS, VACUUM_ER_LOG_MASTER, vacuum_job_cursor_print_args, vacuum_job_cursor_print_format, VACUUM_LOG_DATA_ENTRY_AS_ARGS, VACUUM_LOG_DATA_ENTRY_MSG, vacuum_unfix_first_and_last_data_page, vacuum_verify_vacuum_data_page_fix_count(), vacuum_data_load::vpid_first, and vacuum_data_load::vpid_last.

Referenced by vacuum_data_load_and_recover(), vacuum_finalize(), and vacuum_sa_reflect_last_blockid().

Here is the caller graph for this function:

static void vacuum_dropped_files_set_next_page ( THREAD_ENTRY thread_p,
VACUUM_DROPPED_FILES_PAGE page_p,
VPID next_page 
)
static
static void vacuum_finalize_worker ( THREAD_ENTRY thread_p,
VACUUM_WORKER worker_info 
)
static
static int vacuum_get_first_page_dropped_files ( THREAD_ENTRY thread_p,
VPID first_page_vpid 
)
static

Definition at line 7347 of file vacuum.c.

References assert, file_get_sticky_first_page(), and VFID_ISNULL.

Referenced by vacuum_initialize().

Here is the caller graph for this function:

int vacuum_heap_page ( THREAD_ENTRY thread_p,
VACUUM_HEAP_OBJECT heap_objects,
int  n_heap_objects,
MVCCID  threshold_mvccid,
HFID hfid,
bool reusable,
bool  was_interrupted 
)

Definition at line 1546 of file vacuum.c.

References assert, ASSERT_ERROR, ASSERT_ERROR_AND_SET, assert_release, vacuum_heap_helper::can_vacuum, vacuum_heap_helper::crt_slotid, DISK_INVALID, DONT_FREE, vfid::fileid, vacuum_heap_helper::forward_page, HEAP_ISVALID_OID, heap_page_get_vacuum_status(), heap_page_set_vacuum_status_none(), HEAP_PAGE_VACUUM_NONE, HEAP_PAGE_VACUUM_ONCE, heap_remove_page_on_vacuum(), vacuum_heap_helper::hfid, HFID_AS_ARGS, HFID_IS_NULL, vacuum_heap_helper::home_page, vacuum_heap_helper::home_vpid, i, vacuum_heap_helper::initial_home_free_space, vacuum_heap_helper::mvcc_header, mvcc_satisfies_vacuum(), MVCCID_IS_NORMAL, vacuum_heap_helper::n_bulk_vacuumed, vacuum_heap_helper::n_vacuumed, NO_ERROR, NULL, vacuum_heap_object::oid, OLD_PAGE, vacuum_heap_helper::overflow_vfid, PAGE_FTAB, PAGE_HEAP, vpid::pageid, db_identifier::pageid, pgbuf_check_page_ptype(), pgbuf_fix, pgbuf_fix_if_not_deallocated, pgbuf_get_page_ptype(), pgbuf_has_any_non_vacuum_waiters(), pgbuf_has_prevent_dealloc(), PGBUF_LATCH_WRITE, PGBUF_PAGE_STATE_ARGS, pgbuf_set_dirty(), PGBUF_UNCONDITIONAL_LATCH, pgbuf_unfix_and_init, REC_BIGONE, REC_HOME, REC_RELOCATION, vacuum_heap_helper::record_type, vacuum_heap_helper::results, vacuum_heap_helper::reusable, db_identifier::slotid, vacuum_heap_helper::slots, spage_get_free_space_without_saving(), spage_number_of_records(), vacuum_check_shutdown_interruption(), vacuum_er_log, vacuum_er_log_error, VACUUM_ER_LOG_HEAP, vacuum_er_log_warning, VACUUM_ER_LOG_WORKER, vacuum_heap_get_hfid_and_file_type(), vacuum_heap_page_log_and_reset(), vacuum_heap_prepare_record(), vacuum_heap_record(), vacuum_heap_record_insid_and_prev_version(), VACUUM_IS_THREAD_VACUUM_MASTER, VACUUM_IS_THREAD_VACUUM_WORKER, vacuum_log_vacuum_heap_page(), VACUUM_PERF_HEAP_START, VACUUM_PERF_HEAP_TRACK_EXECUTE, VACUUM_PERF_HEAP_TRACK_LOGGING, VACUUM_PERF_HEAP_TRACK_PREPARE, VACUUM_RECORD_DELETE_INSID_PREV_VER, VACUUM_RECORD_REMOVE, vacuum_heap_object::vfid, VFID_SET_NULL, vpid::volid, vfid::volid, db_identifier::volid, VPID_AS_ARGS, and VPID_GET_FROM_OID.

Referenced by heap_vacuum_all_objects(), and vacuum_heap().

Here is the caller graph for this function:

static int vacuum_heap_record_insid_and_prev_version ( THREAD_ENTRY thread_p,
VACUUM_HEAP_HELPER helper 
)
static

Definition at line 2160 of file vacuum.c.

References assert, ASSERT_ERROR, assert_release, vacuum_heap_helper::can_vacuum, CAST_BUFLEN, vacuum_heap_helper::crt_slotid, recdes::data, ER_FAILED, vacuum_heap_helper::forward_oid, vacuum_heap_helper::forward_page, FREE, heap_set_mvcc_rec_header_on_overflow(), vacuum_heap_helper::home_page, vacuum_heap_helper::home_vpid, recdes::length, LSA_SET_NULL(), MVCC_GET_CHN, MVCC_GET_DELID, MVCC_GET_FLAG, MVCC_GET_INSID, MVCC_GET_REPID, vacuum_heap_helper::mvcc_header, mvcc_header_size_lookup, MVCC_IS_HEADER_INSID_NOT_ALL_VISIBLE, MVCC_SET_INSID, MVCCID_ALL_VISIBLE, vacuum_heap_helper::n_bulk_vacuumed, vacuum_heap_helper::n_vacuumed, NO_ERROR, NULL, OID_ISNULL, OR_GET_MVCC_REPID_AND_FLAG, OR_MVCC_FLAG_MASK, OR_MVCC_FLAG_SHIFT_BITS, OR_MVCC_FLAG_VALID_DELID, OR_MVCC_FLAG_VALID_INSID, OR_MVCC_FLAG_VALID_PREV_VERSION, OR_MVCC_INSERT_ID_OFFSET, OR_MVCCID_SIZE, OR_PUT_INT, vpid::pageid, perfmon_inc_stat(), pgbuf_set_dirty(), mvcc_rec_header::prev_version_lsa, PSTAT_HEAP_BIG_VACUUMS, PSTAT_HEAP_HOME_VACUUMS, PSTAT_HEAP_INSID_VACUUMS, PSTAT_HEAP_REL_VACUUMS, REC_BIGONE, REC_HOME, REC_NEWHOME, REC_RELOCATION, vacuum_heap_helper::record, vacuum_heap_helper::record_type, vacuum_heap_helper::results, vacuum_heap_helper::reusable, db_identifier::slotid, vacuum_heap_helper::slots, SP_SUCCESS, spage_update(), recdes::type, vacuum_er_log_error, VACUUM_ER_LOG_HEAP, vacuum_log_remove_ovf_insid(), vacuum_log_vacuum_heap_page(), VACUUM_RECORD_DELETE_INSID_PREV_VER, and vpid::volid.

Referenced by vacuum_heap_page().

Here is the caller graph for this function:

int vacuum_is_file_dropped ( THREAD_ENTRY thread_p,
bool is_file_dropped,
VFID vfid,
MVCCID  mvccid 
)

Definition at line 6485 of file vacuum.c.

References NO_ERROR, prm_get_bool_value(), PRM_ID_DISABLE_VACUUM, and vacuum_find_dropped_file().

Referenced by file_create(), file_tracker_item_reuse_heap(), and vacuum_process_log_record().

Here is the caller graph for this function:

bool vacuum_is_mvccid_vacuumed ( MVCCID  id)
bool vacuum_is_safe_to_remove_archives ( void  )

Definition at line 5650 of file vacuum.c.

References vacuum_data::is_archive_removal_safe.

Referenced by logpb_remove_archive_logs(), and logpb_remove_archive_logs_exceed_limit().

Here is the caller graph for this function:

static bool vacuum_is_work_in_progress ( THREAD_ENTRY thread_p)
static

Definition at line 4506 of file vacuum.c.

References i, VACUUM_MAX_WORKER_COUNT, and VACUUM_WORKER_STATE_INACTIVE.

Referenced by vacuum_finalize().

Here is the caller graph for this function:

static void vacuum_log_cleanup_dropped_files ( THREAD_ENTRY thread_p,
PAGE_PTR  page_p,
INT16 *  indexes,
INT16  n_indexes 
)
static
static void vacuum_log_redoundo_vacuum_record ( THREAD_ENTRY thread_p,
PAGE_PTR  page_p,
PGSLOTID  slotid,
RECDES undo_recdes,
bool  reusable 
)
static
static void vacuum_log_remove_ovf_insid ( THREAD_ENTRY thread_p,
PAGE_PTR  ovfpage 
)
static

Definition at line 2818 of file vacuum.c.

References log_append_redo_data2(), NULL, and RVVAC_REMOVE_OVF_INSID.

Referenced by vacuum_heap_record_insid_and_prev_version().

Here is the caller graph for this function:

LOG_PAGEID vacuum_min_log_pageid_to_keep ( THREAD_ENTRY thread_p)
static void vacuum_notify_all_workers_dropped_file ( const VFID vfid_dropped,
MVCCID  mvccid 
)
static
void vacuum_notify_server_crashed ( LOG_LSA recovery_lsa)

Definition at line 7468 of file vacuum.c.

References LSA_COPY(), and vacuum_data::recovery_lsa.

Referenced by log_recovery().

Here is the caller graph for this function:

void vacuum_notify_server_shutdown ( void  )

Definition at line 7480 of file vacuum.c.

References vacuum_shutdown_sequence::request_shutdown(), and vacuum_data::shutdown_sequence.

Referenced by vacuum_stop_workers().

Here is the caller graph for this function:

static int vacuum_process_log_block ( THREAD_ENTRY thread_p,
VACUUM_DATA_ENTRY block_data,
bool  sa_mode_partial_block 
)
static

Definition at line 3174 of file vacuum.c.

References ARG_FILE_LINE, assert, ASSERT_NO_ERROR, assert_release, BTID_AS_ARGS, btree_rv_read_keybuf_nocopy(), btree_rv_read_keybuf_two_objects(), btree_vacuum_insert_mvccid(), btree_vacuum_object(), btree_object_info::class_oid, COPY_OID, db_private_free_and_init, btree_mvcc_info::delete_mvccid, er_clear(), ER_ERROR_SEVERITY, ER_INTERRUPTED, er_set(), es_delete_file(), vfid::fileid, vacuum_data_entry::get_blockid(), mvcctable::get_global_oldest_visible(), log_page::hdr, heap_rv_remove_flags_from_offset(), btree_mvcc_info::insert_mvccid, IO_MAX_PAGE_SIZE, vacuum_data::log_block_npages, LOG_FIND_CURRENT_TDES(), log_Gl, LOG_IS_MVCC_BTREE_OPERATION, LOG_IS_MVCC_HEAP_OPERATION, log_hdrpage::logical_pageid, logpb_fatal_error(), logtb_get_check_interrupt(), logtb_is_interrupted(), LSA_AS_ARGS, LSA_COPY(), LSA_ISNULL(), LSA_SET_NULL(), MAX_ALIGNMENT, MVCC_ID_FOLLOW_OR_EQUAL, MVCC_ID_PRECEDES, log_global::mvcc_table, MVCCID_ALL_VISIBLE, MVCCID_IS_VALID, vacuum_worker::n_heap_objects, vacuum_data_entry::newest_mvccid, NO_ERROR, NULL, NULL_OFFSET, NULL_PAGEID, log_lsa::offset, log_hdrpage::offset, log_data::offset, btree_object_info::oid, OID_AS_ARGS, OID_ISNULL, vacuum_data_entry::oldest_visible_mvccid, or_unpack_string(), log_lsa::pageid, log_data::pageid, db_identifier::pageid, perfmon_add_stat(), pgbuf_unfix_all(), log_vacuum_info::prev_mvcc_op_log_lsa, prm_get_bool_value(), PRM_ID_DISABLE_VACUUM, PSTAT_VAC_JOB, PSTAT_VAC_NUM_VACUUMED_LOG_PAGES, PSTAT_VAC_WORKER_EXECUTE, PSTAT_VAC_WORKER_PROCESS_LOG, PTR_ALIGN, log_data::rcvindex, RVBT_MVCC_DELETE_OBJECT, RVBT_MVCC_INSERT_OBJECT, RVBT_MVCC_INSERT_OBJECT_UNQ, RVBT_MVCC_NOTIFY_VACUUM, RVES_NOTIFY_VACUUM, db_identifier::slotid, vacuum_data_entry::start_lsa, vacuum_worker::state, btid_int::sys_btid, vacuum_check_shutdown_interruption(), vacuum_collect_heap_objects(), vacuum_er_log, VACUUM_ER_LOG_BTREE, VACUUM_ER_LOG_DROPPED_FILES, vacuum_er_log_error, VACUUM_ER_LOG_HEAP, VACUUM_ER_LOG_JOBS, VACUUM_ER_LOG_WORKER, vacuum_fetch_log_page(), vacuum_finished_block_vacuum(), VACUUM_FIRST_LOG_PAGEID_IN_BLOCK, vacuum_get_log_blockid(), vacuum_get_vacuum_worker(), vacuum_heap(), VACUUM_LOG_DATA_ENTRY_AS_ARGS, VACUUM_LOG_DATA_ENTRY_MSG, vacuum_log_prefetch_vacuum_block(), vacuum_process_log_record(), VACUUM_WORKER_STATE_EXECUTE, VACUUM_WORKER_STATE_INACTIVE, VACUUM_WORKER_STATE_PROCESS_LOG, log_vacuum_info::vfid, VFID_AS_ARGS, VFID_SET_NULL, log_data::volid, vfid::volid, db_identifier::volid, and vacuum_data_entry::was_interrupted().

Referenced by vacuum_worker_task::execute().

Here is the caller graph for this function:

static int vacuum_process_log_record ( THREAD_ENTRY thread_p,
VACUUM_WORKER worker,
LOG_LSA log_lsa_p,
LOG_PAGE log_page_p,
LOG_DATA log_record_data,
MVCCID mvccid,
char **  undo_data_ptr,
int *  undo_data_size,
LOG_VACUUM_INFO vacuum_info,
bool is_file_dropped,
bool  stop_after_vacuum_info 
)
static

Definition at line 3818 of file vacuum.c.

References log_page::area, ARG_FILE_LINE, assert, log_rec_undoredo::data, log_rec_undo::data, log_zip::data_length, vacuum_worker::drop_files_version, ER_ERROR_SEVERITY, ER_FAILED, ER_GENERIC_ERROR, er_set(), GET_ZIP_LEN, i, log_rec_undo::length, log_zip::log_data, LOG_GET_LOG_RECORD_HEADER, LOG_IS_MVCC_BTREE_OPERATION, LOG_MVCC_DIFF_UNDOREDO_DATA, LOG_MVCC_UNDO_DATA, LOG_MVCC_UNDOREDO_DATA, LOG_SMALLER_LOGREC_TYPE, LOG_SYSOP_END, LOG_SYSOP_END_LOGICAL_MVCC_UNDO, log_unzip(), vacuum_worker::log_zip_p, LOGAREA_SIZE, logpb_fatal_error(), LSA_COPY(), LSA_SET_NULL(), log_rec_sysop_end::mvcc_undo, log_rec_mvcc_undoredo::mvccid, log_rec_mvcc_undo::mvccid, NO_ERROR, NULL, log_lsa::offset, log_vacuum_info::prev_mvcc_op_log_lsa, log_data::rcvindex, RVES_NOTIFY_VACUUM, log_rec_header::type, log_rec_sysop_end::type, log_rec_undoredo::ulength, log_rec_mvcc_undo::undo, vacuum_worker::undo_data_buffer, vacuum_worker::undo_data_buffer_capacity, log_rec_mvcc_undoredo::undoredo, vacuum_check_shutdown_interruption(), vacuum_cleanup_collected_by_vfid(), vacuum_copy_data_from_log(), vacuum_Dropped_files_version, vacuum_er_log, VACUUM_ER_LOG_DROPPED_FILES, vacuum_er_log_error, VACUUM_ER_LOG_LOGGING, VACUUM_ER_LOG_WORKER, log_rec_mvcc_undoredo::vacuum_info, log_rec_mvcc_undo::vacuum_info, vacuum_is_file_dropped(), VACUUM_MAX_WORKER_COUNT, vacuum_read_advance_when_doesnt_fit(), vacuum_read_log_add_aligned(), VACUUM_WORKER_STATE_INACTIVE, log_vacuum_info::vfid, VFID_COPY, VFID_ISNULL, VFID_SET_NULL, and ZIP_CHECK.

Referenced by vacuum_process_log_block(), and vacuum_recover_lost_block_data().

Here is the caller graph for this function:

static void vacuum_read_advance_when_doesnt_fit ( THREAD_ENTRY thread_entry,
size_t  size,
LOG_LSA log_lsa,
LOG_PAGE log_page 
)
static

Definition at line 3750 of file vacuum.c.

References LOGAREA_SIZE, log_lsa::offset, and vacuum_read_log_aligned().

Referenced by vacuum_copy_data_from_log(), and vacuum_process_log_record().

Here is the caller graph for this function:

static void vacuum_read_log_add_aligned ( THREAD_ENTRY thread_entry,
size_t  size,
LOG_LSA log_lsa,
LOG_PAGE log_page 
)
static

Definition at line 3735 of file vacuum.c.

References log_lsa::offset, and vacuum_read_log_aligned().

Referenced by vacuum_process_log_record().

Here is the caller graph for this function:

static void vacuum_read_log_aligned ( THREAD_ENTRY thread_entry,
LOG_LSA log_lsa,
LOG_PAGE log_page 
)
static
static int vacuum_recover_lost_block_data ( THREAD_ENTRY thread_p)
static

Definition at line 5375 of file vacuum.c.

References log_page::area, ARG_FILE_LINE, assert, ASSERT_ERROR, log_rec_header::back_lsa, vacuum_data_entry::blockid, log_rec_redo::data, log_header::does_block_need_vacuum, ER_FAILED, mvcctable::get_global_oldest_visible(), vacuum_data::get_last_blockid(), log_page::hdr, log_global::hdr, IO_MAX_PAGE_SIZE, LOG_CS_SAFE_READER, LOG_GET_LOG_RECORD_HEADER, log_Gl, LOG_MVCC_DIFF_UNDOREDO_DATA, LOG_MVCC_UNDO_DATA, LOG_MVCC_UNDOREDO_DATA, LOG_READ_ADD_ALIGN, LOG_READ_ADVANCE_WHEN_DOESNT_FIT, LOG_REDO_DATA, LOG_SYSOP_END, LOG_SYSOP_END_LOGICAL_MVCC_UNDO, log_hdrpage::logical_pageid, logpb_fatal_error(), logpb_fetch_page(), logpb_vacuum_reset_log_header_cache(), LSA_AS_ARGS, LSA_COPY(), LSA_INITIALIZER, LSA_ISNULL(), MAX_ALIGNMENT, MVCC_ID_PRECEDES, log_header::mvcc_op_log_lsa, log_global::mvcc_table, MVCCID_NULL, log_header::newest_block_mvccid, vacuum_data_entry::newest_mvccid, NO_ERROR, NULL, NULL_OFFSET, NULL_PAGEID, log_lsa::offset, log_hdrpage::offset, vacuum_data_entry::oldest_visible_mvccid, log_header::oldest_visible_mvccid, log_lsa::pageid, log_vacuum_info::prev_mvcc_op_log_lsa, log_global::prior_info, log_prior_lsa_info::prior_lsa, lockfree::circular_queue< T >::produce(), PTR_ALIGN, log_data::rcvindex, vacuum_data::recovery_lsa, RVVAC_COMPLETE, vacuum_data_entry::start_lsa, log_rec_header::type, log_rec_sysop_end::type, vacuum_consume_buffer_log_blocks(), vacuum_convert_thread_to_master(), vacuum_er_log, VACUUM_ER_LOG_RECOVERY, VACUUM_ER_LOG_VACUUM_DATA, VACUUM_FIRST_LOG_PAGEID_IN_BLOCK, vacuum_get_log_blockid(), VACUUM_LAST_LOG_PAGEID_IN_BLOCK, vacuum_process_log_record(), and vacuum_restore_thread().

Referenced by vacuum_data_load_and_recover().

Here is the caller graph for this function:

static void vacuum_restore_thread ( THREAD_ENTRY thread_p,
thread_type  save_type 
)
static

Definition at line 7754 of file vacuum.c.

References LOG_SYSTEM_TRAN_INDEX, NULL, and thread_get_thread_entry_info().

Referenced by vacuum_recover_lost_block_data(), and xvacuum().

Here is the caller graph for this function:

int vacuum_rv_redo_append_data ( THREAD_ENTRY thread_p,
LOG_RCV rcv 
)
void vacuum_rv_redo_append_data_dump ( FILE *  fp,
int  length,
void *  data 
)
void vacuum_rv_redo_data_finished_dump ( FILE *  fp,
int  length,
void *  data 
)
int vacuum_rv_undo_vacuum_heap_record ( THREAD_ENTRY thread_p,
LOG_RCV rcv 
)

Definition at line 7422 of file vacuum.c.

References heap_rv_redo_insert(), log_rcv::offset, and VACUUM_LOG_VACUUM_HEAP_MASK.

int vacuum_rv_undoredo_data_set_link ( THREAD_ENTRY thread_p,
LOG_RCV rcv 
)
void vacuum_rv_undoredo_data_set_link_dump ( FILE *  fp,
int  length,
void *  data 
)

Definition at line 5301 of file vacuum.c.

References NULL.

static void vacuum_set_dirty_data_page_dont_free ( cubthread::entry thread_p,
vacuum_data_page data_page 
)
inlinestatic

Definition at line 258 of file vacuum.c.

References assert, DONT_FREE, NULL, and pgbuf_set_dirty().

Referenced by vacuum_job_cursor::start_job_on_current_entry().

Here is the caller graph for this function:

void vacuum_stop_master ( THREAD_ENTRY thread_p)

Definition at line 1359 of file vacuum.c.

References cubthread::manager::destroy_daemon(), cubthread::get_manager(), NULL, vacuum_Is_booted, and vacuum_Master_context_manager.

Referenced by boot_restart_server(), and xboot_shutdown_server().

Here is the caller graph for this function:

static void vacuum_verify_vacuum_data_page_fix_count ( THREAD_ENTRY thread_p)
static
int xvacuum ( THREAD_ENTRY thread_p)

Definition at line 962 of file vacuum.c.

References ARG_FILE_LINE, assert, log_header::does_block_need_vacuum, DONT_FREE, ER_ERROR_SEVERITY, er_log_debug, ER_NOTIFICATION_SEVERITY, er_set(), ER_STAND_ALONE_VACUUM_END, ER_STAND_ALONE_VACUUM_START, ER_VACUUM_CS_NOT_AVAILABLE, vacuum_data::first_page, vacuum_job_cursor::force_data_update(), vacuum_data_entry::get_blockid(), vacuum_job_cursor::get_current_entry(), log_global::hdr, vacuum_job_cursor::increment_blockid(), vacuum_data_entry::is_available(), lockfree::circular_queue< T >::is_empty(), vacuum_data::is_empty(), lockfree::circular_queue< T >::is_full(), vacuum_job_cursor::is_loaded(), vacuum_data_entry::is_vacuumed(), vacuum_job_cursor::is_valid(), vacuum_job_cursor::load(), log_append_redo_data2(), log_Gl, logpb_force_flush_pages(), logpb_vacuum_reset_log_header_cache(), logtb_is_interrupted(), logtb_set_check_interrupt(), log_header::mvcc_next_id, NO_ERROR, NULL, vacuum_data::oldest_unvacuumed_mvccid, prm_get_bool_value(), PRM_ID_DISABLE_VACUUM, PSTAT_VAC_MASTER, RVVAC_COMPLETE, vacuum_job_cursor::set_on_vacuum_data_start(), vacuum_job_cursor::start_job_on_current_entry(), TT_NONE, vacuum_job_cursor::unload(), vacuum_data::update(), vacuum_cleanup_dropped_files(), vacuum_convert_thread_to_master(), vacuum_data_load_first_and_last_page(), vacuum_er_log, VACUUM_ER_LOG_JOBS, VACUUM_ER_LOG_MASTER, vacuum_finalize(), vacuum_job_cursor_print_args, vacuum_job_cursor_print_format, vacuum_restore_thread(), vacuum_set_dirty_data_page, and vacuum_verify_vacuum_data_page_fix_count().

Referenced by boot_restart_server(), cvacuum(), and svacuum().

Here is the caller graph for this function:

void xvacuum_dump ( THREAD_ENTRY thread_p,
FILE *  outfp 
)

Variable Documentation

lockfree::circular_queue<vacuum_data_entry>* vacuum_Block_data_buffer = NULL

Definition at line 458 of file vacuum.c.

Referenced by vacuum_finalize().

VACUUM_DATA vacuum_Data
static

Definition at line 428 of file vacuum.c.

Definition at line 438 of file vacuum.c.

INT32 vacuum_Dropped_files_count = 0
static
bool vacuum_Dropped_files_loaded = false
static
pthread_mutex_t vacuum_Dropped_files_mutex
INT32 vacuum_Dropped_files_version = 0
VFID vacuum_Dropped_files_vfid
static

Definition at line 561 of file vacuum.c.

Referenced by vacuum_log_cleanup_dropped_files().

VPID vacuum_Dropped_files_vpid
static

Definition at line 564 of file vacuum.c.

lockfree::circular_queue<VACUUM_LOG_BLOCKID>* vacuum_Finished_job_queue = NULL

Definition at line 466 of file vacuum.c.

Referenced by vacuum_finalize().

bool vacuum_Is_booted = false

Definition at line 652 of file vacuum.c.

Referenced by vacuum_boot(), vacuum_stop_master(), vacuum_stop_workers(), and xvacuum_dump().

VFID vacuum_Last_dropped_vfid

Definition at line 643 of file vacuum.c.

VACUUM_WORKER vacuum_Master

Definition at line 447 of file vacuum.c.

Referenced by vacuum_convert_thread_to_master().

vacuum_master_context_manager* vacuum_Master_context_manager = NULL
static

Definition at line 922 of file vacuum.c.

Referenced by vacuum_stop_master().

cubthread::daemon* vacuum_Master_daemon = NULL
static

Definition at line 921 of file vacuum.c.

VACUUM_TRACK_DROPPED_FILES* vacuum_Track_dropped_files

Definition at line 636 of file vacuum.c.

Referenced by vacuum_add_dropped_file().

vacuum_worker_context_manager* vacuum_Worker_context_manager = NULL
static

Definition at line 926 of file vacuum.c.

Referenced by vacuum_stop_workers().

cubthread::entry_workpool* vacuum_Worker_threads = NULL
static

Definition at line 925 of file vacuum.c.