Skip to content

File mvcc.h

FileList > cubrid > src > transaction > mvcc.h

Go to the source code of this file

  • #include "log_lsa.hpp"
  • #include "mvcc_active_tran.hpp"
  • #include "recovery.h"
  • #include "storage_common.h"
  • #include "thread_compat.hpp"
  • #include <vector>

Classes

Type Name
struct mvcc_info
struct mvcc_rec_header
struct mvcc_snapshot

Public Types

Type Name
typedef struct mvcc_info MVCC_INFO
typedef struct mvcc_rec_header MVCC_REC_HEADER
typedef enum mvcc_satisfies_delete_result MVCC_SATISFIES_DELETE_RESULT
typedef enum mvcc_satisfies_snapshot_result MVCC_SATISFIES_SNAPSHOT_RESULT
typedef enum mvcc_satisfies_vacuum_result MVCC_SATISFIES_VACUUM_RESULT
typedef struct mvcc_snapshot MVCC_SNAPSHOT
typedef MVCC_SATISFIES_SNAPSHOT_RESULT(* MVCC_SNAPSHOT_FUNC
enum mvcc_satisfies_delete_result
enum mvcc_satisfies_snapshot_result
enum mvcc_satisfies_vacuum_result

Public Functions

Type Name
bool mvcc_is_mvcc_disabled_class (const OID * class_oid)
MVCC_SATISFIES_SNAPSHOT_RESULT mvcc_is_not_deleted_for_snapshot (THREAD_ENTRY * thread_p, MVCC_REC_HEADER * rec_header, MVCC_SNAPSHOT * snapshot)
MVCC_SATISFIES_DELETE_RESULT mvcc_satisfies_delete (THREAD_ENTRY * thread_p, MVCC_REC_HEADER * rec_header)
MVCC_SATISFIES_SNAPSHOT_RESULT mvcc_satisfies_dirty (THREAD_ENTRY * thread_p, MVCC_REC_HEADER * rec_header, MVCC_SNAPSHOT * snapshot)
MVCC_SATISFIES_SNAPSHOT_RESULT mvcc_satisfies_snapshot (THREAD_ENTRY * thread_p, MVCC_REC_HEADER * rec_header, MVCC_SNAPSHOT * snapshot)
MVCC_SATISFIES_VACUUM_RESULT mvcc_satisfies_vacuum (THREAD_ENTRY * thread_p, MVCC_REC_HEADER * rec_header, MVCCID oldest_mvccid)

Macros

Type Name
define LOG_IS_MVCC_BTREE_OPERATION (rcvindex) /* multi line expression */
define LOG_IS_MVCC_HEAP_OPERATION (rcvindex) /* multi line expression */
define LOG_IS_MVCC_OPERATION (rcvindex) /* multi line expression */
define MVCC_CLEAR_ALL_FLAG_BITS (rec_header_p) ([**MVCC\_CLEAR\_FLAG\_BITS**](mvcc_8h.md#define-mvcc_clear_flag_bits) ([**rec\_header\_p**](broker__monitor_8c.md#function-timeout), [**OR\_MVCC\_FLAG\_MASK**](object__representation__constants_8h.md#define-or_mvcc_flag_mask)))
define MVCC_CLEAR_FLAG_BITS (rec_header_p, flag) (([**rec\_header\_p**](broker__monitor_8c.md#function-timeout))-&gt;mvcc\_flag &= ~([**flag**](classflag.md)))
define MVCC_GET_CHN (header) ((header)-&gt;chn)
define MVCC_GET_DELID (header) ((header)-&gt;mvcc\_del\_id)
define MVCC_GET_FLAG (header) ((header)-&gt;mvcc\_flag)
define MVCC_GET_INSID (header) ((header)-&gt;mvcc\_ins\_id)
define MVCC_GET_PREV_VERSION_LSA (header) ((header)-&gt;prev\_version\_lsa)
define MVCC_GET_REPID (header) ((header)-&gt;repid)
define MVCC_ID_FOLLOW_OR_EQUAL (id1, id2) (([**id1**](broker__monitor_8c.md#function-timeout)) &gt;= ([**id2**](broker__monitor_8c.md#function-timeout)))
define MVCC_ID_PRECEDES (id1, id2) (([**id1**](broker__monitor_8c.md#function-timeout)) &lt; ([**id2**](broker__monitor_8c.md#function-timeout)))
define MVCC_IS_ANY_FLAG_SET (rec_header_p) ([**MVCC\_IS\_FLAG\_SET**](mvcc_8h.md#define-mvcc_is_flag_set) ([**rec\_header\_p**](broker__monitor_8c.md#function-timeout), [**OR\_MVCC\_FLAG\_MASK**](object__representation__constants_8h.md#define-or_mvcc_flag_mask)))
define MVCC_IS_CHN_UPTODATE (rec_header_p, chn) /* multi line expression */
define MVCC_IS_FLAG_SET (rec_header_p, flags) (([**rec\_header\_p**](broker__monitor_8c.md#function-timeout))-&gt;mvcc\_flag & (flags))
define MVCC_IS_HEADER_ALL_VISIBLE (rec_header_p) /* multi line expression */
define MVCC_IS_HEADER_DELID_VALID (rec_header_p) /* multi line expression */
define MVCC_IS_HEADER_INSID_NOT_ALL_VISIBLE (rec_header_p) /* multi line expression */
define MVCC_IS_HEADER_PREV_VERSION_VALID (rec_header_p) /* multi line expression */
define MVCC_IS_REC_DELETED_BY (rec_header_p, mvcc_id) (([**rec\_header\_p**](broker__monitor_8c.md#function-timeout))-&gt;delid\_chn.mvcc\_del\_id == mvcc\_id)
define MVCC_IS_REC_DELETED_BY_ME (thread_p, rec_header_p) ([**logtb\_is\_current\_mvccid**](log__impl_8h.md#function-logtb_is_current_mvccid) (thread\_p, ([**rec\_header\_p**](broker__monitor_8c.md#function-timeout))-&gt;mvcc\_del\_id))
define MVCC_IS_REC_INSERTED_BY (rec_header_p, mvcc_id) (([**rec\_header\_p**](broker__monitor_8c.md#function-timeout))-&gt;mvcc\_ins\_id == mvcc\_id)
define MVCC_IS_REC_INSERTED_BY_ME (thread_p, rec_header_p) ([**logtb\_is\_current\_mvccid**](log__impl_8h.md#function-logtb_is_current_mvccid) (thread\_p, ([**rec\_header\_p**](broker__monitor_8c.md#function-timeout))-&gt;mvcc\_ins\_id))
define MVCC_REC_HEADER_INITIALIZER { 0, 0, NULL\_CHN, [**MVCCID\_NULL**](storage__common_8h.md#define-mvccid_null), [**MVCCID\_NULL**](storage__common_8h.md#define-mvccid_null), [**LSA\_INITIALIZER**](log__lsa_8hpp.md#define-lsa_initializer) }
define MVCC_SET_CHN (header, chn_) ((header)-&gt;chn = ([**chn\_**](broker__monitor_8c.md#function-timeout)))
define MVCC_SET_DELID (header, mvcc_id) ((header)-&gt;mvcc\_del\_id = (mvcc\_id))
define MVCC_SET_FLAG (header, flag) ((header)-&gt;mvcc\_flag = ([**flag**](classflag.md)))
define MVCC_SET_FLAG_BITS (rec_header_p, flag) (([**rec\_header\_p**](broker__monitor_8c.md#function-timeout))-&gt;mvcc\_flag \|= ([**flag**](classflag.md)))
define MVCC_SET_INSID (header, mvcc_id) ((header)-&gt;mvcc\_ins\_id = (mvcc\_id))
define MVCC_SET_PREVIOUS_VERSION_LSA (header, new_lsa) /* multi line expression */
define MVCC_SET_REPID (header, rep_id) ((header)-&gt;repid = (rep\_id))
define MVCC_SNAPSHOT_GET_HIGHEST_COMMITTED_ID (snapshot) ((snapshot)-&gt;highest\_completed\_mvccid)
define MVCC_SNAPSHOT_GET_LOWEST_ACTIVE_ID (snapshot) ((snapshot)-&gt;lowest\_active\_mvccid)

Public Types Documentation

typedef MVCC_INFO

typedef struct mvcc_info MVCC_INFO;

typedef MVCC_REC_HEADER

typedef struct mvcc_rec_header MVCC_REC_HEADER;

typedef MVCC_SATISFIES_DELETE_RESULT

typedef enum mvcc_satisfies_delete_result MVCC_SATISFIES_DELETE_RESULT;

typedef MVCC_SATISFIES_SNAPSHOT_RESULT

typedef enum mvcc_satisfies_snapshot_result MVCC_SATISFIES_SNAPSHOT_RESULT;

typedef MVCC_SATISFIES_VACUUM_RESULT

typedef enum mvcc_satisfies_vacuum_result MVCC_SATISFIES_VACUUM_RESULT;

typedef MVCC_SNAPSHOT

typedef struct mvcc_snapshot MVCC_SNAPSHOT;

typedef MVCC_SNAPSHOT_FUNC

typedef MVCC_SATISFIES_SNAPSHOT_RESULT(* MVCC_SNAPSHOT_FUNC) (THREAD_ENTRY *thread_p, MVCC_REC_HEADER *rec_header, MVCC_SNAPSHOT *snapshot);

enum mvcc_satisfies_delete_result

enum mvcc_satisfies_delete_result {
    DELETE_RECORD_INSERT_IN_PROGRESS,
    DELETE_RECORD_CAN_DELETE,
    DELETE_RECORD_DELETED,
    DELETE_RECORD_DELETE_IN_PROGRESS,
    DELETE_RECORD_SELF_DELETED
};

enum mvcc_satisfies_snapshot_result

enum mvcc_satisfies_snapshot_result {
    TOO_OLD_FOR_SNAPSHOT,
    SNAPSHOT_SATISFIED,
    TOO_NEW_FOR_SNAPSHOT
};

enum mvcc_satisfies_vacuum_result

enum mvcc_satisfies_vacuum_result {
    VACUUM_RECORD_REMOVE,
    VACUUM_RECORD_DELETE_INSID_PREV_VER,
    VACUUM_RECORD_CANNOT_VACUUM
};

Public Functions Documentation

function mvcc_is_mvcc_disabled_class

bool mvcc_is_mvcc_disabled_class (
    const  OID * class_oid
) 

function mvcc_is_not_deleted_for_snapshot

MVCC_SATISFIES_SNAPSHOT_RESULT mvcc_is_not_deleted_for_snapshot (
    THREAD_ENTRY * thread_p,
    MVCC_REC_HEADER * rec_header,
    MVCC_SNAPSHOT * snapshot
) 

function mvcc_satisfies_delete

MVCC_SATISFIES_DELETE_RESULT mvcc_satisfies_delete (
    THREAD_ENTRY * thread_p,
    MVCC_REC_HEADER * rec_header
) 

function mvcc_satisfies_dirty

MVCC_SATISFIES_SNAPSHOT_RESULT mvcc_satisfies_dirty (
    THREAD_ENTRY * thread_p,
    MVCC_REC_HEADER * rec_header,
    MVCC_SNAPSHOT * snapshot
) 

function mvcc_satisfies_snapshot

MVCC_SATISFIES_SNAPSHOT_RESULT mvcc_satisfies_snapshot (
    THREAD_ENTRY * thread_p,
    MVCC_REC_HEADER * rec_header,
    MVCC_SNAPSHOT * snapshot
) 

function mvcc_satisfies_vacuum

MVCC_SATISFIES_VACUUM_RESULT mvcc_satisfies_vacuum (
    THREAD_ENTRY * thread_p,
    MVCC_REC_HEADER * rec_header,
    MVCCID oldest_mvccid
) 

Macro Definition Documentation

define LOG_IS_MVCC_BTREE_OPERATION

#define LOG_IS_MVCC_BTREE_OPERATION (
    rcvindex
) `/* multi line expression */`

define LOG_IS_MVCC_HEAP_OPERATION

#define LOG_IS_MVCC_HEAP_OPERATION (
    rcvindex
) `/* multi line expression */`

define LOG_IS_MVCC_OPERATION

#define LOG_IS_MVCC_OPERATION (
    rcvindex
) `/* multi line expression */`

define MVCC_CLEAR_ALL_FLAG_BITS

#define MVCC_CLEAR_ALL_FLAG_BITS (
    rec_header_p
) `( MVCC_CLEAR_FLAG_BITS ( rec_header_p , OR_MVCC_FLAG_MASK ))`

define MVCC_CLEAR_FLAG_BITS

#define MVCC_CLEAR_FLAG_BITS (
    rec_header_p,
    flag
) `(( rec_header_p )->mvcc_flag &= ~( flag ))`

define MVCC_GET_CHN

#define MVCC_GET_CHN (
    header
) `((header)->chn)`

define MVCC_GET_DELID

#define MVCC_GET_DELID (
    header
) `((header)->mvcc_del_id)`

define MVCC_GET_FLAG

#define MVCC_GET_FLAG (
    header
) `((header)->mvcc_flag)`

define MVCC_GET_INSID

#define MVCC_GET_INSID (
    header
) `((header)->mvcc_ins_id)`

define MVCC_GET_PREV_VERSION_LSA

#define MVCC_GET_PREV_VERSION_LSA (
    header
) `((header)->prev_version_lsa)`

define MVCC_GET_REPID

#define MVCC_GET_REPID (
    header
) `((header)->repid)`

define MVCC_ID_FOLLOW_OR_EQUAL

#define MVCC_ID_FOLLOW_OR_EQUAL (
    id1,
    id2
) `(( id1 ) >= ( id2 ))`

define MVCC_ID_PRECEDES

#define MVCC_ID_PRECEDES (
    id1,
    id2
) `(( id1 ) < ( id2 ))`

define MVCC_IS_ANY_FLAG_SET

#define MVCC_IS_ANY_FLAG_SET (
    rec_header_p
) `( MVCC_IS_FLAG_SET ( rec_header_p , OR_MVCC_FLAG_MASK ))`

define MVCC_IS_CHN_UPTODATE

#define MVCC_IS_CHN_UPTODATE (
    rec_header_p,
    chn
) `/* multi line expression */`

define MVCC_IS_FLAG_SET

#define MVCC_IS_FLAG_SET (
    rec_header_p,
    flags
) `(( rec_header_p )->mvcc_flag & (flags))`

define MVCC_IS_HEADER_ALL_VISIBLE

#define MVCC_IS_HEADER_ALL_VISIBLE (
    rec_header_p
) `/* multi line expression */`

define MVCC_IS_HEADER_DELID_VALID

#define MVCC_IS_HEADER_DELID_VALID (
    rec_header_p
) `/* multi line expression */`

define MVCC_IS_HEADER_INSID_NOT_ALL_VISIBLE

#define MVCC_IS_HEADER_INSID_NOT_ALL_VISIBLE (
    rec_header_p
) `/* multi line expression */`

define MVCC_IS_HEADER_PREV_VERSION_VALID

#define MVCC_IS_HEADER_PREV_VERSION_VALID (
    rec_header_p
) `/* multi line expression */`

define MVCC_IS_REC_DELETED_BY

#define MVCC_IS_REC_DELETED_BY (
    rec_header_p,
    mvcc_id
) `(( rec_header_p )->delid_chn.mvcc_del_id == mvcc_id)`

define MVCC_IS_REC_DELETED_BY_ME

#define MVCC_IS_REC_DELETED_BY_ME (
    thread_p,
    rec_header_p
) `( logtb_is_current_mvccid (thread_p, ( rec_header_p )->mvcc_del_id))`

define MVCC_IS_REC_INSERTED_BY

#define MVCC_IS_REC_INSERTED_BY (
    rec_header_p,
    mvcc_id
) `(( rec_header_p )->mvcc_ins_id == mvcc_id)`

define MVCC_IS_REC_INSERTED_BY_ME

#define MVCC_IS_REC_INSERTED_BY_ME (
    thread_p,
    rec_header_p
) `( logtb_is_current_mvccid (thread_p, ( rec_header_p )->mvcc_ins_id))`

define MVCC_REC_HEADER_INITIALIZER

#define MVCC_REC_HEADER_INITIALIZER `{ 0, 0, NULL_CHN , MVCCID_NULL , MVCCID_NULL , LSA_INITIALIZER }`

define MVCC_SET_CHN

#define MVCC_SET_CHN (
    header,
    chn_
) `((header)->chn = ( chn_ ))`

define MVCC_SET_DELID

#define MVCC_SET_DELID (
    header,
    mvcc_id
) `((header)->mvcc_del_id = (mvcc_id))`

define MVCC_SET_FLAG

#define MVCC_SET_FLAG (
    header,
    flag
) `((header)->mvcc_flag = ( flag ))`

define MVCC_SET_FLAG_BITS

#define MVCC_SET_FLAG_BITS (
    rec_header_p,
    flag
) `(( rec_header_p )->mvcc_flag |= ( flag ))`

define MVCC_SET_INSID

#define MVCC_SET_INSID (
    header,
    mvcc_id
) `((header)->mvcc_ins_id = (mvcc_id))`

define MVCC_SET_PREVIOUS_VERSION_LSA

#define MVCC_SET_PREVIOUS_VERSION_LSA (
    header,
    new_lsa
) `/* multi line expression */`

define MVCC_SET_REPID

#define MVCC_SET_REPID (
    header,
    rep_id
) `((header)->repid = (rep_id))`

define MVCC_SNAPSHOT_GET_HIGHEST_COMMITTED_ID

#define MVCC_SNAPSHOT_GET_HIGHEST_COMMITTED_ID (
    snapshot
) `((snapshot)->highest_completed_mvccid)`

define MVCC_SNAPSHOT_GET_LOWEST_ACTIVE_ID

#define MVCC_SNAPSHOT_GET_LOWEST_ACTIVE_ID (
    snapshot
) `((snapshot)->lowest_active_mvccid)`


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