25 #ifndef _STORAGE_COMMON_H_ 26 #define _STORAGE_COMMON_H_ 45 #define NULL_VOLID (-1) 46 #define NULL_SECTID (-1) 47 #define NULL_PAGEID (-1) 48 #define NULL_SLOTID (-1) 49 #define NULL_OFFSET (-1) 50 #define NULL_FILEID (-1) 52 #define VOLID_MAX SHRT_MAX 53 #define PAGEID_MAX INT_MAX 54 #define SECTID_MAX INT_MAX 55 #define PGLENGTH_MAX SHRT_MAX 56 #define VOL_MAX_NPAGES(page_size) \ 57 ((sizeof(off_t) == 4) ? (INT_MAX / (page_size)) : INT_MAX) 59 #define LOGPAGEID_MAX 0x7fffffffffffLL 91 #define IO_DEFAULT_PAGE_SIZE (16 * ONE_K) 92 #define IO_MIN_PAGE_SIZE (4 * ONE_K) 93 #define IO_MAX_PAGE_SIZE (16 * ONE_K) 95 #define LOG_PAGESIZE (db_log_page_size()) 96 #define IO_PAGESIZE (db_io_page_size()) 97 #define DB_PAGESIZE (db_page_size()) 99 #define IS_POWER_OF_2(x) (((x) & ((x) - 1)) == 0) 105 #define DISK_SECTOR_NPAGES 64 106 #define IO_SECTORSIZE (DISK_SECTOR_NPAGES * IO_PAGESIZE) 107 #define DB_SECTORSIZE (DISK_SECTOR_NPAGES * DB_PAGESIZE) 109 #define VOL_MAX_NSECTS(page_size) (VOL_MAX_NPAGES(page_size) / DISK_SECTOR_NPAGES) 111 #define SECTOR_FIRST_PAGEID(sid) ((sid) * DISK_SECTOR_NPAGES) 112 #define SECTOR_LAST_PAGEID(sid) ((((sid) + 1) * DISK_SECTOR_NPAGES) - 1) 113 #define SECTOR_FROM_PAGEID(pageid) ((pageid) / DISK_SECTOR_NPAGES) 115 #define VSID_FROM_VPID(vsid, vpid) (vsid)->volid = (vpid)->volid; (vsid)->sectid = SECTOR_FROM_PAGEID ((vpid)->pageid) 116 #define VSID_IS_SECTOR_OF_VPID(vsid, vpid) \ 117 ((vsid)->volid == (vpid)->volid && (vsid)->sectid == SECTOR_FROM_PAGEID ((vpid)->pageid)) 119 #define DB_MAX_PATH_LENGTH PATH_MAX 121 #define DISK_VFID_SIZE (OR_INT_SIZE + OR_SHORT_SIZE) 122 #define DISK_VPID_SIZE (OR_INT_SIZE + OR_SHORT_SIZE) 124 #define DISK_VFID_ALIGNED_SIZE (DISK_VFID_SIZE + OR_SHORT_SIZE) 125 #define DISK_VPID_ALIGNED_SIZE (DISK_VPID_SIZE + OR_SHORT_SIZE) 130 #define NON_LEAF_RECORD_SIZE (DISK_VPID_ALIGNED_SIZE) 132 #define LEAF_RECORD_SIZE (0) 133 #define SPLIT_INFO_SIZE (OR_FLOAT_SIZE + OR_INT_SIZE) 165 #define ISCAN_OID_BUFFER_SIZE \ 166 ((((int) (IO_PAGESIZE * prm_get_float_value (PRM_ID_BT_OID_NBUFFERS))) \ 169 #define ISCAN_OID_BUFFER_COUNT \ 170 (ISCAN_OID_BUFFER_SIZE / OR_OID_SIZE) 175 #define ISCAN_OID_BUFFER_MIN_CAPACITY (2 * DB_PAGESIZE) 179 #define ISCAN_OID_BUFFER_CAPACITY \ 180 (MAX (ISCAN_OID_BUFFER_MIN_CAPACITY, ISCAN_OID_BUFFER_SIZE)) 194 #define HFID_INITIALIZER \ 195 { VFID_INITIALIZER, NULL_PAGEID } 196 #define HFID_AS_ARGS(hfid) (hfid)->hpgid, VFID_AS_ARGS (&(hfid)->vfid) 204 #define BTID_INITIALIZER \ 205 { VFID_INITIALIZER, NULL_PAGEID } 206 #define BTID_AS_ARGS(btid) (btid)->root_pageid, VFID_AS_ARGS (&(btid)->vfid) 227 #define RECORD_REPLACE_DATA(record, offset_to_data, old_data_size, \ 228 new_data_size, new_data) \ 231 assert ((record) != NULL); \ 232 assert ((record)->data != NULL); \ 233 assert ((offset_to_data) >= 0 && (offset_to_data) <= (record)->length); \ 234 assert ((old_data_size) >= 0 && (new_data_size) >= 0); \ 235 assert ((offset_to_data) + (old_data_size) <= (record)->length); \ 236 if ((old_data_size) != (new_data_size)) \ 239 if ((offset_to_data) + (old_data_size) < (record)->length) \ 242 memmove ((record)->data + (offset_to_data) + (new_data_size), \ 243 (record)->data + (offset_to_data) + (old_data_size), \ 244 (record)->length - (offset_to_data) - (old_data_size)); \ 247 (record)->length += (new_data_size) - (old_data_size); \ 250 if ((new_data_size) > 0) \ 252 memcpy ((record)->data + (offset_to_data), new_data, new_data_size); \ 257 #define RECORD_MOVE_DATA(rec, dest_offset, src_offset) \ 259 assert ((rec) != NULL && (dest_offset) >= 0 && (src_offset) >= 0); \ 260 assert (((rec)->length - (src_offset)) >= 0); \ 261 assert (((rec)->area_size <= 0) || ((rec)->area_size >= (rec)->length)); \ 262 assert (((rec)->area_size <= 0) \ 263 || (((rec)->length + ((dest_offset) - (src_offset))) \ 264 <= (rec)->area_size)); \ 265 if ((dest_offset) != (src_offset)) \ 267 if ((rec)->length != (src_offset)) \ 269 memmove ((rec)->data + (dest_offset), (rec)->data + (src_offset), \ 270 (rec)->length - (src_offset)); \ 271 (rec)->length = (rec)->length + ((dest_offset) - (src_offset)); \ 275 (rec)->length = (dest_offset); \ 288 #define RECDES_INITIALIZER { 0, -1, REC_UNKNOWN, NULL } 290 #define HFID_SET_NULL(hfid) \ 292 (hfid)->vfid.fileid = NULL_FILEID; \ 293 (hfid)->hpgid = NULL_PAGEID; \ 296 #define HFID_COPY(hfid_ptr1, hfid_ptr2) *(hfid_ptr1) = *(hfid_ptr2) 298 #define HFID_IS_NULL(hfid) (((hfid)->vfid.fileid == NULL_FILEID) ? 1 : 0) 300 #define BTID_SET_NULL(btid) \ 302 (btid)->vfid.fileid = NULL_FILEID; \ 303 (btid)->vfid.volid = NULL_VOLID; \ 304 (btid)->root_pageid = NULL_PAGEID; \ 307 #define BTID_COPY(btid_ptr1, btid_ptr2) *(btid_ptr1) = *(btid_ptr2) 309 #define BTID_IS_NULL(btid) (((btid)->vfid.fileid == NULL_FILEID) ? 1 : 0) 311 #define BTID_IS_EQUAL(b1,b2) \ 312 (((b1)->vfid.fileid == (b2)->vfid.fileid) && \ 313 ((b1)->vfid.volid == (b2)->vfid.volid)) 315 #define DISK_VOLPURPOSE DB_VOLPURPOSE 321 #define NULL_TRANID (-1) 322 #define NULL_TRAN_INDEX (-1) 323 #define MVCCID_NULL (0) 325 #define MVCCID_ALL_VISIBLE ((MVCCID) 3) 326 #define MVCCID_FIRST ((MVCCID) 4) 329 #define MVCCID_IS_VALID(id) ((id) != MVCCID_NULL) 331 #define MVCCID_IS_NORMAL(id) ((id) >= MVCCID_FIRST) 333 #define MVCCID_IS_EQUAL(id1,id2) ((id1) == (id2)) 335 #define MVCCID_IS_NOT_ALL_VISIBLE(id) \ 336 (MVCCID_IS_VALID (id) && ((id) != MVCCID_ALL_VISIBLE)) 339 #define MVCCID_FORWARD(id) \ 343 if ((id) < MVCCID_FIRST) \ 344 (id) = MVCCID_FIRST; \ 349 #define MVCCID_BACKWARD(id) \ 354 while ((id) < MVCCID_FIRST) 357 #define COMPOSITE_LOCK(scan_op_type) (scan_op_type != S_SELECT) 358 #define READONLY_SCAN(scan_op_type) (scan_op_type == S_SELECT) 386 #define LOCK_TO_LOCKMODE_STRING(lock) \ 387 (((lock) == NULL_LOCK) ? " NULL_LOCK" : \ 388 ((lock) == IS_LOCK) ? " IS_LOCK" : \ 389 ((lock) == S_LOCK) ? " S_LOCK" : \ 390 ((lock) == IX_LOCK) ? " IX_LOCK" : \ 391 ((lock) == SIX_LOCK) ? " SIX_LOCK" : \ 392 ((lock) == U_LOCK) ? " U_LOCK" : \ 393 ((lock) == BU_LOCK) ? " BU_LOCK" : \ 394 ((lock) == SCH_S_LOCK) ? " SCH_S_LOCK" : \ 395 ((lock) == SCH_M_LOCK) ? " SCH_M_LOCK" : \ 396 ((lock) == X_LOCK) ? " X_LOCK" : "UNKNOWN") 411 #define LC_DOESNOT_EXIST 2 438 #define CUBRID_MAGIC_MAX_LENGTH 25 439 #define CUBRID_MAGIC_PREFIX "CUBRID/" 440 #define CUBRID_MAGIC_DATABASE_VOLUME "CUBRID/Volume" 441 #define CUBRID_MAGIC_LOG_ACTIVE "CUBRID/LogActive" 442 #define CUBRID_MAGIC_LOG_ARCHIVE "CUBRID/LogArchive" 443 #define CUBRID_MAGIC_LOG_INFO "CUBRID/LogInfo" 444 #define CUBRID_MAGIC_DATABASE_BACKUP "CUBRID/Backup_v2" 445 #define CUBRID_MAGIC_DATABASE_BACKUP_OLD "CUBRID/Backup" 446 #define CUBRID_MAGIC_KEYS "CUBRID/Keys" 493 #define IS_WRITE_EXCLUSIVE_LOCK(lock) ((lock) == X_LOCK || (lock) == SCH_M_LOCK) 640 #define NULL_REPRID -1 641 #define NULL_ATTRID -1 958 #define CACHE_TIME_AS_ARGS(ct) (ct)->sec, (ct)->usec 960 #define CACHE_TIME_EQ(T1, T2) \ 961 (((T1)->sec != 0) && ((T1)->sec == (T2)->sec) && ((T1)->usec == (T2)->usec)) 963 #define CACHE_TIME_RESET(T) \ 971 #define CACHE_TIME_MAKE(CT, TV) \ 974 (CT)->sec = (TV)->tv_sec; \ 975 (CT)->usec = (TV)->tv_usec; \ 979 #define OR_CACHE_TIME_SIZE (OR_INT_SIZE * 2) 981 #define OR_PACK_CACHE_TIME(PTR, T) \ 984 if ((CACHE_TIME *) (T) != NULL) \ 986 PTR = or_pack_int (PTR, (T)->sec); \ 987 PTR = or_pack_int (PTR, (T)->usec); \ 991 PTR = or_pack_int (PTR, 0); \ 992 PTR = or_pack_int (PTR, 0); \ 997 #define OR_UNPACK_CACHE_TIME(PTR, T) \ 1000 if ((CACHE_TIME *) (T) != NULL) \ 1002 PTR = or_unpack_int (PTR, &((T)->sec)); \ 1003 PTR = or_unpack_int (PTR, &((T)->usec)); \ 1063 #define NUM_F_GENERIC_ARGS 32 1064 #define NUM_F_INSERT_SUBSTRING_ARGS 4 1077 #define SM_PROPERTY_UNIQUE "*U" 1078 #define SM_PROPERTY_INDEX "*I" 1079 #define SM_PROPERTY_NOT_NULL "*N" 1080 #define SM_PROPERTY_REVERSE_UNIQUE "*RU" 1081 #define SM_PROPERTY_REVERSE_INDEX "*RI" 1082 #define SM_PROPERTY_VID_KEY "*V_KY" 1083 #define SM_PROPERTY_PRIMARY_KEY "*P" 1084 #define SM_PROPERTY_FOREIGN_KEY "*FK" 1086 #define SM_PROPERTY_NUM_INDEX_FAMILY 6 1088 #define SM_FILTER_INDEX_ID "*FP*" 1089 #define SM_FUNCTION_INDEX_ID "*FI*" 1090 #define SM_PREFIX_INDEX_ID "*PLID*" 1149 #define SM_MAX_IDENTIFIER_LENGTH 255 1151 #define SERIAL_ATTR_NAME "name" 1152 #define SERIAL_ATTR_OWNER "owner" 1153 #define SERIAL_ATTR_CURRENT_VAL "current_val" 1154 #define SERIAL_ATTR_INCREMENT_VAL "increment_val" 1155 #define SERIAL_ATTR_MAX_VAL "max_val" 1156 #define SERIAL_ATTR_MIN_VAL "min_val" 1157 #define SERIAL_ATTR_CYCLIC "cyclic" 1158 #define SERIAL_ATTR_STARTED "started" 1159 #define SERIAL_ATTR_CLASS_NAME "class_name" 1160 #define SERIAL_ATTR_ATT_NAME "att_name" 1161 #define SERIAL_ATTR_CACHED_NUM "cached_num" 1162 #define SERIAL_ATTR_COMMENT "comment" 1231 #define SERVER_SESSION_KEY_SIZE 8
char * vpid_to_string(char *buf, int buf_size, VPID *vpid)
void recdes_set_data_area(RECDES *rec, char *data, int size)
INT16 db_log_page_size(void)
void recdes_free_data_area(RECDES *rec)
const int SM_MAX_STRING_LENGTH
char * vfid_to_string(char *buf, int buf_size, VFID *vfid)
const char * fcode_get_lowercase_name(FUNC_TYPE ftype)
INT16 db_io_page_size(void)
int db_set_page_size(INT16 io_page_size, INT16 log_page_size)
char * hfid_to_string(char *buf, int buf_size, HFID *hfid)
const char * fcode_get_uppercase_name(FUNC_TYPE ftype)
#define DB_MAX_PATH_LENGTH
char * oid_to_string(char *buf, int buf_size, OID *oid)
int recdes_allocate_data_area(RECDES *rec, int size)
void db_print_data(DB_TYPE type, DB_DATA *data, FILE *fd)
INT16 db_network_page_size(void)
char * btid_to_string(char *buf, int buf_size, BTID *btid)