CUBRID Engine  latest
vacuum.h File Reference
#include "dbtype_def.h"
#include "disk_manager.h"
#include "log_impl.h"
#include "log_lsa.hpp"
#include "log_postpone_cache.hpp"
#include "porting_inline.hpp"
#include "recovery.h"
#include "storage_common.h"
#include "system_parameter.h"
#include "thread_entry.hpp"
#include <assert.h>
Include dependency graph for vacuum.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  vacuum_heap_object
 
struct  vacuum_worker
 

Macros

#define VACUUM_ER_LOG_NONE   0 /* No logging */
 
#define VACUUM_ER_LOG_ERROR   1 /* Log vacuum errors */
 
#define VACUUM_ER_LOG_WARNING   2 /* Log vacuum warnings */
 
#define VACUUM_ER_LOG_LOGGING   4 /* Log adding MVCC op log entries. */
 
#define VACUUM_ER_LOG_BTREE   8 /* Log vacuum b-trees */
 
#define VACUUM_ER_LOG_HEAP   16 /* Log vacuum heap */
 
#define VACUUM_ER_LOG_DROPPED_FILES   32 /* Log dropped classes */
 
#define VACUUM_ER_LOG_VACUUM_DATA   64 /* Log vacuum data */
 
#define VACUUM_ER_LOG_WORKER   128 /* Log vacuum worker specific activity. */
 
#define VACUUM_ER_LOG_MASTER   256 /* Log vacuum master specific activity. */
 
#define VACUUM_ER_LOG_RECOVERY   512 /* Log recovery of vacuum data and dropped classes/indexes */
 
#define VACUUM_ER_LOG_TOPOPS   1024 /* Log starting/ending system operations and their recovery. */
 
#define VACUUM_ER_LOG_ARCHIVES   2048 /* Log when archives are removed or when vacuum fails to find archives. */
 
#define VACUUM_ER_LOG_JOBS   4096 /* Log job generation, interrupt, finish */
 
#define VACUUM_ER_LOG_FLUSH_DATA   8192 /* Log flushing vacuum data. */
 
#define VACUUM_ER_LOG_VERBOSE   0xFFFFFFFF /* Log all activity related to vacuum. */
 
#define VACUUM_IS_ER_LOG_LEVEL_SET(er_log_level)   ((prm_get_integer_value (PRM_ID_ER_LOG_VACUUM) & (er_log_level)) != 0)
 
#define vacuum_er_log(er_log_level, msg, ...)
 
#define vacuum_er_log_error(er_log_level, msg, ...)
 
#define vacuum_er_log_warning(er_log_level, msg, ...)
 
#define VACUUM_LOG_ADD_DROPPED_FILE_POSTPONE   true
 
#define VACUUM_LOG_ADD_DROPPED_FILE_UNDO   false
 
#define VACUUM_LOG_BLOCK_PAGES_DEFAULT   31
 
#define VACUUM_MAX_WORKER_COUNT   50
 
#define VACUUM_IS_THREAD_VACUUM   vacuum_is_thread_vacuum
 
#define VACUUM_IS_THREAD_VACUUM_WORKER   vacuum_is_thread_vacuum_worker
 
#define VACUUM_IS_THREAD_VACUUM_MASTER   vacuum_is_thread_vacuum_master
 

Typedefs

typedef enum vacuum_worker_state VACUUM_WORKER_STATE
 
typedef struct vacuum_heap_object VACUUM_HEAP_OBJECT
 
typedef struct vacuum_worker VACUUM_WORKER
 

Enumerations

enum  vacuum_worker_state { VACUUM_WORKER_STATE_INACTIVE, VACUUM_WORKER_STATE_PROCESS_LOG, VACUUM_WORKER_STATE_EXECUTE }
 

Functions

