Skip to content

File slotted_page.h

FileList > cubrid > src > storage > slotted_page.h

Go to the source code of this file

  • #include "config.h"
  • #include "error_manager.h"
  • #include "storage_common.h"
  • #include "log_manager.h"
  • #include "vacuum.h"

Classes

Type Name
struct spage_header
struct spage_slot

Public Types

Type Name
typedef struct spage_header SPAGE_HEADER
typedef struct spage_slot SPAGE_SLOT
enum slotted__page_8h_1a12acb3634428eafc5724df6d836f4e64

Public Functions

Type Name
const char * spage_alignment_string (unsigned short alignment)
const char * spage_anchor_flag_string (const INT16 anchor_type)
int spage_append (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid, const RECDES * recdes)
void spage_boot (THREAD_ENTRY * thread_p)
int spage_check (THREAD_ENTRY * thread_p, PAGE_PTR page_p)
bool spage_check_num_slots (THREAD_ENTRY * thread_p, PAGE_PTR page_p)
int spage_check_slot_owner (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid)
void spage_collect_statistics (PAGE_PTR pgptr, int * npages, int * nrecords, int * rec_length)
int spage_compact (THREAD_ENTRY * thread_p, PAGE_PTR pgptr)
PGSLOTID spage_delete (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid)
PGSLOTID spage_delete_for_recovery (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid)
void spage_dump (THREAD_ENTRY * thread_p, FILE * fp, PAGE_PTR pgptr, int isrecord_printed)
void spage_finalize (THREAD_ENTRY * thread_p)
PGSLOTID spage_find_free_slot (PAGE_PTR page_p, SPAGE_SLOT ** out_slot_p, PGSLOTID start_id)
void spage_free_saved_spaces (THREAD_ENTRY * thread_p, void * first_save_entry)
int spage_get_free_space (THREAD_ENTRY * thread_p, PAGE_PTR pgptr)
int spage_get_free_space_without_saving (THREAD_ENTRY * thread_p, PAGE_PTR page_p, bool * need_update)
SCAN_CODE spage_get_page_header_info (PAGE_PTR page_p, DB_VALUE ** page_header_info)
SCAN_CODE spage_get_record (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid, RECDES * recdes, int ispeeking)
int spage_get_record_length (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid)
int spage_get_record_offset (THREAD_ENTRY * thread_p, PAGE_PTR page_p, PGSLOTID slot_id)
INT16 spage_get_record_type (PAGE_PTR pgptr, PGSLOTID slotid)
SPAGE_SLOT * spage_get_slot (PAGE_PTR page_p, PGSLOTID slot_id)
int spage_get_space_for_record (THREAD_ENTRY * thread_p, PAGE_PTR page_p, PGSLOTID slot_id)
int spage_header_end_scan (THREAD_ENTRY * thread_p, void ** ctx)
SCAN_CODE spage_header_next_scan (THREAD_ENTRY * thread_p, int cursor, DB_VALUE ** out_values, int out_cnt, void * ctx)
int spage_header_start_scan (THREAD_ENTRY * thread_p, int show_type, DB_VALUE ** arg_values, int arg_cnt, void ** ctx)
void spage_initialize (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, INT16 slots_type, unsigned short alignment, bool safeguard_rvspace)
int spage_insert (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, RECDES * recdes, PGSLOTID * slotid)
int spage_insert_at (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid, RECDES * recdes)
int spage_insert_for_recovery (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid, RECDES * recdes)
bool spage_is_mvcc_updatable (THREAD_ENTRY * thread_p, PAGE_PTR page_p, PGSLOTID slot_id, int delete_record_length, int insert_record_length)
bool spage_is_slot_exist (PAGE_PTR pgptr, PGSLOTID slotid)
bool spage_is_updatable (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid, int recdes_length)
bool spage_is_valid_anchor_type (const INT16 anchor_type)
int spage_mark_deleted_slot_as_reusable (THREAD_ENTRY * thread_p, PAGE_PTR page_p, PGSLOTID slot_id)
int spage_max_record_size (void)
int spage_max_space_for_new_record (THREAD_ENTRY * thread_p, PAGE_PTR pgptr)
int spage_merge (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid1, PGSLOTID slotid2)
bool spage_need_compact (THREAD_ENTRY * thread_p, PAGE_PTR page_p)
SCAN_CODE spage_next_record (PAGE_PTR pgptr, PGSLOTID * slotid, RECDES * recdes, int ispeeking)
SCAN_CODE spage_next_record_dont_skip_empty (PAGE_PTR pgptr, PGSLOTID * slotid, RECDES * recdes, int ispeeking)
PGNSLOTS spage_number_of_records (PAGE_PTR pgptr)
PGNSLOTS spage_number_of_slots (PAGE_PTR pgptr)
int spage_overwrite (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid, int overwrite_offset, const RECDES * recdes)
SCAN_CODE spage_previous_record (PAGE_PTR pgptr, PGSLOTID * slotid, RECDES * recdes, int ispeeking)
SCAN_CODE spage_previous_record_dont_skip_empty (PAGE_PTR pgptr, PGSLOTID * slotid, RECDES * recdes, int ispeeking)
int spage_put (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid, int offset, const RECDES * recdes)
bool spage_reclaim (THREAD_ENTRY * thread_p, PAGE_PTR pgptr)
void spage_set_need_update_best_hint (THREAD_ENTRY * thread_p, PAGE_PTR page_p, bool need_update)
int spage_slots_end_scan (THREAD_ENTRY * thread_p, void ** ctx)
SCAN_CODE spage_slots_next_scan (THREAD_ENTRY * thread_p, int cursor, DB_VALUE ** out_values, int out_cnt, void * ctx)
int spage_slots_start_scan (THREAD_ENTRY * thread_p, int show_type, DB_VALUE ** arg_values, int arg_cnt, void ** ctx)
int spage_split (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid, int offset, PGSLOTID * new_slotid)
int spage_take_out (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid, int takeout_offset, int takeout_length)
int spage_update (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid, const RECDES * recdes)
void spage_update_record_type (THREAD_ENTRY * thread_p, PAGE_PTR pgptr, PGSLOTID slotid, INT16 type)
void spage_vacuum_slot (THREAD_ENTRY * thread_p, PAGE_PTR page_p, PGSLOTID slotid, bool reusable)

