25 #ifndef _WORK_SPACE_H_ 26 #define _WORK_SPACE_H_ 37 #if defined (SERVER_MODE) 38 #error does not belong to server 209 #define IS_CLASS_MOP(mop) (((mop)->class_mop == sm_Root_class_mop) ? 1 : 0) 210 #define IS_ROOT_MOP(mop) (((mop) == sm_Root_class_mop) ? 1 : 0) 248 #define WS_PUT_COMMIT_MOP(mop) \ 251 if (!(mop)->commit_link) \ 253 (mop)->commit_link = ws_Commit_mops ? ws_Commit_mops : (mop); \ 254 ws_Commit_mops = (mop); \ 259 #define WS_ISDIRTY(mop) (ws_is_dirty (mop)) 261 #define WS_SET_DIRTY(mop) \ 264 if (!WS_ISDIRTY(mop)) \ 267 WS_PUT_COMMIT_MOP(mop); \ 268 ws_Num_dirty_mop++; \ 273 #define WS_RESET_DIRTY(mop) \ 276 if (WS_ISDIRTY(mop)) \ 279 ws_Num_dirty_mop--; \ 284 #define WS_IS_DELETED(mop) (ws_is_deleted (mop)) 286 #define WS_SET_DELETED(mop) (ws_set_deleted (mop)) 288 #define WS_ISVID(mop) ((mop)->is_vid) 293 #define WS_OID(mop) (WS_ISVID (mop) ? (OID *) (&oid_Null_oid) : &(mop)->oid_info.oid) 294 #define WS_REAL_OID(mop) (&(mop)->oid_info.oid) 295 #define WS_VID_INFO(mop) ((mop)->oid_info.vid_info) 296 #define WS_CLASS_MOP(mop) ((mop)->class_mop) 297 #define WS_SET_LOCK(mop, lock) \ 300 (mop)->lock = lock; \ 301 if (lock != NULL_LOCK) \ 303 WS_PUT_COMMIT_MOP (mop); \ 308 #define WS_GET_LOCK(mop) ((mop)->lock) 309 #define WS_CHN(obj) (((WS_OBJECT_HEADER *) (obj))->chn) 310 #define WS_ISPINNED(mop) ((mop)->pinned) 311 #define WS_SET_NO_OBJECTS(mop) \ 314 (mop)->no_objects = 1; \ 315 WS_PUT_COMMIT_MOP (mop); \ 328 #define WS_MOP_IS_NULL(mop) \ 329 (((mop == NULL) || WS_IS_DELETED (mop) || (OID_ISNULL (&(mop)->oid_info.oid) && !(mop)->is_vid)) ? 1 : 0) 339 #define WS_MOP_COMPOSITION_FETCH_BIT 0x80 341 #define WS_MOP_GET_COMPOSITION_FETCH(mop) \ 342 ((mop)->composition_fetch & WS_MOP_COMPOSITION_FETCH_BIT) 344 #define WS_MOP_SET_COMPOSITION_FETCH(mop) \ 347 (mop)->composition_fetch |= WS_MOP_COMPOSITION_FETCH_BIT; \ 348 WS_PUT_COMMIT_MOP (mop); \ 360 #define WS_MOP_GET_PRUNE_LEVEL(mop) ((mop)->composition_fetch & ~WS_MOP_COMPOSITION_FETCH_BIT) 361 #define WS_MOP_SET_PRUNE_LEVEL(mop, value) \ 366 (mop)->composition_fetch &= WS_MOP_COMPOSITION_FETCH_BIT; \ 370 (mop)->composition_fetch |= (value & ~WS_MOP_COMPOSITION_FETCH_BIT); \ 376 #define ws_free_string_and_init(str) \ 379 ws_free_string ((str)); \ 384 #define ml_free_and_init(list) \ 392 #define ws_list_free_and_init(list, function) \ 395 ws_list_free ((DB_LIST *)(list), (LFREEER)(function)); \ 530 #if defined (CUBRID_DEBUG) 531 extern int ws_map (
MAPFUNC function,
void *args);
542 extern void ws_dump (FILE * fpp);
543 #if defined (CUBRID_DEBUG) 544 extern void ws_dump_mops (
void);
561 typedef void *(*LCOPIER) (
void *);
573 #define WS_LIST_LENGTH(lst) \ 574 ws_list_length ((DB_LIST *) (lst)) 575 #define WS_LIST_FREE(lst, func) \ 576 ws_list_free ((DB_LIST *) (lst), (LFREEER) func) 577 #define WS_LIST_APPEND(lst, element) \ 578 ws_list_append ((DB_LIST **) (lst), (DB_LIST *) element) 579 #define WS_LIST_COPY(lst, copier) \ 580 ws_list_copy ((DB_LIST *) (lst), copier, NULL) 581 #define WS_LIST_REMOVE(lst, element) \ 582 ws_list_remove ((DB_LIST **) (lst), (DB_LIST *) element) 583 #define WS_LIST_NCONC(lst1, lst2) \ 584 ws_list_nconc ((DB_LIST *) (lst1), (DB_LIST *) lst2) 610 #define NLIST_FIND(lst, name) nlist_find ((DB_NAMELIST *) (lst), name, NULL) 629 #if defined (ENABLE_UNUSED_FUNCTION) int ml_remove(DB_OBJLIST **list, MOP mop)
enum ws_map_status WS_MAP_STATUS
int nlist_add(DB_NAMELIST **list, const char *name, NLSEARCHER fcn, int *added)
DB_NAMELIST * nlist_remove(DB_NAMELIST **list, const char *name, NLSEARCHER fcn)
void ws_cache(MOBJ obj, MOP mop, MOP class_mop)
MOP ws_mop(const OID *oid, MOP class_mop)
void ws_remove_label_value_from_mop(MOP mop, DB_VALUE *val)
MOP ws_vmop(MOP class_mop, int flags, DB_VALUE *keys)
WS_REPL_OBJ * ws_get_repl_obj_from_list(void)
void ws_set_lock(MOP mop, LOCK lock)
void ws_clear_hints(MOP obj, bool leave_pinned)
unsigned int ws_Mop_table_size
struct db_object * dirty_link
void ws_restore_pin(MOP obj, int opin, int cpin)
void ws_release_instance(MOP class_mop)
void ws_decache_allxlockmops_but_norealclasses(void)
int dirty_list_emergencies
void ws_set_mop_fetched_with_current_snapshot(MOP mop)
MOP ws_mop_if_exists(OID *oid)
unsigned int ws_get_mvcc_snapshot_version(void)
DB_NAMELIST * nlist_filter(DB_NAMELIST **root, const char *name, NLSEARCHER fcn)
void *(* LCOPIER)(void *)
int instance_list_emergencies
void ws_remove_resident_class(MOP class_op)
int ws_set_ignore_error_list_for_mflush(int error_count, int *error_list)
void ws_clean_label_value_list(MOP mop)
void ws_mark_instances_deleted(MOP class_op)
OID * ws_identifier_with_check(MOP mop, const bool check_non_referable)
enum ws_find_mop_status WS_FIND_MOP_STATUS
void ml_free(DB_OBJLIST *list)
void ws_list_free(DB_LIST *list, LFREEER function)
void ws_disconnect_deleted_instances(MOP class_mop)
void ws_reset_authorization_cache(void)
void ws_free_repl_obj(WS_REPL_OBJ *obj)
DB_OBJLIST * ml_ext_alloc_link(void)
int nlist_append(DB_NAMELIST **list, const char *name, NLSEARCHER fcn, int *added)
int ignored_class_assignments
int(* MOPFILTER)(MOP op, void *args)
int ws_hide_new_old_trigger_obj(MOP op)
void ws_release_user_instance(MOP mop)
void ws_clear_all_hints(bool retain_lock)
void ws_free_string(const char *str)
void ws_pin_instance_and_class(MOP obj, int *opin, int *cpin)
OID * ws_identifier(MOP mop)
void ws_move_label_value_list(MOP dest_mop, MOP src_mop)
int ws_add_to_repl_obj_list(OID *class_oid, char *packed_pkey_value, int packed_pkey_value_length, RECDES *recdes, int operation, bool has_index)
int packed_pkey_value_length
WS_VALUE_LIST * label_value_list
bool ws_is_mop_fetched_with_current_snapshot(MOP mop)
DB_LIST * ws_list_nconc(DB_LIST *list1, DB_LIST *list2)
void ws_abort_transaction(void)
int ws_Error_ignore_count
bool ws_is_same_object(MOP mop1, MOP mop2)
unsigned int mvcc_snapshot_version
int ml_ext_add(DB_OBJLIST **list, MOP mop, int *added)
WS_MOP_TABLE_ENTRY * ws_Mop_table
void ws_mark_deleted(MOP mop)
MOP ws_find_class(const char *name)
int ws_update_oid_and_class(MOP mop, OID *new_oid, OID *new_class_oid)
struct ws_value_list * next
int(* MAPFUNC)(MOP mop, void *args)
int ws_is_deleted(MOP mop)
void ws_list_append(DB_LIST **list, DB_LIST *element)
void ws_init_repl_objs(void)
void ws_decache_all_instances(MOP classmop)
void ws_increment_mvcc_snapshot_version(void)
void ws_set_repl_error_into_error_link(LC_COPYAREA_ONEOBJ *obj, char *content_ptr)
struct db_object * class_mop
void ws_filter_dirty(void)
int ml_add(DB_OBJLIST **list, MOP mop, int *added)
struct db_object * commit_link
MOP ws_make_temp_mop(void)
int ws_add_label_value_to_mop(MOP mop, DB_VALUE *val)
int ws_map_class(MOP class_op, MAPFUNC function, void *args)
void ws_update_oid(MOP mop, OID *newoid)
int ws_class_has_cached_objects(MOP class_mop)
bool ws_rehash_vmop(MOP mop, MOBJ class_obj, DB_VALUE *newkey)
DB_OBJLIST * ws_Resident_classes
enum vid_info_flag VID_INFO_FLAG
int ws_list_length(DB_LIST *list)
int ml_append(DB_OBJLIST **list, MOP mop, int *added)
void ws_intern_instances(MOP class_mop)
void ml_ext_free_link(DB_OBJLIST *list)
int ml_size(DB_OBJLIST *list)
void ws_free_temp_mop(MOP op)
int ws_find(MOP mop, MOBJ *obj)
LOCK ws_get_lock(MOP mop)
WS_REPL_FLUSH_ERR * ws_get_repl_error_from_error_link(void)
void ws_set_class(MOP inst, MOP class_mop)
void ws_drop_classname(MOBJ classobj)
unsigned char composition_fetch
int ws_map_dirty(MAPFUNC function, void *args)
int ws_map_class_dirty(MOP class_op, MAPFUNC function, void *args)
void ws_class_has_object_dependencies(MOP mop)
DB_OBJLIST * ml_copy(DB_OBJLIST *list)
unsigned char pruning_type
int ws_list_remove(DB_LIST **list, DB_LIST *element)
void ws_free_repl_flush_error(WS_REPL_FLUSH_ERR *flush_err)
struct db_object * hash_link
int nlist_find_or_append(DB_NAMELIST **list, const char *name, NLSEARCHER fcn, int *position)
DB_C_INT(* NLSEARCHER)(const void *, const void *)
void ws_add_classname(MOBJ classobj, MOP classmop, const char *cl_name)
DB_VALUE * ws_keys(MOP vid, unsigned int *flags)
DB_NAMELIST * nlist_find(DB_NAMELIST *list, const char *name, NLSEARCHER fcn)
DB_OBJLIST * ml_ext_copy(DB_OBJLIST *list)
struct db_object * class_link
int ws_Error_ignore_list[-ER_LAST_ERROR]
void ml_ext_free(DB_OBJLIST *list)
bool ws_has_updated(void)
char * ws_copy_string(const char *str)
struct ws_repl_flush_err * error_link
int ws_pin(MOP mop, int pin)
void ws_clear_all_repl_objs(void)
void ws_unhide_new_old_trigger_obj(MOP op)
int ws_list_total(DB_LIST *list, LTOTALER function)
int ws_mop_compare(MOP mop1, MOP mop2)
int ws_has_dirty_objects(MOP op, int *isvirt)
int ml_find(DB_OBJLIST *list, MOP mop)
MOP ws_new_mop(OID *oid, MOP class_mop)
void ws_abort_mops(bool only_unpinned)
struct ws_repl_obj * next
void ws_set_deleted(MOP mop)
MOP ws_class_mop(MOP mop)
MOP ws_cache_with_oid(MOBJ obj, OID *oid, MOP class_mop)
DB_LIST * ws_list_copy(DB_LIST *list, LCOPIER copier, LFREEER freeer)
void nlist_free(DB_NAMELIST *list)
void ws_clear_all_repl_errors_of_error_link(void)
DB_NAMELIST * nlist_copy(DB_NAMELIST *list)