STATIC_INLINE VACUUM_WORKERvacuum_get_vacuum_worker (THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
 
STATIC_INLINE bool vacuum_is_thread_vacuum (const THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
 
STATIC_INLINE bool vacuum_is_thread_vacuum_worker (const THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
 
STATIC_INLINE bool vacuum_is_thread_vacuum_master (const THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
 
STATIC_INLINE VACUUM_WORKER_STATE vacuum_get_worker_state (THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
 
STATIC_INLINE void vacuum_set_worker_state (THREAD_ENTRY *thread_p, VACUUM_WORKER_STATE state) __attribute__((ALWAYS_INLINE))
 
STATIC_INLINE bool vacuum_worker_state_is_inactive (THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
 
STATIC_INLINE bool vacuum_worker_state_is_process_log (THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
 
STATIC_INLINE bool vacuum_worker_state_is_execute (THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
 
STATIC_INLINE bool vacuum_is_process_log_for_vacuum (THREAD_ENTRY *thread_p) __attribute__((ALWAYS_INLINE))
 
int vacuum_initialize (THREAD_ENTRY *thread_p, int vacuum_log_block_npages, VFID *vacuum_data_vfid, VFID *dropped_files_vfid, bool is_restore)
 
void vacuum_finalize (THREAD_ENTRY *thread_p)
 
int vacuum_boot (THREAD_ENTRY *thread_p)
 
void vacuum_stop_workers (THREAD_ENTRY *thread_p)
 
void vacuum_stop_master (THREAD_ENTRY *thread_p)
 
int xvacuum (THREAD_ENTRY *thread_p)
 
void xvacuum_dump (THREAD_ENTRY *thread_p, FILE *outfp)
 
int vacuum_create_file_for_vacuum_data (THREAD_ENTRY *thread_p, VFID *vacuum_data_vfid)
 
int vacuum_data_load_and_recover (THREAD_ENTRY *thread_p)
 
VACUUM_LOG_BLOCKID vacuum_get_log_blockid (LOG_PAGEID pageid)
 
void vacuum_produce_log_block_data (THREAD_ENTRY *thread_p)
 
int vacuum_consume_buffer_log_blocks (THREAD_ENTRY *thread_p)
 
LOG_PAGEID vacuum_min_log_pageid_to_keep (THREAD_ENTRY *thread_p)
 
bool vacuum_is_safe_to_remove_archives (void)
 
void vacuum_notify_server_crashed (LOG_LSA *recovery_lsa)
 
void vacuum_notify_server_shutdown (void)
 
int vacuum_rv_redo_vacuum_complete (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
int vacuum_rv_redo_initialize_data_page (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
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_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)
 
int vacuum_rv_redo_start_job (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
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)
 
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)
 
int vacuum_create_file_for_dropped_files (THREAD_ENTRY *thread_p, VFID *dropped_files_vfid)
 
int vacuum_load_dropped_files_from_disk (THREAD_ENTRY *thread_p)
 
int vacuum_is_file_dropped (THREAD_ENTRY *thread_p, bool *is_file_dropped, VFID *vfid, MVCCID mvccid)
 
int vacuum_rv_notify_dropped_file (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 postpone_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_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_check_at_undo (THREAD_ENTRY *thread_p, PAGE_PTR pgptr, INT16 slotid, INT16 rec_type)
 
int vacuum_rv_es_nop (THREAD_ENTRY *thread_p, LOG_RCV *rcv)
 
int vacuum_reset_data_after_copydb (THREAD_ENTRY *thread_p)
 
void vacuum_sa_reflect_last_blockid (THREAD_ENTRY *thread_p)
 

Macro Definition Documentation

#define vacuum_er_log (   er_log_level,
  msg,
  ... 
)
Value:
if (VACUUM_IS_ER_LOG_LEVEL_SET (er_log_level)) \
_er_log_debug (ARG_FILE_LINE, "VACUUM " LOG_THREAD_TRAN_MSG ": " msg "\n", \
cubthread::entry * thread_get_thread_entry_info(void)
#define LOG_THREAD_TRAN_MSG
Definition: log_impl.h:796
#define LOG_THREAD_TRAN_ARGS(thread_p)
Definition: log_impl.h:797
void _er_log_debug(const char *file_name, const int line_no, const char *fmt,...)
#define ARG_FILE_LINE
Definition: error_manager.h:44
#define VACUUM_IS_ER_LOG_LEVEL_SET(er_log_level)
Definition: vacuum.h:62

Definition at line 65 of file vacuum.h.

Referenced by heap_page_rv_chain_update(), heap_page_set_vacuum_status_none(), heap_page_update_chain_after_mvcc_op(), heap_remove_page_on_vacuum(), vacuum_job_cursor::increment_blockid(), vacuum_job_cursor::load(), log_sysop_end_final(), log_sysop_start(), logpb_backup(), logpb_remove_archive_logs_exceed_limit(), logpb_vacuum_reset_log_header_cache(), prior_lsa_next_record_internal(), vacuum_job_cursor::readjust_to_vacuum_data_changes(), vacuum_job_cursor::unload(), vacuum_add_dropped_file(), vacuum_cleanup_dropped_files(), vacuum_consume_buffer_log_blocks(), vacuum_data_empty_page(), vacuum_data_empty_update_last_blockid(), vacuum_data_initialize_new_page(), vacuum_data_load_and_recover(), vacuum_data_mark_finished(), vacuum_data_unload_first_and_last_page(), vacuum_fetch_log_page(), vacuum_find_dropped_file(), vacuum_finished_block_vacuum(), vacuum_heap_page(), vacuum_log_add_dropped_file(), vacuum_log_prefetch_vacuum_block(), vacuum_notify_all_workers_dropped_file(), vacuum_process_log_block(), vacuum_process_log_record(), vacuum_produce_log_block_data(), vacuum_recover_lost_block_data(), vacuum_reset_data_after_copydb(), vacuum_rv_redo_add_dropped_file(), vacuum_rv_redo_cleanup_dropped_files(), vacuum_rv_redo_vacuum_heap_page(), vacuum_rv_replace_dropped_file(), vacuum_rv_set_next_page_dropped_files(), vacuum_sa_reflect_last_blockid(), vacuum_update_keep_from_log_pageid(), xheap_reclaim_addresses(), and xvacuum().

#define VACUUM_ER_LOG_ARCHIVES   2048 /* Log when archives are removed or when vacuum fails to find archives. */
#define VACUUM_ER_LOG_BTREE   8 /* Log vacuum b-trees */
#define VACUUM_ER_LOG_ERROR   1 /* Log vacuum errors */
#define vacuum_er_log_error (   er_log_level,
  msg,
  ... 
)
Value:
_er_log_debug (ARG_FILE_LINE, "VACUUM ERROR " LOG_THREAD_TRAN_MSG ": " msg "\n", \
cubthread::entry * thread_get_thread_entry_info(void)
#define LOG_THREAD_TRAN_MSG
Definition: log_impl.h:796
#define LOG_THREAD_TRAN_ARGS(thread_p)
Definition: log_impl.h:797
void _er_log_debug(const char *file_name, const int line_no, const char *fmt,...)
#define ARG_FILE_LINE
Definition: error_manager.h:44
#define VACUUM_IS_ER_LOG_LEVEL_SET(er_log_level)
Definition: vacuum.h:62
#define VACUUM_ER_LOG_ERROR
Definition: vacuum.h:46

Definition at line 69 of file vacuum.h.

Referenced by heap_remove_page_on_vacuum(), logpb_read_page_from_file(), spage_vacuum_slot(), vacuum_add_dropped_file(), vacuum_collect_heap_objects(), vacuum_consume_buffer_log_blocks(), vacuum_data_empty_page(), vacuum_data_mark_finished(), vacuum_finished_block_vacuum(), vacuum_heap(), vacuum_heap_get_hfid_and_file_type(), vacuum_heap_page(), vacuum_heap_prepare_record(), vacuum_heap_record_insid_and_prev_version(), vacuum_log_prefetch_vacuum_block(), vacuum_process_log_block(), vacuum_process_log_record(), vacuum_produce_log_block_data(), vacuum_rv_redo_add_dropped_file(), vacuum_rv_redo_vacuum_heap_page(), vacuum_rv_replace_dropped_file(), and vacuum_worker_allocate_resources().

#define VACUUM_ER_LOG_FLUSH_DATA   8192 /* Log flushing vacuum data. */

Definition at line 59 of file vacuum.h.

#define VACUUM_ER_LOG_LOGGING   4 /* Log adding MVCC op log entries. */
#define VACUUM_ER_LOG_MASTER   256 /* Log vacuum master specific activity. */
#define VACUUM_ER_LOG_NONE   0 /* No logging */

Definition at line 45 of file vacuum.h.

Referenced by vacuum_find_dropped_file().

#define VACUUM_ER_LOG_TOPOPS   1024 /* Log starting/ending system operations and their recovery. */

Definition at line 56 of file vacuum.h.

Referenced by log_sysop_end_final(), and log_sysop_start().

#define VACUUM_ER_LOG_VERBOSE   0xFFFFFFFF /* Log all activity related to vacuum. */

Definition at line 61 of file vacuum.h.

#define VACUUM_ER_LOG_WARNING   2 /* Log vacuum warnings */

Definition at line 47 of file vacuum.h.

Referenced by vacuum_fetch_log_page(), and vacuum_finished_block_vacuum().

#define vacuum_er_log_warning (   er_log_level,
  msg,
  ... 
)
Value:
_er_log_debug (ARG_FILE_LINE, "VACUUM WARNING " LOG_THREAD_TRAN_MSG ": " msg "\n", \
cubthread::entry * thread_get_thread_entry_info(void)
#define LOG_THREAD_TRAN_MSG
Definition: log_impl.h:796
#define LOG_THREAD_TRAN_ARGS(thread_p)
Definition: log_impl.h:797
void _er_log_debug(const char *file_name, const int line_no, const char *fmt,...)
#define VACUUM_ER_LOG_WARNING
Definition: vacuum.h:47
#define ARG_FILE_LINE
Definition: error_manager.h:44
#define VACUUM_IS_ER_LOG_LEVEL_SET(er_log_level)
Definition: vacuum.h:62

Definition at line 73 of file vacuum.h.

Referenced by btree_key_delete_remove_object(), btree_key_remove_insert_mvccid(), heap_remove_page_on_vacuum(), vacuum_data_mark_finished(), vacuum_finished_block_vacuum(), vacuum_heap_get_hfid_and_file_type(), vacuum_heap_page(), and vacuum_verify_vacuum_data_debug().

#define VACUUM_IS_ER_LOG_LEVEL_SET (   er_log_level)    ((prm_get_integer_value (PRM_ID_ER_LOG_VACUUM) & (er_log_level)) != 0)

Definition at line 62 of file vacuum.h.

Referenced by logpb_remove_archive_logs_exceed_limit().

#define VACUUM_IS_THREAD_VACUUM_MASTER   vacuum_is_thread_vacuum_master

Definition at line 217 of file vacuum.h.

Referenced by spage_save_space(), vacuum_find_dropped_file(), and vacuum_heap_page().

#define VACUUM_LOG_ADD_DROPPED_FILE_POSTPONE   true
#define VACUUM_LOG_ADD_DROPPED_FILE_UNDO   false

Definition at line 79 of file vacuum.h.

Referenced by heap_create_internal(), xbtree_add_index(), and xbtree_load_index().

#define VACUUM_LOG_BLOCK_PAGES_DEFAULT   31

Definition at line 82 of file vacuum.h.

#define VACUUM_MAX_WORKER_COUNT   50

Definition at line 131 of file vacuum.h.

Typedef Documentation

Definition at line 97 of file vacuum.h.

typedef struct vacuum_worker VACUUM_WORKER

Definition at line 105 of file vacuum.h.

Definition at line 91 of file vacuum.h.

Enumeration Type Documentation

Enumerator
VACUUM_WORKER_STATE_INACTIVE 
VACUUM_WORKER_STATE_PROCESS_LOG 
VACUUM_WORKER_STATE_EXECUTE 

Definition at line 85 of file vacuum.h.

Function Documentation

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:

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:

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:

VACUUM_WORKER * vacuum_get_vacuum_worker ( THREAD_ENTRY thread_p)

Definition at line 148 of file vacuum.h.

References assert, and vacuum_is_thread_vacuum().

Referenced by vacuum_fetch_log_page(), vacuum_get_worker_state(), vacuum_log_prefetch_vacuum_block(), vacuum_process_log_block(), and vacuum_set_worker_state().

Here is the caller graph for this function:

VACUUM_WORKER_STATE vacuum_get_worker_state ( 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 
)

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:

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_process_log_for_vacuum ( THREAD_ENTRY thread_p)

Definition at line 209 of file vacuum.h.

References vacuum_is_thread_vacuum(), and vacuum_worker_state_is_process_log().

Referenced by LOG_CS_OWN().

Here is the caller graph for this function:

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:

bool vacuum_is_thread_vacuum ( const THREAD_ENTRY thread_p)

Definition at line 155 of file vacuum.h.

References assert, NULL, TT_VACUUM_MASTER, and TT_VACUUM_WORKER.

Referenced by vacuum_fetch_log_page(), vacuum_get_vacuum_worker(), and vacuum_is_process_log_for_vacuum().

Here is the caller graph for this function:

bool vacuum_is_thread_vacuum_master ( const THREAD_ENTRY thread_p)

Definition at line 169 of file vacuum.h.

References assert, NULL, and TT_VACUUM_MASTER.

bool vacuum_is_thread_vacuum_worker ( const THREAD_ENTRY thread_p)

Definition at line 162 of file vacuum.h.

References assert, NULL, and TT_VACUUM_WORKER.

Referenced by vacuum_check_shutdown_interruption().

Here is the caller graph for this function:

LOG_PAGEID vacuum_min_log_pageid_to_keep ( THREAD_ENTRY thread_p)
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:

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.

void vacuum_set_worker_state ( THREAD_ENTRY thread_p,
VACUUM_WORKER_STATE  state 
)

Definition at line 184 of file vacuum.h.

References vacuum_worker::state, and vacuum_get_vacuum_worker().

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:

bool vacuum_worker_state_is_execute ( THREAD_ENTRY thread_p)

Definition at line 202 of file vacuum.h.

References vacuum_get_worker_state(), and VACUUM_WORKER_STATE_EXECUTE.

Referenced by log_sysop_end_final(), and log_sysop_start().

Here is the caller graph for this function:

bool vacuum_worker_state_is_inactive ( THREAD_ENTRY thread_p)

Definition at line 190 of file vacuum.h.

References vacuum_get_worker_state(), and VACUUM_WORKER_STATE_INACTIVE.

bool vacuum_worker_state_is_process_log ( THREAD_ENTRY thread_p)

Definition at line 196 of file vacuum.h.

References vacuum_get_worker_state(), and VACUUM_WORKER_STATE_PROCESS_LOG.

Referenced by vacuum_is_process_log_for_vacuum().

Here is the caller graph for this function:

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 
)