Macros

Type Name
define DONT_SAFEGUARD_RVSPACE [**false**](broker__monitor_8c.md#function-timeout)
define SAFEGUARD_RVSPACE [**true**](broker__monitor_8c.md#function-timeout)
define SPAGE_HEADER_FLAG_ALL_VISIBLE 0x1 /\* [**All**](broker__monitor_8c.md#function-timeout) [**records**](broker__monitor_8c.md#function-timeout) [**are**](broker__monitor_8c.md#function-timeout) [**visible**](broker__monitor_8c.md#function-timeout) \*/ /\* unused \*/
define SPAGE_HEADER_FLAG_NONE 0x0 /\* [**No**](broker__monitor_8c.md#function-timeout) flags \*/
define SPAGE_HEADER_SIZE ([**sizeof**](broker__monitor_8c.md#function-timeout)([**SPAGE\_HEADER**](slotted__page_8h.md#typedef-spage_header)))
define SPAGE_SLOT_SIZE ([**sizeof**](broker__monitor_8c.md#function-timeout)([**SPAGE\_SLOT**](slotted__page_8h.md#typedef-spage_slot)))
define SP_DOESNT_FIT (3)
define SP_ERROR (-1)
define SP_SUCCESS (1)

Public Types Documentation

typedef SPAGE_HEADER

typedef struct spage_header SPAGE_HEADER;

typedef SPAGE_SLOT

typedef struct spage_slot SPAGE_SLOT;

enum slotted__page_8h_1a12acb3634428eafc5724df6d836f4e64

enum slotted__page_8h_1a12acb3634428eafc5724df6d836f4e64 {
    ANCHORED = 1,
    ANCHORED_DONT_REUSE_SLOTS = 2,
    UNANCHORED_ANY_SEQUENCE = 3,
    UNANCHORED_KEEP_SEQUENCE = 4
};

Public Functions Documentation

function spage_alignment_string

const  char * spage_alignment_string (
    unsigned  short alignment
) 

function spage_anchor_flag_string

const  char * spage_anchor_flag_string (
    const  INT16 anchor_type
) 

function spage_append

int spage_append (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid,
    const  RECDES * recdes
) 

function spage_boot

void spage_boot (
    THREAD_ENTRY * thread_p
) 

function spage_check

int spage_check (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_p
) 

function spage_check_num_slots

bool spage_check_num_slots (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_p
) 

function spage_check_slot_owner

int spage_check_slot_owner (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid
) 

function spage_collect_statistics

void spage_collect_statistics (
    PAGE_PTR pgptr,
    int * npages,
    int * nrecords,
    int * rec_length
) 

function spage_compact

int spage_compact (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr
) 

function spage_delete

PGSLOTID spage_delete (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid
) 

function spage_delete_for_recovery

PGSLOTID spage_delete_for_recovery (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid
) 

function spage_dump

void spage_dump (
    THREAD_ENTRY * thread_p,
    FILE * fp,
    PAGE_PTR pgptr,
    int isrecord_printed
) 

function spage_finalize

void spage_finalize (
    THREAD_ENTRY * thread_p
) 

function spage_find_free_slot

PGSLOTID spage_find_free_slot (
    PAGE_PTR page_p,
    SPAGE_SLOT ** out_slot_p,
    PGSLOTID start_id
) 

function spage_free_saved_spaces

void spage_free_saved_spaces (
    THREAD_ENTRY * thread_p,
    void * first_save_entry
) 

function spage_get_free_space

int spage_get_free_space (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr
) 

function spage_get_free_space_without_saving

int spage_get_free_space_without_saving (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_p,
    bool * need_update
) 

function spage_get_page_header_info

SCAN_CODE spage_get_page_header_info (
    PAGE_PTR page_p,
    DB_VALUE ** page_header_info
) 

function spage_get_record

SCAN_CODE spage_get_record (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid,
    RECDES * recdes,
    int ispeeking
) 

function spage_get_record_length

int spage_get_record_length (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid
) 

function spage_get_record_offset

int spage_get_record_offset (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_p,
    PGSLOTID slot_id
) 

function spage_get_record_type

INT16 spage_get_record_type (
    PAGE_PTR pgptr,
    PGSLOTID slotid
) 

function spage_get_slot

SPAGE_SLOT * spage_get_slot (
    PAGE_PTR page_p,
    PGSLOTID slot_id
) 

function spage_get_space_for_record

int spage_get_space_for_record (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_p,
    PGSLOTID slot_id
) 

function spage_header_end_scan

int spage_header_end_scan (
    THREAD_ENTRY * thread_p,
    void ** ctx
) 

function spage_header_next_scan

SCAN_CODE spage_header_next_scan (
    THREAD_ENTRY * thread_p,
    int cursor,
    DB_VALUE ** out_values,
    int out_cnt,
    void * ctx
) 

function spage_header_start_scan

int spage_header_start_scan (
    THREAD_ENTRY * thread_p,
    int show_type,
    DB_VALUE ** arg_values,
    int arg_cnt,
    void ** ctx
) 

function spage_initialize

void spage_initialize (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    INT16 slots_type,
    unsigned  short alignment,
    bool safeguard_rvspace
) 

function spage_insert

int spage_insert (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    RECDES * recdes,
    PGSLOTID * slotid
) 

function spage_insert_at

int spage_insert_at (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid,
    RECDES * recdes
) 

function spage_insert_for_recovery

int spage_insert_for_recovery (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid,
    RECDES * recdes
) 

function spage_is_mvcc_updatable

bool spage_is_mvcc_updatable (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_p,
    PGSLOTID slot_id,
    int delete_record_length,
    int insert_record_length
) 

function spage_is_slot_exist

bool spage_is_slot_exist (
    PAGE_PTR pgptr,
    PGSLOTID slotid
) 

function spage_is_updatable

bool spage_is_updatable (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid,
    int recdes_length
) 

function spage_is_valid_anchor_type

bool spage_is_valid_anchor_type (
    const  INT16 anchor_type
) 

function spage_mark_deleted_slot_as_reusable

int spage_mark_deleted_slot_as_reusable (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_p,
    PGSLOTID slot_id
) 

function spage_max_record_size

int spage_max_record_size (
    void
) 

function spage_max_space_for_new_record

int spage_max_space_for_new_record (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr
) 

function spage_merge

int spage_merge (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid1,
    PGSLOTID slotid2
) 

function spage_need_compact

bool spage_need_compact (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_p
) 

function spage_next_record

SCAN_CODE spage_next_record (
    PAGE_PTR pgptr,
    PGSLOTID * slotid,
    RECDES * recdes,
    int ispeeking
) 

function spage_next_record_dont_skip_empty

SCAN_CODE spage_next_record_dont_skip_empty (
    PAGE_PTR pgptr,
    PGSLOTID * slotid,
    RECDES * recdes,
    int ispeeking
) 

function spage_number_of_records

PGNSLOTS spage_number_of_records (
    PAGE_PTR pgptr
) 

function spage_number_of_slots

PGNSLOTS spage_number_of_slots (
    PAGE_PTR pgptr
) 

function spage_overwrite

int spage_overwrite (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid,
    int overwrite_offset,
    const  RECDES * recdes
) 

function spage_previous_record

SCAN_CODE spage_previous_record (
    PAGE_PTR pgptr,
    PGSLOTID * slotid,
    RECDES * recdes,
    int ispeeking
) 

function spage_previous_record_dont_skip_empty

SCAN_CODE spage_previous_record_dont_skip_empty (
    PAGE_PTR pgptr,
    PGSLOTID * slotid,
    RECDES * recdes,
    int ispeeking
) 

function spage_put

int spage_put (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid,
    int offset,
    const  RECDES * recdes
) 

function spage_reclaim

bool spage_reclaim (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr
) 

function spage_set_need_update_best_hint

void spage_set_need_update_best_hint (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_p,
    bool need_update
) 

function spage_slots_end_scan

int spage_slots_end_scan (
    THREAD_ENTRY * thread_p,
    void ** ctx
) 

function spage_slots_next_scan

SCAN_CODE spage_slots_next_scan (
    THREAD_ENTRY * thread_p,
    int cursor,
    DB_VALUE ** out_values,
    int out_cnt,
    void * ctx
) 

function spage_slots_start_scan

int spage_slots_start_scan (
    THREAD_ENTRY * thread_p,
    int show_type,
    DB_VALUE ** arg_values,
    int arg_cnt,
    void ** ctx
) 

function spage_split

int spage_split (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid,
    int offset,
    PGSLOTID * new_slotid
) 

function spage_take_out

int spage_take_out (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid,
    int takeout_offset,
    int takeout_length
) 

function spage_update

int spage_update (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid,
    const  RECDES * recdes
) 

function spage_update_record_type

void spage_update_record_type (
    THREAD_ENTRY * thread_p,
    PAGE_PTR pgptr,
    PGSLOTID slotid,
    INT16 type
) 

function spage_vacuum_slot

void spage_vacuum_slot (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_p,
    PGSLOTID slotid,
    bool reusable
) 

Macro Definition Documentation

define DONT_SAFEGUARD_RVSPACE

#define DONT_SAFEGUARD_RVSPACE `false`

define SAFEGUARD_RVSPACE

#define SAFEGUARD_RVSPACE `true`

define SPAGE_HEADER_FLAG_ALL_VISIBLE

#define SPAGE_HEADER_FLAG_ALL_VISIBLE `0x1  /* All  records  are  visible */    /* unused */`

define SPAGE_HEADER_FLAG_NONE

#define SPAGE_HEADER_FLAG_NONE `0x0 /* No flags */`

define SPAGE_HEADER_SIZE

#define SPAGE_HEADER_SIZE `( sizeof ( SPAGE_HEADER ))`

define SPAGE_SLOT_SIZE

#define SPAGE_SLOT_SIZE `( sizeof ( SPAGE_SLOT ))`

define SP_DOESNT_FIT

#define SP_DOESNT_FIT `(3)`

define SP_ERROR

#define SP_ERROR `(-1)`

define SP_SUCCESS

#define SP_SUCCESS `(1)`


The documentation for this class was generated from the following file cubrid/src/storage/slotted_page.h