CUBRID Engine
latest
|
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "slotted_page.h"
#include "storage_common.h"
#include "memory_alloc.h"
#include "error_manager.h"
#include "system_parameter.h"
#include "memory_hash.h"
#include "object_representation.h"
#include "page_buffer.h"
#include "porting_inline.hpp"
#include "log_manager.h"
#include "critical_section.h"
#include "lock_free.h"
#include "mvcc.h"
#include "dbtype.h"
#include "thread_entry.hpp"
#include "thread_lockfree_hash_map.hpp"
#include "thread_manager.hpp"
Go to the source code of this file.
Classes | |
struct | spage_save_entry |
struct | spage_save_head |
struct | spage_header_context |
struct | spage_slots_context |
Macros | |
#define | pthread_mutex_init(a, b) |
#define | pthread_mutex_destroy(a) |
#define | pthread_mutex_lock(a) 0 |
#define | pthread_mutex_trylock(a) 0 |
#define | pthread_mutex_unlock(a) |
#define | SPAGE_SEARCH_NEXT 1 |
#define | SPAGE_SEARCH_PREV -1 |
#define | SPAGE_DB_PAGESIZE (spage_User_page_size != 0 ? assert (spage_User_page_size == db_page_size ()), spage_User_page_size : db_page_size ()) |
#define | SPAGE_VERIFY_HEADER(sphdr) |
#define | SPAGE_OVERFLOW(offset) ((int) (offset) > SPAGE_DB_PAGESIZE) |
Typedefs | |
typedef struct spage_save_entry | SPAGE_SAVE_ENTRY |
typedef struct spage_save_head | SPAGE_SAVE_HEAD |
using | spage_saving_hashmap_type = cubthread::lockfree_hashmap< VPID, spage_save_head > |
typedef struct spage_header_context | SPAGE_HEADER_CONTEXT |
typedef struct spage_slots_context | SPAGE_SLOTS_CONTEXT |
Enumerations | |
enum | { SPAGE_EMPTY_OFFSET = 0 } |
Functions | |
static void * | spage_save_head_alloc (void) |
static int | spage_save_head_free (void *entry_p) |
static int | spage_save_head_init (void *entry_p) |
static int | spage_save_head_uninit (void *entry_p) |
static int | spage_save_space (THREAD_ENTRY *thread_p, SPAGE_HEADER *sphdr, PAGE_PTR pgptr, int save) |
static int | spage_get_saved_spaces (THREAD_ENTRY *thread_p, SPAGE_HEADER *page_header_p, PAGE_PTR page_p, int *other_saved_spaces) |
static int | spage_get_saved_spaces_by_other_trans (THREAD_ENTRY *thread_p, SPAGE_HEADER *sphdr, PAGE_PTR pgptr) |
static int | spage_get_total_saved_spaces (THREAD_ENTRY *thread_p, SPAGE_HEADER *page_header_p, PAGE_PTR page_p) |
static void | spage_dump_saved_spaces_by_other_trans (THREAD_ENTRY *thread_p, FILE *fp, VPID *vpid) |
static int | spage_compare_slot_offset (const void *arg1, const void *arg2) |
static bool | spage_is_slotted_page_type (PAGE_TYPE ptype) |
static int | spage_check_space (THREAD_ENTRY *thread_p, PAGE_PTR page_p, SPAGE_HEADER *page_header_p, int space) |
static void | spage_set_slot (SPAGE_SLOT *slot_p, int offset, int length, INT16 type) |
static int | spage_find_empty_slot (THREAD_ENTRY *thread_p, PAGE_PTR pgptr, int length, INT16 type, SPAGE_SLOT **sptr, int *space, PGSLOTID *slotid) |
static int | spage_find_empty_slot_at (THREAD_ENTRY *thread_p, PAGE_PTR pgptr, PGSLOTID slotid, int length, INT16 type, SPAGE_SLOT **sptr) |
static void | spage_shift_slot_up (PAGE_PTR page_p, SPAGE_HEADER *page_header_p, SPAGE_SLOT *slot_p) |
static void | spage_shift_slot_down (PAGE_PTR page_p, SPAGE_HEADER *page_header_p, SPAGE_SLOT *slot_p) |
static int | spage_add_new_slot (THREAD_ENTRY *thread_p, PAGE_PTR page_p, SPAGE_HEADER *page_header_p, int *out_space_p) |
static int | spage_take_slot_in_use (THREAD_ENTRY *thread_p, PAGE_PTR page_p, SPAGE_HEADER *page_header_p, PGSLOTID slot_id, SPAGE_SLOT *slot_p, int *out_space_p) |
static int | spage_check_record_for_insert (RECDES *record_descriptor_p) |
static int | spage_insert_data (THREAD_ENTRY *thread_p, PAGE_PTR pgptr, RECDES *recdes, void *slotptr) |
static bool | spage_is_record_located_at_end (SPAGE_HEADER *page_header_p, SPAGE_SLOT *slot_p) |
static void | spage_reduce_a_slot (PAGE_PTR page_p) |
static int | spage_check_updatable (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, int record_descriptor_length, SPAGE_SLOT **out_slot_p, int *out_space_p, int *out_old_waste_p, int *out_new_waste_p) |
static int | spage_check_mvcc_updatable (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, int mvcc_delete_record_length, int mvcc_insert_record_length) |
static int | spage_update_record_in_place (PAGE_PTR page_p, SPAGE_HEADER *page_header_p, SPAGE_SLOT *slot_p, const RECDES *record_descriptor_p, int space) |
static int | spage_update_record_after_compact (THREAD_ENTRY *thread_p, PAGE_PTR page_p, SPAGE_HEADER *page_header_p, SPAGE_SLOT *slot_p, const RECDES *record_descriptor_p, int space, int old_waste, int new_waste) |
static SCAN_CODE | spage_search_record (PAGE_PTR page_p, PGSLOTID *out_slot_id_p, RECDES *record_descriptor_p, int is_peeking, int direction, bool skip_empty) |
static const char * | spage_record_type_string (INT16 record_type) |
static void | spage_dump_header (FILE *fp, const SPAGE_HEADER *sphdr) |
static void | spage_dump_header_to_string (char *buffer, int size, const SPAGE_HEADER *page_header_p) |
static void | spage_dump_slots (FILE *fp, const SPAGE_SLOT *sptr, PGNSLOTS nslots, unsigned short alignment) |
static void | spage_dump_record (FILE *Fp, PAGE_PTR page_p, PGSLOTID slot_id, SPAGE_SLOT *slot_p) |
static INLINE bool | spage_is_unknown_slot (PGSLOTID slotid, SPAGE_HEADER *sphdr, SPAGE_SLOT *sptr) __attribute__((ALWAYS_INLINE)) |
static INLINE SPAGE_SLOT * | spage_find_slot (PAGE_PTR pgptr, SPAGE_HEADER *sphdr, PGSLOTID slotid, bool is_unknown_slot_check) __attribute__((ALWAYS_INLINE)) |
static INLINE int | spage_find_slot_for_insert (THREAD_ENTRY *thread_p, PAGE_PTR pgptr, RECDES *recdes, PGSLOTID *slotid, void **slotptr, int *used_space) __attribute__((ALWAYS_INLINE)) |
static SCAN_CODE | spage_get_record_data (PAGE_PTR pgptr, SPAGE_SLOT *sptr, RECDES *recdes, bool ispeeking) |
static bool | spage_has_enough_total_space (THREAD_ENTRY *thread_p, PAGE_PTR pgptr, SPAGE_HEADER *sphdr, int space) |
static bool | spage_has_enough_contiguous_space (THREAD_ENTRY *thread_p, PAGE_PTR pgptr, SPAGE_HEADER *sphdr, int space) |
static int | spage_put_helper (THREAD_ENTRY *thread_p, PAGE_PTR pgptr, PGSLOTID slotid, int offset, const RECDES *recdes, bool is_append) |
static void | spage_add_contiguous_free_space (PAGE_PTR pgptr, int space) |
static void | spage_reduce_contiguous_free_space (PAGE_PTR pgptr, int space) |
static INLINE void | spage_verify_header (PAGE_PTR page_p) __attribute__((ALWAYS_INLINE)) |
bool | spage_is_valid_anchor_type (const INT16 anchor_type) |
void | spage_free_saved_spaces (THREAD_ENTRY *thread_p, void *first_save_entry) |
void | spage_boot (THREAD_ENTRY *thread_p) |
void | spage_finalize (THREAD_ENTRY *thread_p) |
int | spage_slot_size (void) |
int | spage_header_size (void) |
int | spage_max_record_size (void) |
PGNSLOTS | spage_number_of_records (PAGE_PTR page_p) |
PGNSLOTS | spage_number_of_slots (PAGE_PTR page_p) |
int | spage_get_free_space (THREAD_ENTRY *thread_p, PAGE_PTR page_p) |
int | spage_get_free_space_without_saving (THREAD_ENTRY *thread_p, PAGE_PTR page_p, bool *need_update) |
void | spage_set_need_update_best_hint (THREAD_ENTRY *thread_p, PAGE_PTR page_p, bool need_update) |
int | spage_max_space_for_new_record (THREAD_ENTRY *thread_p, PAGE_PTR page_p) |
void | spage_collect_statistics (PAGE_PTR page_p, int *npages, int *nrecords, int *rec_length) |
void | spage_initialize (THREAD_ENTRY *thread_p, PAGE_PTR page_p, INT16 slot_type, unsigned short alignment, bool is_saving) |
int | spage_compact (THREAD_ENTRY *thread_p, PAGE_PTR page_p) |
PGSLOTID | spage_find_free_slot (PAGE_PTR page_p, SPAGE_SLOT **out_slot_p, PGSLOTID start_slot) |
int | spage_insert (THREAD_ENTRY *thread_p, PAGE_PTR page_p, RECDES *record_descriptor_p, PGSLOTID *out_slot_id_p) |
int | spage_insert_at (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, RECDES *record_descriptor_p) |
int | spage_insert_for_recovery (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, RECDES *record_descriptor_p) |
PGSLOTID | spage_delete (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id) |
PGSLOTID | spage_delete_for_recovery (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id) |
int | spage_update (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, const RECDES *record_descriptor_p) |
bool | spage_is_updatable (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, int record_descriptor_length) |
bool | spage_is_mvcc_updatable (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, int delete_record_length, int insert_record_length) |
void | spage_update_record_type (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, INT16 record_type) |
bool | spage_reclaim (THREAD_ENTRY *thread_p, PAGE_PTR page_p) |
int | spage_split (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, int offset, PGSLOTID *out_new_slot_id_p) |
int | spage_take_out (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, int takeout_offset, int takeout_length) |
int | spage_append (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, const RECDES *record_descriptor_p) |
int | spage_put (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, int offset, const RECDES *record_descriptor_p) |
int | spage_overwrite (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, int overwrite_offset, const RECDES *record_descriptor_p) |
int | spage_merge (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID first_slot_id, PGSLOTID second_slot_id) |
SCAN_CODE | spage_next_record (PAGE_PTR page_p, PGSLOTID *out_slot_id_p, RECDES *record_descriptor_p, int is_peeking) |
SCAN_CODE | spage_previous_record (PAGE_PTR page_p, PGSLOTID *out_slot_id_p, RECDES *record_descriptor_p, int is_peeking) |
SCAN_CODE | spage_get_record (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id, RECDES *record_descriptor_p, int is_peeking) |
int | spage_get_record_length (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id) |
int | spage_get_space_for_record (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id) |
INT16 | spage_get_record_type (PAGE_PTR page_p, PGSLOTID slot_id) |
int | spage_mark_deleted_slot_as_reusable (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id) |
bool | spage_is_slot_exist (PAGE_PTR page_p, PGSLOTID slot_id) |
const char * | spage_anchor_flag_string (const INT16 anchor_type) |
const char * | spage_alignment_string (unsigned short alignment) |
void | spage_dump (THREAD_ENTRY *thread_p, FILE *fp, PAGE_PTR page_p, int is_record_printed) |
bool | spage_check_num_slots (THREAD_ENTRY *thread_p, PAGE_PTR page_p) |
int | spage_check (THREAD_ENTRY *thread_p, PAGE_PTR page_p) |
int | spage_check_slot_owner (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id) |
SCAN_CODE | spage_next_record_dont_skip_empty (PAGE_PTR page_p, PGSLOTID *out_slot_id_p, RECDES *record_descriptor_p, int is_peeking) |
SCAN_CODE | spage_previous_record_dont_skip_empty (PAGE_PTR page_p, PGSLOTID *out_slot_id_p, RECDES *record_descriptor_p, int is_peeking) |
SCAN_CODE | spage_get_page_header_info (PAGE_PTR page_p, DB_VALUE **page_header_info) |
int | spage_get_record_offset (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slot_id) |
SPAGE_SLOT * | spage_get_slot (PAGE_PTR page_p, PGSLOTID slot_id) |
void | spage_vacuum_slot (THREAD_ENTRY *thread_p, PAGE_PTR page_p, PGSLOTID slotid, bool reusable) |
int | spage_header_start_scan (THREAD_ENTRY *thread_p, int show_type, DB_VALUE **arg_values, int arg_cnt, void **ptr) |
SCAN_CODE | spage_header_next_scan (THREAD_ENTRY *thread_p, int cursor, DB_VALUE **out_values, int out_cnt, void *ptr) |
int | spage_header_end_scan (THREAD_ENTRY *thread_p, void **ptr) |
int | spage_slots_start_scan (THREAD_ENTRY *thread_p, int show_type, DB_VALUE **arg_values, int arg_cnt, void **ptr) |
SCAN_CODE | spage_slots_next_scan (THREAD_ENTRY *thread_p, int cursor, DB_VALUE **out_values, int out_cnt, void *ptr) |
int | spage_slots_end_scan (THREAD_ENTRY *thread_p, void **ptr) |
bool | spage_need_compact (THREAD_ENTRY *thread_p, PAGE_PTR page_p) |
Variables | |
static int | rv |
static PGLENGTH | spage_User_page_size |
static LF_ENTRY_DESCRIPTOR | spage_Saving_entry_descriptor |
static spage_saving_hashmap_type | spage_Saving_hashmap |
#define pthread_mutex_destroy | ( | a | ) |
Definition at line 56 of file slotted_page.c.
Referenced by spage_save_head::~spage_save_head().
#define pthread_mutex_init | ( | a, | |
b | |||
) |
Definition at line 55 of file slotted_page.c.
Referenced by spage_save_head::spage_save_head(), and spage_save_head_alloc().
#define pthread_mutex_lock | ( | a | ) | 0 |
Definition at line 57 of file slotted_page.c.
Referenced by spage_free_saved_spaces().
#define pthread_mutex_trylock | ( | a | ) | 0 |
Definition at line 58 of file slotted_page.c.
#define pthread_mutex_unlock | ( | a | ) |
Definition at line 59 of file slotted_page.c.
Referenced by spage_dump_saved_spaces_by_other_trans(), spage_free_saved_spaces(), spage_get_saved_spaces(), and spage_save_space().
#define SPAGE_DB_PAGESIZE (spage_User_page_size != 0 ? assert (spage_User_page_size == db_page_size ()), spage_User_page_size : db_page_size ()) |
Definition at line 68 of file slotted_page.c.
Referenced by spage_check(), spage_collect_statistics(), spage_compact(), spage_find_slot(), spage_initialize(), spage_insert_data(), spage_is_unknown_slot(), spage_max_record_size(), spage_need_compact(), spage_put_helper(), spage_slots_start_scan(), spage_update_record_after_compact(), and spage_verify_header().
#define SPAGE_OVERFLOW | ( | offset | ) | ((int) (offset) > SPAGE_DB_PAGESIZE) |
Definition at line 118 of file slotted_page.c.
Referenced by spage_get_record_data(), spage_insert_for_recovery(), spage_merge(), spage_overwrite(), spage_put_helper(), spage_split(), spage_take_out(), and spage_update_record_in_place().
#define SPAGE_SEARCH_NEXT 1 |
Definition at line 63 of file slotted_page.c.
Referenced by spage_next_record(), spage_next_record_dont_skip_empty(), and spage_search_record().
#define SPAGE_SEARCH_PREV -1 |
Definition at line 64 of file slotted_page.c.
Referenced by spage_previous_record(), and spage_previous_record_dont_skip_empty().
#define SPAGE_VERIFY_HEADER | ( | sphdr | ) |
Definition at line 71 of file slotted_page.c.
Referenced by spage_add_contiguous_free_space(), spage_add_new_slot(), spage_check(), spage_check_mvcc_updatable(), spage_check_num_slots(), spage_check_slot_owner(), spage_check_updatable(), spage_collect_statistics(), spage_delete(), spage_delete_for_recovery(), spage_find_empty_slot(), spage_find_empty_slot_at(), spage_find_free_slot(), spage_find_slot(), spage_get_free_space(), spage_get_free_space_without_saving(), spage_get_page_header_info(), spage_get_record(), spage_get_record_length(), spage_get_record_offset(), spage_get_record_type(), spage_get_saved_spaces(), spage_get_slot(), spage_get_space_for_record(), spage_has_enough_contiguous_space(), spage_has_enough_total_space(), spage_insert_at(), spage_insert_for_recovery(), spage_is_slot_exist(), spage_is_unknown_slot(), spage_mark_deleted_slot_as_reusable(), spage_max_space_for_new_record(), spage_merge(), spage_need_compact(), spage_number_of_records(), spage_number_of_slots(), spage_overwrite(), spage_put_helper(), spage_reclaim(), spage_reduce_a_slot(), spage_reduce_contiguous_free_space(), spage_save_space(), spage_search_record(), spage_set_need_update_best_hint(), spage_shift_slot_down(), spage_shift_slot_up(), spage_split(), spage_take_out(), spage_take_slot_in_use(), spage_update(), spage_update_record_after_compact(), spage_update_record_in_place(), spage_update_record_type(), and spage_vacuum_slot().
typedef struct spage_header_context SPAGE_HEADER_CONTEXT |
Definition at line 157 of file slotted_page.c.
typedef struct spage_save_entry SPAGE_SAVE_ENTRY |
Definition at line 88 of file slotted_page.c.
typedef struct spage_save_head SPAGE_SAVE_HEAD |
Definition at line 89 of file slotted_page.c.
Definition at line 151 of file slotted_page.c.
typedef struct spage_slots_context SPAGE_SLOTS_CONTEXT |
Definition at line 165 of file slotted_page.c.
anonymous enum |
Enumerator | |
---|---|
SPAGE_EMPTY_OFFSET |
Definition at line 83 of file slotted_page.c.
|
static |
Definition at line 4672 of file slotted_page.c.
References spage_header::alignment, ASSERT_ALIGN, spage_header::cont_free, spage_header::offset_to_free_area, SPAGE_VERIFY_HEADER, spage_verify_header(), and spage_header::total_free.
Referenced by spage_merge(), spage_put_helper(), and spage_update_record_after_compact().
|
static |
Definition at line 1576 of file slotted_page.c.
References spage_header::num_slots, REC_UNKNOWN, SP_SUCCESS, spage_check_space(), SPAGE_EMPTY_OFFSET, spage_find_slot(), spage_set_slot(), SPAGE_VERIFY_HEADER, and spage_verify_header().
Referenced by spage_find_empty_slot_at().
const char* spage_alignment_string | ( | unsigned short | alignment | ) |
Definition at line 4166 of file slotted_page.c.
References CHAR_ALIGNMENT, DOUBLE_ALIGNMENT, INT_ALIGNMENT, and SHORT_ALIGNMENT.
Referenced by sort_spage_get_record(), spage_dump_header_to_string(), and spage_header_next_scan().
Definition at line 4139 of file slotted_page.c.
References ANCHORED, ANCHORED_DONT_REUSE_SLOTS, assert, UNANCHORED_ANY_SEQUENCE, and UNANCHORED_KEEP_SEQUENCE.
Referenced by sort_spage_get_record(), spage_dump_header_to_string(), and spage_header_next_scan().
int spage_append | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id, | ||
const RECDES * | record_descriptor_p | ||
) |
Definition at line 3128 of file slotted_page.c.
References spage_put_helper().
void spage_boot | ( | THREAD_ENTRY * | thread_p | ) |
Definition at line 798 of file slotted_page.c.
References assert, db_page_size(), DOUBLE_ALIGNMENT, cubthread::lockfree_hashmap< Key, T >::init(), INT_ALIGNMENT, spage_saving_Ts, spage_User_page_size, and THREAD_TS_SPAGE_SAVING.
Referenced by boot_create_all_volumes(), boot_restart_server(), and xboot_emergency_patch().
int spage_check | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p | ||
) |
Definition at line 4402 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, spage_header::cont_free, DB_ALIGN, ER_ERROR_SEVERITY, er_set(), ER_SP_INVALID_HEADER, i, spage_header::is_saving, NO_ERROR, NULL, spage_header::num_records, spage_header::num_slots, spage_header::offset_to_free_area, spage_slot::offset_to_record, pgbuf_get_page_id(), pgbuf_get_volume_label(), spage_slot::record_length, SPAGE_DB_PAGESIZE, SPAGE_EMPTY_OFFSET, spage_find_slot(), spage_get_saved_spaces(), SPAGE_VERIFY_HEADER, and spage_header::total_free.
Referenced by btree_check_pages(), heap_check_all_pages_by_heapchain(), spage_delete(), spage_delete_for_recovery(), spage_dump(), spage_find_slot_for_insert(), spage_insert_at(), spage_insert_data(), spage_insert_for_recovery(), spage_merge(), spage_overwrite(), spage_put_helper(), spage_reclaim(), spage_split(), spage_take_out(), spage_update(), and spage_vacuum_slot().
|
static |
Definition at line 2307 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, DB_WASTED_ALIGN, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), ER_SP_UNKNOWN_SLOTID, NULL, spage_header::num_slots, pgbuf_get_page_id(), pgbuf_get_volume_label(), spage_slot::record_length, SP_DOESNT_FIT, SP_ERROR, SP_SUCCESS, spage_find_free_slot(), spage_find_slot(), spage_has_enough_contiguous_space(), spage_has_enough_total_space(), spage_max_record_size(), and SPAGE_VERIFY_HEADER.
Referenced by spage_is_mvcc_updatable().
bool spage_check_num_slots | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p | ||
) |
Definition at line 4368 of file slotted_page.c.
References assert, i, NULL, spage_header::num_records, spage_header::num_slots, spage_slot::offset_to_record, SPAGE_EMPTY_OFFSET, spage_find_slot(), and SPAGE_VERIFY_HEADER.
Referenced by btree_merge_node_and_advance(), and btree_split_node_and_advance().
|
static |
Definition at line 1753 of file slotted_page.c.
References recdes::length, REC_DELETED_WILL_REUSE, REC_HOME, REC_MARKDELETED, SP_DOESNT_FIT, SP_SUCCESS, spage_max_record_size(), and recdes::type.
Referenced by spage_find_slot_for_insert(), spage_insert_at(), and spage_insert_for_recovery().
int spage_check_slot_owner | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id | ||
) |
Definition at line 4527 of file slotted_page.c.
References ARG_FILE_LINE, assert, ER_ERROR_SEVERITY, er_set(), ER_SP_UNKNOWN_SLOTID, logtb_find_current_tranid(), NULL, spage_slot::offset_to_record, pgbuf_get_page_id(), pgbuf_get_volume_label(), spage_find_slot(), SPAGE_VERIFY_HEADER, STATIC_INLINE, and spage_save_entry::tranid.
Referenced by heap_prepare_get_context().
|
static |
Definition at line 1352 of file slotted_page.c.
References SP_DOESNT_FIT, SP_ERROR, SP_SUCCESS, spage_has_enough_contiguous_space(), and spage_has_enough_total_space().
Referenced by spage_add_new_slot(), spage_find_empty_slot(), and spage_take_slot_in_use().
|
static |
Definition at line 2231 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, DB_WASTED_ALIGN, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), ER_SP_UNKNOWN_SLOTID, NULL, pgbuf_get_page_id(), pgbuf_get_volume_label(), spage_slot::record_length, SP_DOESNT_FIT, SP_ERROR, SP_SUCCESS, spage_find_slot(), spage_has_enough_total_space(), spage_max_record_size(), and SPAGE_VERIFY_HEADER.
Referenced by spage_is_updatable(), and spage_update().
void spage_collect_statistics | ( | PAGE_PTR | page_p, |
int * | npages, | ||
int * | nrecords, | ||
int * | rec_length | ||
) |
Definition at line 1032 of file slotted_page.c.
References assert, i, NULL, spage_header::num_slots, spage_slot::offset_to_record, REC_BIGONE, REC_HOME, REC_NEWHOME, spage_slot::record_length, spage_slot::record_type, SPAGE_DB_PAGESIZE, SPAGE_EMPTY_OFFSET, spage_find_slot(), and SPAGE_VERIFY_HEADER.
Referenced by heap_stats_sync_bestspace(), and xheap_reclaim_addresses().
int spage_compact | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p | ||
) |
Definition at line 1179 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, ASSERT_ALIGN, assert_release, spage_header::cont_free, DB_ALIGN, ER_ERROR_SEVERITY, ER_FAILED, ER_FATAL_ERROR_SEVERITY, ER_GENERIC_ERROR, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), ER_SP_WRONG_NUM_SLOTS, fileio_get_volume_label(), free_and_init, i, logpb_fatal_error_exit_immediately_wo_flush(), NO_ERROR, NULL, spage_header::num_records, spage_header::num_slots, spage_header::offset_to_free_area, spage_slot::offset_to_record, vpid::pageid, PEEK, pgbuf_get_page_ptype(), pgbuf_get_vpid(), REC_4BIT_USED_TYPE_MAX, spage_slot::record_length, spage_slot::record_type, spage_compare_slot_offset(), SPAGE_DB_PAGESIZE, SPAGE_EMPTY_OFFSET, spage_find_slot(), spage_is_slotted_page_type(), spage_verify_header(), spage_header::total_free, and vpid::volid.
Referenced by heap_compact_pages(), spage_has_enough_contiguous_space(), spage_merge(), spage_put_helper(), spage_split(), spage_update_record_after_compact(), vacuum_heap_page_log_and_reset(), vacuum_rv_redo_vacuum_heap_page(), and vacuum_rv_redo_vacuum_heap_record().
Definition at line 1135 of file slotted_page.c.
Referenced by spage_compact().
PGSLOTID spage_delete | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id | ||
) |
Definition at line 2092 of file slotted_page.c.
References spage_header::alignment, spage_header::anchor_type, ANCHORED, ANCHORED_DONT_REUSE_SLOTS, ARG_FILE_LINE, assert, ASSERT_ALIGN, spage_header::cont_free, DB_WASTED_ALIGN, DONT_FREE, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), ER_SP_UNKNOWN_SLOTID, spage_header::is_saving, NO_ERROR, NULL, NULL_SLOTID, spage_header::num_records, spage_header::offset_to_free_area, spage_slot::offset_to_record, pgbuf_get_page_id(), pgbuf_get_volume_label(), pgbuf_set_dirty(), REC_DELETED_WILL_REUSE, REC_MARKDELETED, spage_slot::record_length, spage_slot::record_type, spage_check(), SPAGE_EMPTY_OFFSET, spage_find_slot(), spage_is_record_located_at_end(), spage_is_valid_anchor_type(), spage_reduce_a_slot(), spage_save_space(), spage_shift_slot_down(), SPAGE_VERIFY_HEADER, spage_verify_header(), spage_header::total_free, UNANCHORED_ANY_SEQUENCE, and UNANCHORED_KEEP_SEQUENCE.
Referenced by btree_delete_key_from_leaf(), btree_delete_meta_record(), btree_merge_node(), btree_rv_nodehdr_undo_insert(), btree_rv_pagerec_delete(), btree_rv_record_modify_internal(), btree_split_node(), btree_split_root(), btree_split_test(), catalog_drop_directory(), catalog_drop_representation_helper(), catalog_put_representation_item(), catalog_rv_delete_redo(), ehash_delete(), ehash_distribute_records_into_two_bucket(), ehash_rv_delete(), ehash_rv_delete_redo(), heap_delete_all_page_records(), heap_delete_physical(), heap_rv_redo_delete(), log_rv_record_modify_internal(), spage_delete_for_recovery(), and spage_merge().
PGSLOTID spage_delete_for_recovery | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id | ||
) |
Definition at line 2185 of file slotted_page.c.
References spage_header::anchor_type, ANCHORED_DONT_REUSE_SLOTS, assert, DONT_FREE, NULL, NULL_SLOTID, spage_slot::offset_to_record, pgbuf_set_dirty(), REC_DELETED_WILL_REUSE, REC_MARKDELETED, spage_slot::record_type, spage_check(), spage_delete(), SPAGE_EMPTY_OFFSET, spage_find_slot(), and SPAGE_VERIFY_HEADER.
Referenced by btree_rv_noderec_undo_insert(), catalog_rv_insert_undo(), heap_rv_undo_insert(), and spage_split().
void spage_dump | ( | THREAD_ENTRY * | thread_p, |
FILE * | fp, | ||
PAGE_PTR | page_p, | ||
int | is_record_printed | ||
) |
Definition at line 4327 of file slotted_page.c.
References spage_header::alignment, assert, i, NULL, spage_header::num_slots, pgbuf_get_page_id(), pgbuf_get_volume_label(), pgbuf_get_vpid_ptr(), spage_check(), spage_dump_header(), spage_dump_record(), spage_dump_saved_spaces_by_other_trans(), spage_dump_slots(), and spage_find_slot().
Referenced by catalog_file_map_page_dump(), and heap_dump().
|
static |
Definition at line 4191 of file slotted_page.c.
References spage_dump_header_to_string().
Referenced by spage_dump().
|
static |
Definition at line 4211 of file slotted_page.c.
References spage_header::alignment, spage_header::anchor_type, spage_header::cont_free, spage_header::is_saving, spage_header::need_update_best_hint, spage_header::num_records, spage_header::num_slots, spage_header::offset_to_free_area, spage_alignment_string(), spage_anchor_flag_string(), and spage_header::total_free.
Referenced by spage_dump_header(), and spage_verify_header().
|
static |
Definition at line 4269 of file slotted_page.c.
References assert, vfid::fileid, for(), i, spage_slot::offset_to_record, db_identifier::pageid, REC_BIGONE, REC_DELETED_WILL_REUSE, REC_MARKDELETED, REC_RELOCATION, spage_slot::record_length, spage_slot::record_type, db_identifier::slotid, SPAGE_EMPTY_OFFSET, vfid::volid, and db_identifier::volid.
Referenced by spage_dump().
|
static |
Definition at line 767 of file slotted_page.c.
References cubthread::lockfree_hashmap< Key, T >::find(), spage_save_head::first, spage_save_head::mutex, spage_save_entry::next, NULL, vpid::pageid, pthread_mutex_unlock, spage_save_entry::saved, spage_save_head::total_saved, spage_save_entry::tranid, vpid::volid, and spage_save_head::vpid.
Referenced by spage_dump().
|
static |
Definition at line 4239 of file slotted_page.c.
References assert, DB_WASTED_ALIGN, i, NULL, spage_slot::offset_to_record, spage_slot::record_length, spage_slot::record_type, SPAGE_EMPTY_OFFSET, and spage_record_type_string().
Referenced by spage_dump().
void spage_finalize | ( | THREAD_ENTRY * | thread_p | ) |
Definition at line 816 of file slotted_page.c.
References cubthread::lockfree_hashmap< Key, T >::destroy().
Referenced by boot_server_all_finalize().
|
static |
Definition at line 1401 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, ASSERT_ALIGN, spage_header::cont_free, DB_WASTED_ALIGN, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), NULL, NULL_SLOTID, spage_header::num_records, spage_header::num_slots, spage_header::offset_to_free_area, SP_DOESNT_FIT, SP_ERROR, SP_SUCCESS, spage_check_space(), spage_find_free_slot(), spage_has_enough_contiguous_space(), spage_has_enough_total_space(), spage_set_slot(), SPAGE_VERIFY_HEADER, spage_verify_header(), and spage_header::total_free.
Referenced by spage_find_slot_for_insert(), and spage_split().
|
static |
Definition at line 1682 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, ASSERT_ALIGN, spage_header::cont_free, DB_WASTED_ALIGN, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), spage_header::is_saving, log_is_in_crash_recovery(), logtb_is_current_active(), NULL, spage_header::num_records, spage_header::num_slots, spage_header::offset_to_free_area, SP_ERROR, SP_SUCCESS, spage_add_new_slot(), spage_find_slot(), spage_set_slot(), spage_take_slot_in_use(), SPAGE_VERIFY_HEADER, spage_verify_header(), and spage_header::total_free.
Referenced by spage_insert_at(), and spage_insert_for_recovery().
PGSLOTID spage_find_free_slot | ( | PAGE_PTR | page_p, |
SPAGE_SLOT ** | out_slot_p, | ||
PGSLOTID | start_slot | ||
) |
Definition at line 1299 of file slotted_page.c.
References ARG_FILE_LINE, assert, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), NULL, spage_header::num_records, spage_header::num_slots, REC_DELETED_WILL_REUSE, spage_slot::record_type, SP_ERROR, spage_find_slot(), and SPAGE_VERIFY_HEADER.
Referenced by heap_get_insert_location_with_lock(), spage_check_mvcc_updatable(), and spage_find_empty_slot().
|
static |
Definition at line 4586 of file slotted_page.c.
References assert, NULL, SPAGE_DB_PAGESIZE, spage_is_unknown_slot(), and SPAGE_VERIFY_HEADER.
Referenced by spage_add_new_slot(), spage_check(), spage_check_mvcc_updatable(), spage_check_num_slots(), spage_check_slot_owner(), spage_check_updatable(), spage_collect_statistics(), spage_compact(), spage_delete(), spage_delete_for_recovery(), spage_dump(), spage_find_empty_slot_at(), spage_find_free_slot(), spage_get_record(), spage_get_record_length(), spage_get_record_offset(), spage_get_record_type(), spage_get_slot(), spage_get_space_for_record(), spage_insert_for_recovery(), spage_is_slot_exist(), spage_mark_deleted_slot_as_reusable(), spage_merge(), spage_overwrite(), spage_put_helper(), spage_reclaim(), spage_reduce_a_slot(), spage_search_record(), spage_shift_slot_down(), spage_shift_slot_up(), spage_slots_start_scan(), spage_split(), spage_take_out(), spage_update_record_type(), and spage_vacuum_slot().
|
static |
Definition at line 1809 of file slotted_page.c.
References assert, recdes::length, NULL, NULL_SLOTID, SP_SUCCESS, spage_check(), spage_check_record_for_insert(), spage_find_empty_slot(), and recdes::type.
Referenced by spage_insert().
void spage_free_saved_spaces | ( | THREAD_ENTRY * | thread_p, |
void * | first_save_entry | ||
) |
Definition at line 382 of file slotted_page.c.
References assert, assert_release, cubthread::lockfree_hashmap< Key, T >::end_tran(), cubthread::lockfree_hashmap< Key, T >::erase_locked(), spage_save_head::first, free_and_init, spage_save_entry::head, logtb_find_current_tranid(), spage_save_head::mutex, spage_save_entry::next, NULL, spage_save_entry::prev, pthread_mutex_lock, pthread_mutex_unlock, rv, spage_save_entry::saved, cubthread::lockfree_hashmap< Key, T >::start_tran(), success(), spage_save_head::total_saved, spage_save_entry::tran_next_save, spage_save_entry::tranid, and spage_save_head::vpid.
Referenced by log_abort_local(), and log_commit_local().
int spage_get_free_space | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p | ||
) |
Definition at line 898 of file slotted_page.c.
References assert, NULL, spage_get_total_saved_spaces(), SPAGE_VERIFY_HEADER, and spage_header::total_free.
Referenced by btree_get_subtree_capacity(), btree_merge_node_and_advance(), btree_node_mergeable(), btree_node_size_uncompressed(), ehash_hash(), and heap_get_capacity().
int spage_get_free_space_without_saving | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
bool * | need_update | ||
) |
Definition at line 925 of file slotted_page.c.
References ARG_FILE_LINE, assert, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), spage_header::need_update_best_hint, NULL, SPAGE_VERIFY_HEADER, and spage_header::total_free.
Referenced by btree_key_insert_does_leaf_need_split(), btree_key_online_index_IB_insert_list(), btree_split_node_and_advance(), heap_delete_physical(), heap_reuse(), heap_stats_update(), vacuum_heap_page(), and xheap_reclaim_addresses().
Definition at line 4730 of file slotted_page.c.
References spage_header::alignment, spage_header::anchor_type, spage_header::cont_free, db_make_int(), HEAP_PAGE_INFO_ALIGNMENT, HEAP_PAGE_INFO_ANCHOR_TYPE, HEAP_PAGE_INFO_CONT_FREE, HEAP_PAGE_INFO_IS_SAVING, HEAP_PAGE_INFO_NUM_RECORDS, HEAP_PAGE_INFO_NUM_SLOTS, HEAP_PAGE_INFO_OFFSET_TO_FREE_AREA, HEAP_PAGE_INFO_TOTAL_FREE, HEAP_PAGE_INFO_UPDATE_BEST, spage_header::is_saving, spage_header::need_update_best_hint, NULL, spage_header::num_records, spage_header::num_slots, spage_header::offset_to_free_area, S_SUCCESS, SPAGE_VERIFY_HEADER, and spage_header::total_free.
Referenced by heap_get_page_info().
SCAN_CODE spage_get_record | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id, | ||
RECDES * | record_descriptor_p, | ||
int | is_peeking | ||
) |
Definition at line 3847 of file slotted_page.c.
References ARG_FILE_LINE, assert, ER_ERROR_SEVERITY, er_set(), ER_SP_UNKNOWN_SLOTID, recdes::length, NULL, pgbuf_get_page_id(), pgbuf_get_volume_label(), S_DOESNT_EXIST, spage_find_slot(), spage_get_record_data(), and SPAGE_VERIFY_HEADER.
Referenced by btree_build_nleafs(), btree_change_root_header_delta(), btree_check_page_key(), btree_check_pages(), btree_compress_node(), btree_delete_key_from_leaf(), btree_delete_meta_record(), btree_delete_overflow_key(), btree_dump_leaf_record(), btree_dump_page(), btree_dump_page_with_subtree(), btree_find_AR_sampling_leaf(), btree_find_boundary_leaf(), btree_find_key_from_leaf(), btree_find_key_from_nleaf(), btree_find_lower_bound_leaf(), btree_find_min_or_max_key(), btree_find_next_index_record_holding_current(), btree_find_oid_from_ovfl(), btree_find_oid_with_page_and_record(), btree_find_split_point(), btree_fix_ovfl_oid_page(), btree_get_next_node_info(), btree_get_node_header(), btree_get_num_visible_oids_from_all_ovf(), btree_get_overflow_header(), btree_get_perf_btree_page_type(), btree_get_root_header(), btree_get_stats_key(), btree_get_subtree_capacity(), btree_get_unique_statistics(), btree_get_value_from_leaf_slot(), btree_is_slot_visible(), btree_key_append_object_to_overflow(), btree_key_delete_remove_object(), btree_key_find_and_insert_delete_mvccid(), btree_key_find_and_lock_unique_of_non_unique(), btree_key_find_and_lock_unique_of_unique(), btree_key_find_first_visible_row_from_all_ovf(), btree_key_find_unique_version_oid(), btree_key_insert_delete_mvccid(), btree_key_insert_new_object(), btree_key_lock_and_append_object_unique(), btree_key_online_index_IB_insert(), btree_key_online_index_tran_delete(), btree_key_online_index_tran_insert(), btree_key_online_index_tran_insert_DF(), btree_key_process_objects(), btree_key_record_check_no_visible(), btree_key_remove_delete_mvccid(), btree_key_remove_insert_mvccid(), btree_key_remove_object_and_keep_visible_first(), btree_leaf_is_key_between_min_max(), btree_merge_node(), btree_merge_node_and_advance(), btree_merge_root(), btree_modify_overflow_link(), btree_node_common_prefix(), btree_node_header_redo_log(), btree_node_header_undo_log(), btree_node_is_compressed(), btree_node_size_uncompressed(), btree_overflow_remove_object(), btree_range_scan_advance_over_filtered_keys(), btree_range_scan_find_fk_any_object(), btree_range_scan_select_visible_oids(), btree_read_record(), btree_repair_prev_link_by_btid(), btree_replace_first_oid_with_ovfl_oid(), btree_rv_nodehdr_undoredo_update(), btree_rv_record_modify_internal(), btree_rv_util_save_page_records(), btree_search_leaf_page(), btree_search_nonleaf_page(), btree_set_split_point(), btree_split_node(), btree_split_root(), btree_split_test(), btree_verify_leaf_node(), btree_verify_nonleaf_node(), btree_verify_subtree(), catalog_adjust_directory_count(), catalog_check_class_consistency(), catalog_drop_representation_helper(), catalog_file_map_find_optimal_page(), catalog_file_map_overflow_count(), catalog_file_map_page_dump(), catalog_get_class_info(), catalog_get_record_from_page(), catalog_get_rep_dir(), catalog_get_representation_record(), catalog_put_record_into_page(), catalog_update_class_info(), ehash_binary_search_bucket(), ehash_delete(), ehash_distribute_records_into_two_bucket(), ehash_dump_bucket(), ehash_find_first_bit_position(), ehash_insert_to_bucket(), ehash_map(), ehash_merge_permanent(), ehash_rv_delete(), ehash_rv_delete_redo(), ehash_search(), record_descriptor::get(), heap_check_all_pages(), heap_copy_chain(), heap_copy_header_stats(), heap_delete_bigone(), heap_delete_home(), heap_delete_logical(), heap_delete_relocation(), heap_dump(), heap_estimate(), heap_flush(), heap_get_chain_ptr(), heap_get_class_oid_from_page(), heap_get_header_stats_ptr(), heap_get_if_diff_chn(), heap_get_last_page(), heap_get_mvcc_header(), heap_get_num_objects(), heap_get_page_info(), heap_get_record_data_when_all_ready(), heap_get_record_info(), heap_header_next_scan(), heap_ovf_find_vfid(), heap_page_get_max_mvccid(), heap_page_get_vacuum_status(), heap_page_rv_chain_update(), heap_page_set_vacuum_status_none(), heap_page_update_chain_after_mvcc_op(), heap_prepare_get_context(), heap_reinitialize_page(), heap_remove_page_on_vacuum(), heap_reuse(), heap_rv_mvcc_redo_delete_internal(), heap_rv_mvcc_undo_delete(), heap_rv_redo_reuse_page(), heap_rv_redo_reuse_page_reuse_oid(), heap_stats_find_best_page(), heap_stats_update_internal(), heap_update_home(), heap_update_logical(), heap_update_relocation(), heap_update_set_prev_version(), heap_vpid_next(), heap_vpid_prev(), heap_vpid_remove(), log_rv_record_modify_internal(), page_key_boundary::set_value(), vacuum_heap_prepare_record(), vacuum_rv_check_at_undo(), vacuum_rv_redo_vacuum_heap_page(), and xheap_reclaim_addresses().
|
static |
Definition at line 3882 of file slotted_page.c.
References recdes::area_size, ARG_FILE_LINE, assert, assert_release, recdes::data, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), recdes::length, NULL, spage_slot::offset_to_record, PEEK, spage_slot::record_length, spage_slot::record_type, S_DOESNT_FIT, S_ERROR, S_SUCCESS, SPAGE_OVERFLOW, and recdes::type.
Referenced by spage_get_record(), and spage_search_record().
int spage_get_record_length | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id | ||
) |
Definition at line 3937 of file slotted_page.c.
References ARG_FILE_LINE, assert, ER_ERROR_SEVERITY, er_set(), ER_SP_UNKNOWN_SLOTID, NULL, pgbuf_get_page_id(), pgbuf_get_volume_label(), spage_slot::record_length, spage_find_slot(), and SPAGE_VERIFY_HEADER.
Referenced by ehash_hash(), and heap_get_capacity().
int spage_get_record_offset | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id | ||
) |
Definition at line 4764 of file slotted_page.c.
References ARG_FILE_LINE, assert, ER_ERROR_SEVERITY, er_set(), ER_SP_UNKNOWN_SLOTID, NULL, spage_slot::offset_to_record, pgbuf_get_page_id(), pgbuf_get_volume_label(), spage_find_slot(), and SPAGE_VERIFY_HEADER.
Definition at line 3997 of file slotted_page.c.
References assert, NULL, REC_DELETED_WILL_REUSE, REC_MARKDELETED, REC_UNKNOWN, spage_slot::record_type, spage_find_slot(), and SPAGE_VERIFY_HEADER.
Referenced by heap_chkreloc_next(), heap_classrepr_get(), heap_delete_logical(), heap_does_exist(), heap_fix_forward_page(), heap_flush(), heap_get_capacity(), heap_get_record_location(), heap_next_internal(), heap_prefetch(), heap_scanrange_to_following(), heap_scanrange_to_prior(), heap_update_logical(), and heap_update_physical().
|
static |
Definition at line 690 of file slotted_page.c.
References assert, cubthread::lockfree_hashmap< Key, T >::find(), spage_save_head::first, log_is_in_crash_recovery(), logtb_find_current_tranid(), spage_save_head::mutex, spage_save_entry::next, NULL, pgbuf_get_vpid_ptr(), pthread_mutex_unlock, spage_save_entry::saved, SPAGE_VERIFY_HEADER, spage_save_head::total_saved, and spage_save_entry::tranid.
Referenced by spage_check(), spage_get_saved_spaces_by_other_trans(), and spage_get_total_saved_spaces().
|
static |
Definition at line 648 of file slotted_page.c.
References assert, and spage_get_saved_spaces().
SPAGE_SLOT* spage_get_slot | ( | PAGE_PTR | page_p, |
PGSLOTID | slot_id | ||
) |
Definition at line 4795 of file slotted_page.c.
References assert, NULL, spage_header::num_slots, spage_find_slot(), and SPAGE_VERIFY_HEADER.
Referenced by btree_is_fence_key(), heap_get_record_info(), heap_is_page_header(), heap_prepare_get_context(), and vacuum_heap_prepare_record().
int spage_get_space_for_record | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id | ||
) |
Definition at line 3966 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, DB_WASTED_ALIGN, ER_ERROR_SEVERITY, er_set(), ER_SP_UNKNOWN_SLOTID, NULL, pgbuf_get_page_id(), pgbuf_get_volume_label(), spage_slot::record_length, spage_find_slot(), spage_slot_size(), and SPAGE_VERIFY_HEADER.
Referenced by btree_find_split_point().
|
static |
Definition at line 666 of file slotted_page.c.
References spage_header::is_saving, and spage_get_saved_spaces().
Referenced by spage_get_free_space(), spage_has_enough_total_space(), and spage_max_space_for_new_record().
|
static |
Definition at line 4656 of file slotted_page.c.
References assert, NO_ERROR, NULL, spage_compact(), and SPAGE_VERIFY_HEADER.
Referenced by spage_check_mvcc_updatable(), spage_check_space(), and spage_find_empty_slot().
|
static |
Definition at line 4616 of file slotted_page.c.
References assert, spage_header::is_saving, logtb_find_current_tranid(), logtb_is_active(), NULL, spage_get_total_saved_spaces(), SPAGE_VERIFY_HEADER, spage_header::total_free, and spage_save_entry::tranid.
Referenced by spage_check_mvcc_updatable(), spage_check_space(), spage_check_updatable(), spage_find_empty_slot(), spage_put_helper(), and spage_split().
int spage_header_end_scan | ( | THREAD_ENTRY * | thread_p, |
void ** | ptr | ||
) |
Definition at line 5048 of file slotted_page.c.
References db_private_free_and_init, NO_ERROR, and NULL.
Referenced by showstmt_scan_init().
SCAN_CODE spage_header_next_scan | ( | THREAD_ENTRY * | thread_p, |
int | cursor, | ||
DB_VALUE ** | out_values, | ||
int | out_cnt, | ||
void * | ptr | ||
) |
Definition at line 4988 of file slotted_page.c.
References spage_header::alignment, spage_header::anchor_type, assert, spage_header::cont_free, db_make_int(), db_make_string(), spage_header::flags, spage_header_context::header, spage_header::is_saving, spage_header::need_update_best_hint, spage_header::num_records, spage_header::num_slots, spage_header::offset_to_free_area, vpid::pageid, S_END, S_SUCCESS, spage_alignment_string(), spage_anchor_flag_string(), spage_header::total_free, vpid::volid, and spage_header_context::vpid.
Referenced by showstmt_scan_init().
int spage_header_size | ( | void | ) |
Definition at line 837 of file slotted_page.c.
Referenced by btree_find_AR_sampling_leaf().
int spage_header_start_scan | ( | THREAD_ENTRY * | thread_p, |
int | show_type, | ||
DB_VALUE ** | arg_values, | ||
int | arg_cnt, | ||
void ** | ptr | ||
) |
Definition at line 4909 of file slotted_page.c.
References ARG_FILE_LINE, assert, ASSERT_ERROR, db_get_int(), db_private_alloc, db_private_free_and_init, DB_TYPE_INTEGER, DB_VALUE_TYPE, ER_DIAG_NOT_SPAGE, ER_DIAG_PAGE_NOT_FOUND, er_errid(), ER_ERROR_SEVERITY, er_set(), error(), spage_header_context::header, NO_ERROR, NULL, vpid::pageid, pgbuf_fix_if_not_deallocated, pgbuf_get_page_ptype(), PGBUF_LATCH_READ, PGBUF_UNCONDITIONAL_LATCH, pgbuf_unfix_and_init, spage_is_slotted_page_type(), vpid::volid, and spage_header_context::vpid.
Referenced by showstmt_scan_init().
void spage_initialize | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
INT16 | slot_type, | ||
unsigned short | alignment, | ||
bool | is_saving | ||
) |
Definition at line 1099 of file slotted_page.c.
References spage_header::alignment, spage_header::anchor_type, assert, CHAR_ALIGNMENT, spage_header::cont_free, DB_ALIGN, DONT_FREE, DOUBLE_ALIGNMENT, spage_header::flags, FLOAT_ALIGNMENT, INT_ALIGNMENT, spage_header::is_saving, LONG_ALIGNMENT, spage_header::need_update_best_hint, NULL, spage_header::num_records, spage_header::num_slots, spage_header::offset_to_free_area, pgbuf_set_dirty(), spage_header::reserved1, spage_header::reserved_bits, SHORT_ALIGNMENT, SPAGE_DB_PAGESIZE, SPAGE_HEADER_FLAG_NONE, spage_is_valid_anchor_type(), and spage_header::total_free.
Referenced by btree_initialize_new_page(), btree_rv_newpage_redo_init(), catalog_initialize_new_page(), catalog_rv_new_page_redo(), ehash_initialize_bucket_new_page(), ehash_rv_init_bucket_redo(), heap_create_internal(), heap_reinitialize_page(), heap_rv_redo_newpage(), heap_vpid_init_new(), and spage_reclaim().
int spage_insert | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
RECDES * | record_descriptor_p, | ||
PGSLOTID * | out_slot_id_p | ||
) |
Definition at line 1777 of file slotted_page.c.
References assert, NULL, SP_SUCCESS, spage_find_slot_for_insert(), spage_insert_data(), and STATIC_INLINE.
Referenced by btree_connect_page(), btree_construct_leafs(), btree_merge_node(), btree_save_last_leafrec(), catalog_add_class_info(), catalog_initialize_new_page(), catalog_insert_representation_item(), catalog_put_record_into_page(), catalog_rv_new_page_redo(), ehash_distribute_records_into_two_bucket(), ehash_initialize_bucket_new_page(), ehash_rv_init_bucket_redo(), heap_create_internal(), heap_find_location_and_insert_rec_newhome(), heap_reinitialize_page(), heap_rv_redo_newpage(), and heap_vpid_init_new().
int spage_insert_at | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id, | ||
RECDES * | record_descriptor_p | ||
) |
Definition at line 1910 of file slotted_page.c.
References ARG_FILE_LINE, assert, ER_ERROR_SEVERITY, er_set(), ER_SP_UNKNOWN_SLOTID, recdes::length, NULL, spage_header::num_slots, pgbuf_get_page_id(), pgbuf_get_volume_label(), SP_ERROR, SP_SUCCESS, spage_check(), spage_check_record_for_insert(), spage_find_empty_slot_at(), spage_insert_data(), SPAGE_VERIFY_HEADER, and recdes::type.
Referenced by btree_init_node_header(), btree_init_overflow_header(), btree_init_root_header(), btree_key_insert_new_key(), btree_merge_root(), btree_rv_nodehdr_redo_insert(), btree_rv_noderec_redo_insert(), btree_rv_pagerec_insert(), btree_rv_record_modify_internal(), btree_split_node(), btree_split_root(), btree_split_test(), btree_start_overflow_page(), ehash_insert_to_bucket(), ehash_merge_permanent(), heap_insert_physical(), log_rv_record_modify_internal(), and spage_insert_for_recovery().
|
static |
Definition at line 1849 of file slotted_page.c.
References ARG_FILE_LINE, assert, assert_release, recdes::data, DONT_FREE, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), recdes::length, logtb_find_current_tranid(), NULL, spage_slot::offset_to_record, pgbuf_set_dirty(), REC_ASSIGN_ADDRESS, SP_ERROR, SP_SUCCESS, spage_check(), SPAGE_DB_PAGESIZE, and recdes::type.
Referenced by spage_insert(), and spage_insert_at().
int spage_insert_for_recovery | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id, | ||
RECDES * | record_descriptor_p | ||
) |
Definition at line 1970 of file slotted_page.c.
References spage_header::anchor_type, ANCHORED, ANCHORED_DONT_REUSE_SLOTS, ARG_FILE_LINE, assert, assert_release, recdes::data, DONT_FREE, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), recdes::length, NULL, spage_slot::offset_to_record, pgbuf_set_dirty(), REC_ASSIGN_ADDRESS, REC_DELETED_WILL_REUSE, spage_slot::record_type, SP_ERROR, SP_SUCCESS, spage_check(), spage_check_record_for_insert(), SPAGE_EMPTY_OFFSET, spage_find_empty_slot_at(), spage_find_slot(), spage_insert_at(), SPAGE_OVERFLOW, SPAGE_VERIFY_HEADER, and recdes::type.
Referenced by catalog_rv_insert_redo(), ehash_rv_insert_redo(), heap_rv_mvcc_redo_insert(), heap_rv_mvcc_redo_redistribute(), and heap_rv_redo_insert().
bool spage_is_mvcc_updatable | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id, | ||
int | delete_record_length, | ||
int | insert_record_length | ||
) |
Definition at line 2664 of file slotted_page.c.
References SP_SUCCESS, and spage_check_mvcc_updatable().
|
static |
Definition at line 2047 of file slotted_page.c.
References spage_header::alignment, assert, DB_WASTED_ALIGN, spage_header::offset_to_free_area, spage_slot::offset_to_record, and spage_slot::record_length.
Referenced by spage_delete(), spage_merge(), spage_put_helper(), spage_take_out(), spage_update_record_after_compact(), and spage_update_record_in_place().
Definition at line 4078 of file slotted_page.c.
References assert, NULL, REC_DELETED_WILL_REUSE, REC_MARKDELETED, spage_slot::record_type, spage_find_slot(), and SPAGE_VERIFY_HEADER.
Referenced by heap_does_exist().
Definition at line 1155 of file slotted_page.c.
References PAGE_BTREE, PAGE_CATALOG, PAGE_EHASH, and PAGE_HEAP.
Referenced by spage_compact(), spage_header_start_scan(), and spage_slots_start_scan().
|
static |
Definition at line 4560 of file slotted_page.c.
References assert, assert_release, NULL, spage_header::num_slots, spage_slot::offset_to_record, SPAGE_DB_PAGESIZE, SPAGE_EMPTY_OFFSET, SPAGE_VERIFY_HEADER, and STATIC_INLINE.
Referenced by spage_find_slot().
bool spage_is_updatable | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id, | ||
int | record_descriptor_length | ||
) |
Definition at line 2643 of file slotted_page.c.
References NULL, SP_SUCCESS, and spage_check_updatable().
Referenced by heap_delete_home(), heap_delete_relocation(), heap_update_home(), heap_update_relocation(), and serial_update_serial_object().
Definition at line 364 of file slotted_page.c.
References ANCHORED, ANCHORED_DONT_REUSE_SLOTS, assert, UNANCHORED_ANY_SEQUENCE, and UNANCHORED_KEEP_SEQUENCE.
Referenced by sort_spage_initialize(), spage_delete(), spage_initialize(), and spage_vacuum_slot().
int spage_mark_deleted_slot_as_reusable | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id | ||
) |
Definition at line 4025 of file slotted_page.c.
References ARG_FILE_LINE, assert, ER_ERROR_SEVERITY, er_set(), ER_SP_BAD_INSERTION_SLOT, ER_SP_UNKNOWN_SLOTID, NULL, spage_header::num_slots, spage_slot::offset_to_record, pgbuf_get_page_id(), pgbuf_get_volume_label(), REC_DELETED_WILL_REUSE, REC_MARKDELETED, spage_slot::record_type, SP_ERROR, SP_SUCCESS, SPAGE_EMPTY_OFFSET, spage_find_slot(), and SPAGE_VERIFY_HEADER.
Referenced by heap_rv_redo_mark_reusable_slot().
int spage_max_record_size | ( | void | ) |
Definition at line 848 of file slotted_page.c.
References SPAGE_DB_PAGESIZE.
Referenced by catalog_initialize(), heap_manager_initialize(), heap_nonheader_page_capacity(), spage_check_mvcc_updatable(), spage_check_record_for_insert(), spage_check_updatable(), and spage_put_helper().
int spage_max_space_for_new_record | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p | ||
) |
Definition at line 984 of file slotted_page.c.
References spage_header::alignment, spage_header::anchor_type, ANCHORED_DONT_REUSE_SLOTS, assert, DB_ALIGN_BELOW, NULL, spage_header::num_records, spage_header::num_slots, spage_get_total_saved_spaces(), SPAGE_VERIFY_HEADER, and spage_header::total_free.
Referenced by btree_connect_page(), btree_construct_leafs(), btree_find_AR_sampling_leaf(), btree_find_free_overflow_oids_page(), btree_key_insert_does_leaf_need_split(), btree_save_last_leafrec(), catalog_add_class_info(), catalog_add_representation(), catalog_create(), catalog_drop_all_representation_and_class(), catalog_drop_old_representations(), catalog_drop_representation_helper(), catalog_drop_representation_item(), catalog_file_map_find_optimal_page(), catalog_find_optimal_page(), catalog_insert_representation_item(), catalog_put_record_into_page(), catalog_put_representation_item(), ehash_check_merge_possible(), ehash_delete(), ehash_insert_to_bucket(), ehash_merge(), heap_create_internal(), heap_get_insert_location_with_lock(), heap_stats_find_page_in_bestspace(), and heap_stats_sync_bestspace().
int spage_merge | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | first_slot_id, | ||
PGSLOTID | second_slot_id | ||
) |
Definition at line 3483 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, ASSERT_ALIGN, assert_release, spage_header::cont_free, DB_WASTED_ALIGN, DONT_FREE, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), ER_SP_UNKNOWN_SLOTID, free_and_init, spage_header::is_saving, NO_ERROR, NULL, spage_header::num_records, spage_header::offset_to_free_area, spage_slot::offset_to_record, pgbuf_get_page_id(), pgbuf_get_volume_label(), pgbuf_set_dirty(), spage_slot::record_length, SP_ERROR, SP_SUCCESS, spage_add_contiguous_free_space(), spage_check(), spage_compact(), spage_delete(), SPAGE_EMPTY_OFFSET, spage_find_slot(), spage_is_record_located_at_end(), SPAGE_OVERFLOW, spage_reduce_contiguous_free_space(), spage_save_space(), SPAGE_VERIFY_HEADER, spage_verify_header(), and spage_header::total_free.
bool spage_need_compact | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p | ||
) |
Definition at line 5249 of file slotted_page.c.
References assert, spage_header::cont_free, NULL, SPAGE_DB_PAGESIZE, SPAGE_VERIFY_HEADER, and spage_header::total_free.
Referenced by vacuum_heap_page_log_and_reset(), vacuum_rv_redo_vacuum_heap_page(), and vacuum_rv_redo_vacuum_heap_record().
SCAN_CODE spage_next_record | ( | PAGE_PTR | page_p, |
PGSLOTID * | out_slot_id_p, | ||
RECDES * | record_descriptor_p, | ||
int | is_peeking | ||
) |
Definition at line 3781 of file slotted_page.c.
References SPAGE_SEARCH_NEXT, and spage_search_record().
Referenced by ehash_check_merge_possible(), ehash_dump_bucket(), ehash_locate_slot(), ehash_map(), ehash_split_bucket(), heap_chkreloc_next(), heap_delete_all_page_records(), heap_get_capacity(), heap_next_internal(), heap_prefetch(), heap_scanrange_to_following(), and redistribute_partition_data().
SCAN_CODE spage_next_record_dont_skip_empty | ( | PAGE_PTR | page_p, |
PGSLOTID * | out_slot_id_p, | ||
RECDES * | record_descriptor_p, | ||
int | is_peeking | ||
) |
Definition at line 4699 of file slotted_page.c.
References SPAGE_SEARCH_NEXT, and spage_search_record().
Referenced by heap_next_internal().
Definition at line 860 of file slotted_page.c.
References assert, NULL, spage_header::num_records, and SPAGE_VERIFY_HEADER.
Referenced by btree_construct_leafs(), btree_node_number_of_keys(), btree_save_last_leafrec(), catalog_create(), ehash_check_merge_possible(), ehash_delete(), ehash_dump_bucket(), ehash_hash(), ehash_locate_slot(), ehash_map(), ehash_merge(), ehash_split_bucket(), heap_get_capacity(), heap_remove_page_on_vacuum(), vacuum_heap_page(), and xheap_reclaim_addresses().
Definition at line 879 of file slotted_page.c.
References assert, NULL, spage_header::num_slots, and SPAGE_VERIFY_HEADER.
Referenced by btree_merge_node_and_advance(), heap_get_insert_location_with_lock(), heap_reuse(), and heap_vacuum_all_objects().
int spage_overwrite | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id, | ||
int | overwrite_offset, | ||
const RECDES * | record_descriptor_p | ||
) |
Definition at line 3418 of file slotted_page.c.
References ARG_FILE_LINE, assert, assert_release, recdes::data, DONT_FREE, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), ER_SP_OVERWRITE_WRONG_OFFSET, ER_SP_UNKNOWN_SLOTID, recdes::length, NULL, spage_slot::offset_to_record, pgbuf_get_page_id(), pgbuf_get_volume_label(), pgbuf_set_dirty(), spage_slot::record_length, SP_ERROR, SP_SUCCESS, spage_check(), spage_find_slot(), SPAGE_OVERFLOW, and SPAGE_VERIFY_HEADER.
SCAN_CODE spage_previous_record | ( | PAGE_PTR | page_p, |
PGSLOTID * | out_slot_id_p, | ||
RECDES * | record_descriptor_p, | ||
int | is_peeking | ||
) |
Definition at line 3815 of file slotted_page.c.
References SPAGE_SEARCH_PREV, and spage_search_record().
Referenced by heap_next_internal(), heap_prefetch(), and heap_scanrange_to_prior().
SCAN_CODE spage_previous_record_dont_skip_empty | ( | PAGE_PTR | page_p, |
PGSLOTID * | out_slot_id_p, | ||
RECDES * | record_descriptor_p, | ||
int | is_peeking | ||
) |
Definition at line 4716 of file slotted_page.c.
References SPAGE_SEARCH_PREV, and spage_search_record().
Referenced by heap_next_internal().
int spage_put | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id, | ||
int | offset, | ||
const RECDES * | record_descriptor_p | ||
) |
Definition at line 3143 of file slotted_page.c.
References spage_put_helper().
|
static |
Definition at line 3159 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, ASSERT_ALIGN, assert_release, spage_header::cont_free, recdes::data, DB_WASTED_ALIGN, DONT_FREE, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), ER_SP_UNKNOWN_SLOTID, free_and_init, spage_header::is_saving, recdes::length, NO_ERROR, NULL, spage_header::num_records, spage_header::offset_to_free_area, spage_slot::offset_to_record, pgbuf_get_page_id(), pgbuf_get_volume_label(), pgbuf_set_dirty(), spage_slot::record_length, SP_DOESNT_FIT, SP_ERROR, SP_SUCCESS, spage_add_contiguous_free_space(), spage_check(), spage_compact(), SPAGE_DB_PAGESIZE, SPAGE_EMPTY_OFFSET, spage_find_slot(), spage_has_enough_total_space(), spage_is_record_located_at_end(), spage_max_record_size(), SPAGE_OVERFLOW, spage_reduce_contiguous_free_space(), spage_save_space(), SPAGE_VERIFY_HEADER, spage_verify_header(), and spage_header::total_free.
Referenced by spage_append(), and spage_put().
bool spage_reclaim | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p | ||
) |
Definition at line 2723 of file slotted_page.c.
References spage_header::alignment, spage_header::anchor_type, ANCHORED_DONT_REUSE_SLOTS, assert, DONT_FREE, spage_header::is_saving, NULL, spage_header::num_slots, spage_slot::offset_to_record, pgbuf_set_dirty(), REC_DELETED_WILL_REUSE, REC_MARKDELETED, spage_slot::record_type, spage_check(), SPAGE_EMPTY_OFFSET, spage_find_slot(), spage_initialize(), spage_reduce_a_slot(), and SPAGE_VERIFY_HEADER.
Referenced by xheap_reclaim_addresses().
|
static |
Definition at line 4106 of file slotted_page.c.
References assert, REC_4BIT_USED_TYPE_MAX, REC_ASSIGN_ADDRESS, REC_BIGONE, REC_DELETED_WILL_REUSE, REC_HOME, REC_MARKDELETED, REC_NEWHOME, REC_RELOCATION, and REC_UNKNOWN.
Referenced by spage_dump_slots(), and spage_slots_next_scan().
|
static |
Definition at line 2065 of file slotted_page.c.
References spage_header::cont_free, spage_header::num_slots, REC_UNKNOWN, SPAGE_EMPTY_OFFSET, spage_find_slot(), spage_set_slot(), SPAGE_VERIFY_HEADER, spage_verify_header(), and spage_header::total_free.
Referenced by spage_delete(), and spage_reclaim().
|
static |
Definition at line 4881 of file slotted_page.c.
References spage_header::alignment, ASSERT_ALIGN, spage_header::cont_free, spage_header::offset_to_free_area, SPAGE_VERIFY_HEADER, spage_verify_header(), and spage_header::total_free.
Referenced by spage_merge(), spage_put_helper(), and spage_split().
|
static |
Definition at line 256 of file slotted_page.c.
References spage_save_head::mutex, NULL, and pthread_mutex_init.
|
static |
Definition at line 275 of file slotted_page.c.
References NO_ERROR.
|
static |
Definition at line 287 of file slotted_page.c.
References spage_save_head::first, NO_ERROR, NULL, NULL_PAGEID, vpid::pageid, spage_save_head::total_saved, vpid::volid, and spage_save_head::vpid.
|
static |
Definition at line 308 of file slotted_page.c.
References spage_save_head::first, spage_save_entry::next, NO_ERROR, NULL, and STATIC_INLINE.
|
static |
Definition at line 477 of file slotted_page.c.
References assert, ER_FAILED, cubthread::lockfree_hashmap< Key, T >::find_or_insert(), spage_save_head::first, log_tdes::first_save_entry, spage_save_entry::head, LOG_FIND_CURRENT_TDES(), LOG_FIND_TDES(), LOG_FIND_THREAD_TRAN_INDEX, log_is_in_crash_recovery(), logtb_find_current_tranid(), logtb_is_active(), spage_save_head::mutex, spage_save_entry::next, NO_ERROR, NULL, pgbuf_get_vpid_ptr(), spage_save_entry::prev, pthread_mutex_unlock, spage_save_entry::saved, SPAGE_VERIFY_HEADER, spage_save_head::total_saved, spage_save_entry::tran_next_save, spage_save_entry::tranid, VACUUM_IS_THREAD_VACUUM_MASTER, and VACUUM_IS_THREAD_VACUUM_WORKER.
Referenced by spage_delete(), spage_merge(), spage_put_helper(), spage_split(), spage_take_out(), and spage_update().
|
static |
Definition at line 3689 of file slotted_page.c.
References assert, recdes::data, recdes::length, NULL, spage_header::num_slots, spage_slot::offset_to_record, S_END, S_SUCCESS, SPAGE_EMPTY_OFFSET, spage_find_slot(), spage_get_record_data(), SPAGE_SEARCH_NEXT, and SPAGE_VERIFY_HEADER.
Referenced by spage_next_record(), spage_next_record_dont_skip_empty(), spage_previous_record(), and spage_previous_record_dont_skip_empty().
void spage_set_need_update_best_hint | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
bool | need_update | ||
) |
Definition at line 962 of file slotted_page.c.
References assert, spage_header::need_update_best_hint, NULL, and SPAGE_VERIFY_HEADER.
Referenced by heap_stats_update().
|
static |
Definition at line 1376 of file slotted_page.c.
References assert, spage_slot::offset_to_record, REC_4BIT_USED_TYPE_MAX, REC_UNKNOWN, spage_slot::record_length, and spage_slot::record_type.
Referenced by spage_add_new_slot(), spage_find_empty_slot(), spage_find_empty_slot_at(), spage_reduce_a_slot(), spage_shift_slot_down(), spage_shift_slot_up(), and spage_update_record_after_compact().
|
static |
Definition at line 1539 of file slotted_page.c.
References spage_header::anchor_type, assert, NULL, spage_header::num_slots, spage_slot::offset_to_record, REC_UNKNOWN, spage_slot::record_length, spage_slot::record_type, SPAGE_EMPTY_OFFSET, spage_find_slot(), spage_set_slot(), SPAGE_VERIFY_HEADER, and UNANCHORED_ANY_SEQUENCE.
Referenced by spage_delete().
|
static |
Definition at line 1501 of file slotted_page.c.
References spage_header::anchor_type, assert, NULL, spage_header::num_slots, spage_slot::offset_to_record, REC_UNKNOWN, spage_slot::record_length, spage_slot::record_type, SPAGE_EMPTY_OFFSET, spage_find_slot(), spage_set_slot(), SPAGE_VERIFY_HEADER, and UNANCHORED_ANY_SEQUENCE.
Referenced by spage_take_slot_in_use().
int spage_slot_size | ( | void | ) |
Definition at line 827 of file slotted_page.c.
Referenced by btree_find_AR_sampling_leaf(), btree_find_split_point(), btree_get_max_new_data_size(), ehash_hash(), heap_get_capacity(), heap_manager_initialize(), locator_multi_insert_force(), and spage_get_space_for_record().
int spage_slots_end_scan | ( | THREAD_ENTRY * | thread_p, |
void ** | ptr | ||
) |
Definition at line 5223 of file slotted_page.c.
References db_private_free, NO_ERROR, NULL, and spage_slots_context::pgptr.
Referenced by showstmt_scan_init().
SCAN_CODE spage_slots_next_scan | ( | THREAD_ENTRY * | thread_p, |
int | cursor, | ||
DB_VALUE ** | out_values, | ||
int | out_cnt, | ||
void * | ptr | ||
) |
Definition at line 5166 of file slotted_page.c.
References spage_header::alignment, assert, db_make_int(), db_make_string(), DB_WASTED_ALIGN, if(), spage_header::num_slots, spage_slot::offset_to_record, vpid::pageid, spage_slots_context::pgptr, spage_slot::record_length, spage_slot::record_type, S_END, S_SUCCESS, spage_slots_context::slot, spage_record_type_string(), vpid::volid, and spage_slots_context::vpid.
Referenced by showstmt_scan_init().
int spage_slots_start_scan | ( | THREAD_ENTRY * | thread_p, |
int | show_type, | ||
DB_VALUE ** | arg_values, | ||
int | arg_cnt, | ||
void ** | ptr | ||
) |
Definition at line 5069 of file slotted_page.c.
References ARG_FILE_LINE, assert, ASSERT_ERROR, db_get_int(), db_private_alloc, db_private_free, db_private_free_and_init, DB_TYPE_INTEGER, DB_VALUE_TYPE, ER_DIAG_NOT_SPAGE, ER_DIAG_PAGE_NOT_FOUND, er_errid(), ER_ERROR_SEVERITY, er_set(), error(), NO_ERROR, NULL, vpid::pageid, pgbuf_fix_if_not_deallocated, pgbuf_get_page_ptype(), PGBUF_LATCH_READ, PGBUF_UNCONDITIONAL_LATCH, pgbuf_unfix_and_init, spage_slots_context::pgptr, spage_slots_context::slot, SPAGE_DB_PAGESIZE, spage_find_slot(), spage_is_slotted_page_type(), vpid::volid, and spage_slots_context::vpid.
Referenced by showstmt_scan_init().
int spage_split | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id, | ||
int | offset, | ||
PGSLOTID * | out_new_slot_id_p | ||
) |
Definition at line 2794 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, ASSERT_ALIGN, assert_release, spage_header::cont_free, DB_WASTED_ALIGN, DONT_FREE, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), ER_SP_SPLIT_WRONG_OFFSET, ER_SP_UNKNOWN_SLOTID, free_and_init, spage_header::is_saving, NO_ERROR, NULL, NULL_SLOTID, spage_header::num_records, spage_header::offset_to_free_area, spage_slot::offset_to_record, pgbuf_get_page_id(), pgbuf_get_volume_label(), pgbuf_set_dirty(), spage_slot::record_length, spage_slot::record_type, SP_DOESNT_FIT, SP_ERROR, SP_SUCCESS, spage_check(), spage_compact(), spage_delete_for_recovery(), SPAGE_EMPTY_OFFSET, spage_find_empty_slot(), spage_find_slot(), spage_has_enough_total_space(), SPAGE_OVERFLOW, spage_reduce_contiguous_free_space(), spage_save_space(), SPAGE_VERIFY_HEADER, spage_verify_header(), and spage_header::total_free.
int spage_take_out | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id, | ||
int | takeout_offset, | ||
int | takeout_length | ||
) |
Definition at line 2991 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, ASSERT_ALIGN, assert_release, spage_header::cont_free, DB_WASTED_ALIGN, DONT_FREE, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), ER_SP_TAKEOUT_WRONG_OFFSET, ER_SP_UNKNOWN_SLOTID, spage_header::is_saving, NO_ERROR, NULL, spage_header::offset_to_free_area, spage_slot::offset_to_record, pgbuf_get_page_id(), pgbuf_get_volume_label(), pgbuf_set_dirty(), spage_slot::record_length, SP_ERROR, SP_SUCCESS, spage_check(), spage_find_slot(), spage_is_record_located_at_end(), SPAGE_OVERFLOW, spage_save_space(), SPAGE_VERIFY_HEADER, spage_verify_header(), and spage_header::total_free.
|
static |
Definition at line 1616 of file slotted_page.c.
References spage_header::anchor_type, ANCHORED, ANCHORED_DONT_REUSE_SLOTS, ARG_FILE_LINE, assert, ER_ERROR_SEVERITY, er_set(), ER_SP_BAD_INSERTION_SLOT, spage_header::num_slots, pgbuf_get_page_id(), pgbuf_get_volume_label(), REC_DELETED_WILL_REUSE, spage_slot::record_type, SP_ERROR, SP_SUCCESS, spage_check_space(), spage_shift_slot_up(), SPAGE_VERIFY_HEADER, and spage_verify_header().
Referenced by spage_find_empty_slot_at().
int spage_update | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id, | ||
const RECDES * | record_descriptor_p | ||
) |
Definition at line 2562 of file slotted_page.c.
References ARG_FILE_LINE, assert, DONT_FREE, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), spage_header::is_saving, recdes::length, NO_ERROR, NULL, pgbuf_get_latch_mode(), PGBUF_LATCH_WRITE, pgbuf_set_dirty(), spage_slot::record_length, SP_ERROR, SP_SUCCESS, spage_check(), spage_check_updatable(), spage_save_space(), spage_update_record_after_compact(), spage_update_record_in_place(), SPAGE_VERIFY_HEADER, and spage_header::total_free.
Referenced by btree_build_nleafs(), btree_compress_node(), btree_insert_mvcc_delid_into_page(), btree_key_append_object_as_new_overflow(), btree_key_append_object_non_unique(), btree_key_append_object_to_overflow(), btree_key_append_object_unique(), btree_key_online_index_IB_insert(), btree_key_online_index_tran_delete(), btree_key_online_index_tran_insert(), btree_key_online_index_tran_insert_DF(), btree_key_relocate_last_into_ovf(), btree_key_remove_delete_mvccid_non_unique(), btree_key_remove_delete_mvccid_unique(), btree_key_remove_insert_mvccid(), btree_key_remove_object_and_keep_visible_first(), btree_leaf_record_replace_first_with_last(), btree_modify_leaf_ovfl_vpid(), btree_modify_overflow_link(), btree_overflow_record_replace_object(), btree_record_remove_object(), btree_replace_first_oid_with_ovfl_oid(), btree_rv_nodehdr_undoredo_update(), btree_rv_noderec_undoredo_update(), btree_rv_record_modify_internal(), catalog_adjust_directory_count(), catalog_drop_old_representations(), catalog_drop_representation_helper(), catalog_drop_representation_item(), catalog_put_record_into_page(), catalog_put_representation_item(), catalog_rv_update(), catalog_update_class_info(), ehash_merge_permanent(), heap_remove_page_on_vacuum(), heap_rv_mvcc_redo_delete_internal(), heap_rv_mvcc_undo_delete(), heap_rv_undoredo_pagehdr(), heap_update_bigone(), heap_update_physical(), heap_vpid_remove(), log_rv_record_modify_internal(), serial_update_serial_object(), vacuum_heap_record_insid_and_prev_version(), vacuum_rv_check_at_undo(), vacuum_rv_redo_vacuum_heap_page(), and xheap_reclaim_addresses().
|
static |
Definition at line 2471 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, ASSERT_ALIGN, assert_release, spage_header::cont_free, recdes::data, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), recdes::length, NO_ERROR, spage_header::num_records, spage_header::offset_to_free_area, spage_slot::offset_to_record, spage_slot::record_length, spage_slot::record_type, SP_ERROR, SP_SUCCESS, spage_add_contiguous_free_space(), spage_compact(), SPAGE_DB_PAGESIZE, SPAGE_EMPTY_OFFSET, spage_is_record_located_at_end(), spage_set_slot(), SPAGE_VERIFY_HEADER, spage_verify_header(), and spage_header::total_free.
Referenced by spage_update().
|
static |
Definition at line 2415 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, ASSERT_ALIGN, assert_release, spage_header::cont_free, recdes::data, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), recdes::length, spage_header::offset_to_free_area, spage_slot::offset_to_record, spage_slot::record_length, SP_ERROR, SP_SUCCESS, spage_is_record_located_at_end(), SPAGE_OVERFLOW, SPAGE_VERIFY_HEADER, spage_verify_header(), and spage_header::total_free.
Referenced by spage_update().
void spage_update_record_type | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slot_id, | ||
INT16 | record_type | ||
) |
Definition at line 2685 of file slotted_page.c.
References ARG_FILE_LINE, assert, DONT_FREE, ER_ERROR_SEVERITY, er_set(), ER_SP_UNKNOWN_SLOTID, NULL, pgbuf_get_latch_mode(), pgbuf_get_page_id(), pgbuf_get_volume_label(), PGBUF_LATCH_WRITE, pgbuf_set_dirty(), REC_4BIT_USED_TYPE_MAX, REC_UNKNOWN, spage_slot::record_type, spage_find_slot(), and SPAGE_VERIFY_HEADER.
Referenced by heap_update_bigone(), and heap_update_physical().
void spage_vacuum_slot | ( | THREAD_ENTRY * | thread_p, |
PAGE_PTR | page_p, | ||
PGSLOTID | slotid, | ||
bool | reusable | ||
) |
Definition at line 4832 of file slotted_page.c.
References spage_header::alignment, spage_header::anchor_type, assert, DB_WASTED_ALIGN, NULL, spage_header::num_records, spage_slot::offset_to_record, pgbuf_get_vpid_ptr(), REC_DELETED_WILL_REUSE, REC_MARKDELETED, spage_slot::record_length, spage_slot::record_type, spage_check(), SPAGE_EMPTY_OFFSET, spage_find_slot(), spage_is_valid_anchor_type(), SPAGE_VERIFY_HEADER, spage_header::total_free, VACUUM_ER_LOG_ERROR, and vacuum_er_log_error.
Referenced by vacuum_heap_record(), vacuum_rv_redo_vacuum_heap_page(), and vacuum_rv_redo_vacuum_heap_record().
|
static |
Definition at line 335 of file slotted_page.c.
References spage_header::alignment, ARG_FILE_LINE, assert, spage_header::cont_free, ER_ERROR_SEVERITY, er_set(), ER_SP_INVALID_HEADER, fileio_get_volume_label(), NULL, spage_header::num_records, spage_header::num_slots, spage_header::offset_to_free_area, vpid::pageid, PEEK, pgbuf_get_vpid(), PTR_ALIGN, SPAGE_DB_PAGESIZE, spage_dump_header_to_string(), spage_header::total_free, and vpid::volid.
Referenced by spage_add_contiguous_free_space(), spage_add_new_slot(), spage_compact(), spage_delete(), spage_find_empty_slot(), spage_find_empty_slot_at(), spage_merge(), spage_put_helper(), spage_reduce_a_slot(), spage_reduce_contiguous_free_space(), spage_split(), spage_take_out(), spage_take_slot_in_use(), spage_update_record_after_compact(), and spage_update_record_in_place().
|
static |
Definition at line 60 of file slotted_page.c.
Referenced by spage_free_saved_spaces().
|
static |
Definition at line 128 of file slotted_page.c.
|
static |
Definition at line 154 of file slotted_page.c.
|
static |
Definition at line 66 of file slotted_page.c.
Referenced by spage_boot().