32 #define ROOTCLASS_NAME "Rootclass" 34 #define VIRTUAL_CLASS_DIR_OID_MASK (1 << 15) 36 #define OID_INITIALIZER \ 37 {NULL_PAGEID, NULL_SLOTID, NULL_VOLID} 39 #define OID_AS_ARGS(oidp) (oidp)->volid, (oidp)->pageid, (oidp)->slotid 41 #if !defined(SERVER_MODE) 42 #define OID_TEMPID_MIN INT_MIN 43 #define OID_INIT_TEMPID() (oid_Next_tempid = NULL_PAGEID) 46 #define OID_NEXT_TEMPID() \ 47 ((--oid_Next_tempid <= OID_TEMPID_MIN) ? NULL_PAGEID : oid_Next_tempid) 49 #define OID_ASSIGN_TEMPOID(oidp) ((oidp)->volid = NULL_VOLID, \ 50 (oidp)->pageid = OID_NEXT_TEMPID(), \ 51 (oidp)->slotid = - tm_Tran_index) 54 #define SET_OID(dest_oid_ptr, vol_id, page_id, slot_id) \ 57 (dest_oid_ptr)->volid = vol_id; \ 58 (dest_oid_ptr)->pageid = page_id; \ 59 (dest_oid_ptr)->slotid = slot_id; \ 63 #define COPY_OID(dest_oid_ptr, src_oid_ptr) \ 66 *(dest_oid_ptr) = *(src_oid_ptr); \ 70 #define SAFE_COPY_OID(dest_oid_ptr, src_oid_ptr) \ 73 *(dest_oid_ptr) = *(src_oid_ptr); \ 77 OID_SET_NULL (dest_oid_ptr); \ 80 #define OID_ISTEMP(oidp) ((oidp)->pageid < NULL_PAGEID) 81 #define OID_ISNULL(oidp) ((oidp)->pageid == NULL_PAGEID) 82 #define OID_IS_ROOTOID(oidp) (OID_EQ((oidp), oid_Root_class_oid)) 83 #define OID_IS_PSEUDO_OID(oidp) ((oidp)->volid < NULL_VOLID) 85 #define OID_SET_NULL(oidp) \ 87 (oidp)->pageid = NULL_PAGEID; \ 88 (oidp)->slotid = NULL_SLOTID; \ 89 (oidp)->volid = NULL_VOLID; \ 92 #define OID_EQ(oidp1, oidp2) \ 93 ((oidp1) == (oidp2) || ((oidp1)->pageid == (oidp2)->pageid && \ 94 (oidp1)->slotid == (oidp2)->slotid && \ 95 (oidp1)->volid == (oidp2)->volid)) 97 #define OID_GT(oidp1, oidp2) \ 98 ((oidp1) != (oidp2) && \ 99 ((oidp1)->volid > (oidp2)->volid || \ 100 ((oidp1)->volid == (oidp2)->volid && (oidp1)->pageid > (oidp2)->pageid) ||\ 101 ((oidp1)->volid == (oidp2)->volid && (oidp1)->pageid == (oidp2)->pageid \ 102 && (oidp1)->slotid > (oidp2)->slotid))) 104 #define OID_GTE(oidp1, oidp2) \ 105 ((oidp1) == (oidp2) || \ 106 ((oidp1)->volid > (oidp2)->volid || \ 107 ((oidp1)->volid == (oidp2)->volid && (oidp1)->pageid > (oidp2)->pageid) ||\ 108 ((oidp1)->volid == (oidp2)->volid && (oidp1)->pageid == (oidp2)->pageid \ 109 && (oidp1)->slotid > (oidp2)->slotid) || \ 110 ((oidp1)->volid == (oidp2)->volid && (oidp1)->pageid == (oidp2)->pageid \ 111 && (oidp1)->slotid == (oidp2)->slotid))) 113 #define OID_LT(oidp1, oidp2) \ 114 ((oidp1) != (oidp2) && \ 115 ((oidp1)->volid < (oidp2)->volid || \ 116 ((oidp1)->volid == (oidp2)->volid && (oidp1)->pageid < (oidp2)->pageid) ||\ 117 ((oidp1)->volid == (oidp2)->volid && (oidp1)->pageid == (oidp2)->pageid \ 118 && (oidp1)->slotid < (oidp2)->slotid))) 120 #define OID_LTE(oidp1, oidp2) \ 121 ((oidp1) == (oidp2) || \ 122 ((oidp1)->volid < (oidp2)->volid || \ 123 ((oidp1)->volid == (oidp2)->volid && (oidp1)->pageid < (oidp2)->pageid) ||\ 124 ((oidp1)->volid == (oidp2)->volid && (oidp1)->pageid == (oidp2)->pageid \ 125 && (oidp1)->slotid < (oidp2)->slotid) || \ 126 ((oidp1)->volid == (oidp2)->volid && (oidp1)->pageid == (oidp2)->pageid \ 127 && (oidp1)->slotid == (oidp2)->slotid))) 130 #define OID_PSEUDO_KEY(oidp) \ 131 ((OID_ISTEMP(oidp)) ? (unsigned int) -((oidp)->pageid) : \ 132 ((oidp)->slotid | (((unsigned int)(oidp)->pageid) << 8)) ^ \ 133 ((((unsigned int)(oidp)->pageid) >> 8) | \ 134 (((unsigned int)(oidp)->volid) << 24))) 136 #define OID_IS_VIRTUAL_CLASS_OF_DIR_OID(oidp) \ 137 ((((oidp)->slotid & VIRTUAL_CLASS_DIR_OID_MASK) \ 138 == VIRTUAL_CLASS_DIR_OID_MASK) ? true : false) 140 #define OID_GET_VIRTUAL_CLASS_OF_DIR_OID(class_oidp,virtual_oidp) \ 143 (virtual_oidp)->volid = (class_oidp)->volid; \ 144 (virtual_oidp)->pageid = (class_oidp)->pageid; \ 145 (virtual_oidp)->slotid = ((class_oidp)->slotid) \ 146 | VIRTUAL_CLASS_DIR_OID_MASK; \ 150 #define OID_GET_REAL_CLASS_OF_DIR_OID(virtual_oidp,class_oidp) \ 153 (class_oidp)->volid = (virtual_oidp)->volid; \ 154 (class_oidp)->pageid = (virtual_oidp)->pageid; \ 155 (class_oidp)->slotid = ((virtual_oidp)->slotid) \ 156 & (~VIRTUAL_CLASS_DIR_OID_MASK); \ 212 extern int oid_compare (
const void *oid1,
const void *oid2);
213 extern unsigned int oid_hash (
const void *
key_oid,
unsigned int htsize);
void oid_get_serial_oid(OID *oid)
int oid_compare(const void *oid1, const void *oid2)
void oid_get_partition_oid(OID *oid)
bool oid_is_cached_class_oid(const OID *class_oid)
unsigned int oid_hash(const void *key_oid, unsigned int htsize)
bool oid_is_partition(const OID *oid)
bool oid_is_root(const OID *oid)
OID * oid_get_rep_read_tran_oid(void)
void oid_set_cached_class_oid(const int cache_id, const OID *oid)
bool oid_is_db_attribute(const OID *oid)
bool oid_is_system_class(const OID *class_oid)
void oid_set_serial(const OID *oid)
bool oid_is_serial(const OID *oid)
int oid_compare_equals(const void *key_oid1, const void *key_oid2)
OID * oid_Serial_class_oid
void oid_set_root(const OID *oid)
const char * oid_get_cached_class_name(const int cache_id)
void oid_set_partition(const OID *oid)
bool oid_check_cached_class_oid(const int cache_id, const OID *oid)
bool oid_is_db_class(const OID *oid)