35 #define LC_AREA_ONEOBJ_PACKED_SIZE (OR_INT_SIZE * 4 + \ 39 #define LC_MANYOBJS_PTR_IN_COPYAREA(copy_areaptr) \ 40 ((LC_COPYAREA_MANYOBJS *) ((char *)(copy_areaptr)->mem + \ 41 (copy_areaptr)->length - \ 42 DB_SIZEOF(LC_COPYAREA_MANYOBJS))) 44 #define LC_START_ONEOBJ_PTR_IN_COPYAREA(manyobjs_ptr) (&(manyobjs_ptr)->objs) 45 #define LC_LAST_ONEOBJ_PTR_IN_COPYAREA(manyobjs_ptr) \ 46 (&(manyobjs_ptr)->objs - ((manyobjs_ptr)->num_objs - 1)) 48 #define LC_NEXT_ONEOBJ_PTR_IN_COPYAREA(oneobj_ptr) ((oneobj_ptr) - 1) 49 #define LC_PRIOR_ONEOBJ_PTR_IN_COPYAREA(oneobj_ptr) ((oneobj_ptr) + 1) 51 #define LC_FIND_ONEOBJ_PTR_IN_COPYAREA(manyobjs_ptr, obj_num) \ 52 (&(manyobjs_ptr)->objs - (obj_num)) 54 #define LC_RECDES_TO_GET_ONEOBJ(copy_area_ptr, oneobj_ptr, recdes_ptr) \ 56 (recdes_ptr)->data = (char *) ((copy_area_ptr)->mem + \ 57 (oneobj_ptr)->offset); \ 58 (recdes_ptr)->length = (recdes_ptr)->area_size = (oneobj_ptr)->length; \ 59 if (!OID_IS_ROOTOID (&((oneobj_ptr)->class_oid))) \ 61 (recdes_ptr)->area_size += \ 62 (OR_MVCC_MAX_HEADER_SIZE - OR_MVCC_INSERT_HEADER_SIZE); \ 66 #define LC_REPL_RECDES_FOR_ONEOBJ(copy_area_ptr, oneobj_ptr, key_length, recdes_ptr) \ 68 (recdes_ptr)->data = (char *)((copy_area_ptr)->mem \ 69 + (oneobj_ptr)->offset + (key_length)); \ 70 (recdes_ptr)->length = (recdes_ptr)->area_size = (oneobj_ptr)->length \ 74 #define LC_RECDES_IN_COPYAREA(copy_area_ptr, recdes_ptr) \ 76 (recdes_ptr)->data = (copy_area_ptr)->mem; \ 77 (recdes_ptr)->area_size = \ 78 (copy_area_ptr)->length - DB_SIZEOF(LC_COPYAREA_MANYOBJS); \ 81 #define LC_REQOBJ_PACKED_SIZE (OR_OID_SIZE + OR_INT_SIZE * 2) 82 #define LC_CLASS_OF_REQOBJ_PACKED_SIZE (OR_OID_SIZE + OR_INT_SIZE) 84 #define LC_LOCKSET_PACKED_SIZE(req) \ 86 LC_CLASS_OF_REQOBJ_PACKED_SIZE * req->max_reqobjs + \ 87 LC_REQOBJ_PACKED_SIZE * req->max_reqobjs) 89 #define LC_LOCKHINT_CLASS_PACKED_SIZE (OR_OID_SIZE + OR_INT_SIZE * 3) 91 #define LC_LOCKHINT_PACKED_SIZE(lockhint) \ 93 LC_LOCKHINT_CLASS_PACKED_SIZE * lockhint->max_classes) 95 #define LC_COPY_ONEOBJ(new_obj, old_obj) \ 97 (new_obj)->operation = (old_obj)->operation; \ 98 (new_obj)->flag = (old_obj)->flag; \ 99 HFID_COPY(&((new_obj)->hfid), &((old_obj)->hfid)); \ 100 COPY_OID(&((new_obj)->class_oid), &((old_obj)->class_oid)); \ 101 COPY_OID(&((new_obj)->oid), &((old_obj)->oid)); \ 102 (new_obj)->length = (old_obj)->length; \ 103 (new_obj)->offset = (old_obj)->offset; \ 121 #define LC_IS_FLUSH_INSERT(operation) \ 122 (operation == LC_FLUSH_INSERT || operation == LC_FLUSH_INSERT_PRUNE \ 123 || operation == LC_FLUSH_INSERT_PRUNE_VERIFY) 125 #define LC_IS_FLUSH_UPDATE(operation) \ 126 (operation == LC_FLUSH_UPDATE || operation == LC_FLUSH_UPDATE_PRUNE \ 127 || operation == LC_FLUSH_UPDATE_PRUNE_VERIFY) 186 #define LC_FETCH_IS_MVCC_VERSION_NEEDED(fetch_type) \ 187 ((fetch_type) == LC_FETCH_MVCC_VERSION) 189 #define LC_FETCH_IS_DIRTY_VERSION_NEEDED(fetch_type) \ 190 ((fetch_type) == LC_FETCH_DIRTY_VERSION) 192 #define LC_FETCH_IS_CURRENT_VERSION_NEEDED(fetch_type) \ 193 ((fetch_type) == LC_FETCH_CURRENT_VERSION) 195 #define LC_FLAG_HAS_INDEX_MASK 0x05 196 #define LC_ONEOBJ_GET_INDEX_FLAG(obj) \ 197 ((obj)->flag & LC_FLAG_HAS_INDEX_MASK) 199 #define LC_FLAG_HAS_INDEX 0x01 200 #define LC_FLAG_UPDATED_BY_ME 0x02 201 #define LC_FLAG_HAS_UNIQUE_INDEX 0x04 203 #define LC_ONEOBJ_SET_HAS_INDEX(obj) \ 204 (obj)->flag |= LC_FLAG_HAS_INDEX 206 #define LC_ONEOBJ_SET_HAS_UNIQUE_INDEX(obj) \ 207 (obj)->flag |= LC_FLAG_HAS_UNIQUE_INDEX 209 #define LC_ONEOBJ_IS_UPDATED_BY_ME(obj) \ 210 (((obj)->flag & LC_FLAG_UPDATED_BY_ME) != 0) 212 #define LC_ONEOBJ_SET_UPDATED_BY_ME(obj) \ 213 (obj)->flag |= LC_FLAG_UPDATED_BY_ME 392 #if defined (ENABLE_UNUSED_FUNCTION) 403 #if defined(SERVER_MODE) 407 char **contents_ptr,
int contents_length);
411 #if defined (ENABLE_UNUSED_FUNCTION) 417 bool unpack_objects,
bool reg_unpacked);
445 #if defined(CUBRID_DEBUG) 446 extern void locator_dump_copy_area (FILE * out_fp,
const LC_COPYAREA * copyarea,
int print_rec);
447 extern void locator_dump_lockset (FILE * out_fp,
LC_LOCKSET * lockset);
448 extern void locator_dump_lockhint (FILE * out_fp,
LC_LOCKHINT * lockhint);
LC_OIDSET * locator_unpack_oid_set_to_new(THREAD_ENTRY *thread_p, char *buffer)
void locator_manyobj_flag_set(LC_COPYAREA_MANYOBJS *copyarea, enum MULTI_UPDATE_FLAG muf)
LC_LOCKSET_CLASSOF * classes
LC_COPYAREA * locator_recv_allocate_copyarea(int num_objs, char **packed_desc, int packed_desc_length, char **contents_ptr, int contents_length)
LC_LOCKHINT * locator_allocate_and_unpack_lockhint(char *unpacked, int unpacked_size, bool unpack_classes, bool reg_unpacked)
LC_LOCKSET * locator_allocate_and_unpack_lockset(char *unpacked, int unpacked_size, bool unpack_classes, bool unpack_objects, bool reg_unpacked)
LC_LOCKHINT * locator_allocate_lockhint(int max_classes, bool quit_on_errors)
int locator_unpack_lockhint(LC_LOCKHINT *lockhint, bool unpack_classes)
int num_classes_processed
char * locator_pack_copy_area_descriptor(int num_objs, LC_COPYAREA *copyarea, char *desc, int desc_len)
char * locator_pack_oid_set(char *buffer, LC_OIDSET *oidset)
LC_LOCKSET * locator_reallocate_lockset(LC_LOCKSET *lockset, int max_reqobjs)
void locator_free_lockset(LC_LOCKSET *lockset)
void locator_free_copy_area(LC_COPYAREA *copyarea)
enum lc_prefetch_flags LC_PREFETCH_FLAGS
void locator_manyobj_flag_remove(LC_COPYAREA_MANYOBJS *copyarea, enum MULTI_UPDATE_FLAG muf)
LC_LOCKSET_REQOBJ * objects
bool locator_manyobj_flag_is_set(LC_COPYAREA_MANYOBJS *copyarea, enum MULTI_UPDATE_FLAG muf)
LC_LOCKSET * locator_allocate_lockset(int max_reqobjs, LOCK reqobj_inst_lock, LOCK reqobj_class_lock, int quit_on_errors)
LC_CLASS_OIDSET * classes
LC_LOCKHINT * locator_reallocate_lockhint(LC_LOCKHINT *lockhint, int max_classes)
int locator_get_packed_oid_set_size(LC_OIDSET *oidset)
bool first_fetch_lockhint_call
void locator_clear_oid_set(THREAD_ENTRY *thrd, LC_OIDSET *oidset)
struct lc_class_oidset * next
LC_COPYAREA_ONEOBJ ** obj
LC_OIDSET * locator_make_oid_set(void)
int locator_pack_lockset(LC_LOCKSET *lockset, bool pack_classes, bool pack_objects)
char * locator_unpack_copy_area_descriptor(int num_objs, LC_COPYAREA *copyarea, char *desc)
LC_COPYAREA * locator_allocate_copy_area_by_length(int length)
int locator_send_copy_area(LC_COPYAREA *copyarea, char **contents_ptr, int *contents_length, char **desc_ptr, int *desc_length)
int locator_pack_lockhint(LC_LOCKHINT *lockhint, bool pack_classes)
void locator_free_areas(void)
void locator_free_lockhint(LC_LOCKHINT *lockhint)
int num_classes_of_reqobjs_processed
void locator_free_oid_set(THREAD_ENTRY *thread_p, LC_OIDSET *oidset)
LC_COPYAREA_MANYOBJS * mobjs
int locator_unpack_lockset(LC_LOCKSET *lockset, bool unpack_classes, bool unpack_objects)
int num_classes_of_reqobjs
int num_reqobjs_processed
bool first_fetch_lockset_call
LC_COPYAREA * locator_reallocate_copy_area_by_length(LC_COPYAREA *old_area, int new_length)
LC_COPYAREA_OPERATION operation
void locator_initialize_areas(void)
int last_classof_reqobjs_cached
LC_LOCKHINT_CLASS * classes
bool locator_unpack_oid_set_to_exist(char *buffer, LC_OIDSET *use)
LC_OIDMAP * locator_add_oid_set(THREAD_ENTRY *thrd, LC_OIDSET *set, HFID *heap, OID *class_oid, OID *obj_oid)