CUBRID Engine  latest
locator_cl.h
Go to the documentation of this file.
1 /*
2  * Copyright 2008 Search Solution Corporation
3  * Copyright 2016 CUBRID Corporation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 
20 /*
21  * locator_cl.h - Transaction object locator interfacee (at client)
22  *
23  * Note: See .c file for overview and description of the interface functions.
24  */
25 
26 #ifndef _LOCATOR_CL_H_
27 #define _LOCATOR_CL_H_
28 
29 #ident "$Id$"
30 
31 #if defined (SERVER_MODE)
32 #error Does not belong to server module
33 #endif /* SERVER_MODE */
34 
35 #include "config.h"
36 #include "error_manager.h"
37 #include "work_space.h"
38 #include "storage_common.h"
39 #include "locator.h"
40 #include "replication.h"
41 
42 // forward declarations
43 struct log_lsa;
44 
45 #define ONE_MFLUSH true
46 #define MANY_MFLUSHES false
47 
48 #define DECACHE true
49 #define DONT_DECACHE false
50 
51 #define OID_BATCH_SIZE 2000
52 
53 #define LC_INSERT_OPERATION_TYPE(p) \
54  ((p)==DB_NOT_PARTITIONED_CLASS ? LC_FLUSH_INSERT : \
55  ((p)==DB_PARTITIONED_CLASS ? LC_FLUSH_INSERT_PRUNE :\
56  LC_FLUSH_INSERT_PRUNE_VERIFY))
57 
58 #define LC_UPDATE_OPERATION_TYPE(p) \
59  ((p)==DB_NOT_PARTITIONED_CLASS ? LC_FLUSH_UPDATE : \
60  ((p)==DB_PARTITIONED_CLASS ? LC_FLUSH_UPDATE_PRUNE :\
61  LC_FLUSH_UPDATE_PRUNE_VERIFY))
62 
63 typedef struct list_mops LIST_MOPS;
64 struct list_mops
65 {
66  int num;
67  MOP mops[1];
68 };
69 
70 typedef enum
71 {
72  LC_OBJECT, /* Don't know if it is an instance or a class */
73  LC_CLASS, /* A class */
74  LC_INSTANCE /* An instance */
75 } LC_OBJTYPE;
76 
77 extern bool locator_is_root (MOP mop);
78 extern int locator_is_class (MOP mop, DB_FETCH_MODE hint_purpose);
80  LC_FETCH_VERSION_TYPE fetch_version_type);
82 extern MOBJ locator_fetch_object (MOP mop, DB_FETCH_MODE purpose, LC_FETCH_VERSION_TYPE fetch_version_type);
83 extern MOBJ locator_fetch_class (MOP class_mop, DB_FETCH_MODE purpose);
84 extern MOBJ locator_fetch_class_of_instance (MOP inst_mop, MOP * class_mop, DB_FETCH_MODE purpose);
85 extern MOBJ locator_fetch_instance (MOP mop, DB_FETCH_MODE purpose, LC_FETCH_VERSION_TYPE fetch_version_type);
86 extern MOBJ locator_fetch_set (int num_mops, MOP * mop_set, DB_FETCH_MODE inst_purpose, DB_FETCH_MODE class_purpose,
87  int quit_on_errors);
88 extern MOBJ locator_fetch_nested (MOP mop, DB_FETCH_MODE purpose, int prune_level, int quit_on_errors);
89 extern int locator_flush_class (MOP class_mop);
90 extern int locator_flush_instance (MOP mop);
91 #if defined (ENABLE_UNUSED_FUNCTION)
92 extern int locator_flush_and_decache_instance (MOP mop);
93 #endif
94 extern int locator_flush_all_instances (MOP class_mop, bool decache);
95 extern int locator_flush_for_multi_update (MOP class_mop);
96 extern int locator_all_flush (void);
97 extern int locator_repl_flush_all (void);
98 extern MOP locator_add_class (MOBJ classobj, const char *classname);
99 extern MOP locator_add_instance (MOBJ instance, MOP class_mop);
100 extern MOP locator_add_root (OID * root_oid, MOBJ class_root);
101 extern int locator_remove_class (MOP class_mop);
102 extern void locator_remove_instance (MOP mop);
103 extern MOBJ locator_update_instance (MOP mop);
104 extern MOBJ locator_update_class (MOP mop);
105 extern int locator_update_tree_classes (MOP * classes_mop_set, int num_classes);
106 extern MOBJ locator_prepare_rename_class (MOP class_mop, const char *old_classname, const char *new_classname);
107 extern OID *locator_assign_permanent_oid (MOP mop);
108 extern MOP locator_find_class (const char *classname);
109 extern MOP locator_find_class_with_purpose (const char *classname, bool for_update);
110 
111 #if defined (ENABLE_UNUSED_FUNCTION)
112 extern LC_FIND_CLASSNAME locator_find_query_class (const char *classname, DB_FETCH_MODE purpose, MOP * class_mop);
113 #endif
114 extern LC_FIND_CLASSNAME locator_lockhint_classes (int num_classes, const char **many_classnames, LOCK * many_locks,
115  int *need_subclasses, LC_PREFETCH_FLAGS * flags, int quit_on_errors,
116  LOCK lock_rr_tran);
117 extern int locator_does_exist_object (MOP mop, DB_FETCH_MODE purpose);
118 extern LIST_MOPS *locator_get_all_mops (MOP class_mop, DB_FETCH_MODE class_purpose,
119  LC_FETCH_VERSION_TYPE * force_fetch_version_type);
120 extern LIST_MOPS *locator_get_all_class_mops (DB_FETCH_MODE purpose, int (*fun) (MOBJ class_obj));
121 #if defined (ENABLE_UNUSED_FUNCTION)
122 extern LIST_MOPS *locator_get_all_nested_mops (MOP mop, int prune_level, DB_FETCH_MODE inst_purpose);
123 #endif
124 extern void locator_free_list_mops (LIST_MOPS * mops);
125 extern void locator_synch_isolation_incons (void);
126 extern void locator_set_sig_interrupt (int set);
127 extern MOBJ locator_create_heap_if_needed (MOP class_mop, bool reuse_oid);
128 extern MOBJ locator_has_heap (MOP class_mop);
129 
130 typedef void (*LC_OIDMAP_CALLBACK) (LC_OIDMAP * map);
131 
132 extern LC_OIDMAP *locator_add_oidset_object (LC_OIDSET * oidset, DB_OBJECT * obj);
133 extern int locator_assign_oidset (LC_OIDSET * oidset, LC_OIDMAP_CALLBACK callback);
134 extern int locator_assign_all_permanent_oids (void);
135 
136 extern int locator_decache_all_lock_instances (MOP class_mop);
137 
138 extern int locator_get_append_lsa (struct log_lsa *lsa);
140 
141 extern LC_FIND_CLASSNAME locator_reserve_class_name (const char *class_name, OID * class_oid);
142 
143 #endif /* _LOCATOR_CL_H_ */
LC_FETCH_VERSION_TYPE
Definition: locator.h:178
MOBJ locator_update_instance(MOP mop)
Definition: locator_cl.c:6035
void locator_free_list_mops(LIST_MOPS *mops)
Definition: locator_cl.c:2978
int locator_flush_instance(MOP mop)
Definition: locator_cl.c:5236
LC_FIND_CLASSNAME locator_reserve_class_name(const char *class_name, OID *class_oid)
Definition: locator_cl.c:179
OID * locator_assign_permanent_oid(MOP mop)
Definition: locator_cl.c:6084
MOBJ locator_create_heap_if_needed(MOP class_mop, bool reuse_oid)
Definition: locator_cl.c:5690
char * MOBJ
Definition: work_space.h:174
int locator_get_append_lsa(struct log_lsa *lsa)
Definition: locator_cl.c:6882
int locator_repl_flush_all(void)
Definition: locator_cl.c:5500
MOBJ locator_fetch_class(MOP class_mop, DB_FETCH_MODE purpose)
Definition: locator_cl.c:2293
LC_OIDMAP * locator_add_oidset_object(LC_OIDSET *oidset, DB_OBJECT *obj)
MOBJ locator_fetch_set(int num_mops, MOP *mop_set, DB_FETCH_MODE inst_purpose, DB_FETCH_MODE class_purpose, int quit_on_errors)
Definition: locator_cl.c:2464
MOBJ locator_prepare_rename_class(MOP class_mop, const char *old_classname, const char *new_classname)
Definition: locator_cl.c:5975
int locator_all_flush(void)
Definition: locator_cl.c:5457
void locator_synch_isolation_incons(void)
Definition: locator_cl.c:6171
MOBJ locator_fetch_nested(MOP mop, DB_FETCH_MODE purpose, int prune_level, int quit_on_errors)
Definition: locator_cl.c:2549
void(* LC_OIDMAP_CALLBACK)(LC_OIDMAP *map)
Definition: locator_cl.h:130
enum lc_prefetch_flags LC_PREFETCH_FLAGS
Definition: locator.h:339
int locator_decache_all_lock_instances(MOP class_mop)
Definition: locator_cl.c:3293
int locator_remove_class(MOP class_mop)
Definition: locator_cl.c:5858
int locator_update_tree_classes(MOP *classes_mop_set, int num_classes)
LC_OBJTYPE
Definition: locator_cl.h:70
int locator_assign_oidset(LC_OIDSET *oidset, LC_OIDMAP_CALLBACK callback)
Definition: locator_cl.c:6687
void locator_set_sig_interrupt(int set)
Definition: locator_cl.c:193
LOCK
MOP locator_add_class(MOBJ classobj, const char *classname)
Definition: locator_cl.c:5595
MOBJ locator_fetch_instance(MOP mop, DB_FETCH_MODE purpose, LC_FETCH_VERSION_TYPE fetch_version_type)
Definition: locator_cl.c:2393
int locator_get_cache_coherency_number(MOP mop)
Definition: locator_cl.c:2171
int locator_flush_replication_info(REPL_INFO *repl_info)
Definition: locator_cl.c:6869
MOP locator_find_class_with_purpose(const char *classname, bool for_update)
Definition: locator_cl.c:3167
int locator_flush_all_instances(MOP class_mop, bool decache)
Definition: locator_cl.c:5278
MOBJ locator_update_class(MOP mop)
Definition: locator_cl.c:5938
LIST_MOPS * locator_get_all_mops(MOP class_mop, DB_FETCH_MODE class_purpose, LC_FETCH_VERSION_TYPE *force_fetch_version_type)
Definition: locator_cl.c:2839
LC_FIND_CLASSNAME
MOBJ locator_has_heap(MOP class_mop)
Definition: locator_cl.c:5761
LOCK locator_fetch_mode_to_lock(DB_FETCH_MODE purpose, LC_OBJTYPE type, LC_FETCH_VERSION_TYPE fetch_version_type)
Definition: locator_cl.c:2068
MOP locator_add_root(OID *root_oid, MOBJ class_root)
Definition: locator_cl.c:5544
MOBJ locator_fetch_object(MOP mop, DB_FETCH_MODE purpose, LC_FETCH_VERSION_TYPE fetch_version_type)
Definition: locator_cl.c:2235
entry_workpool * instance
int locator_flush_for_multi_update(MOP class_mop)
Definition: locator_cl.c:5401
MOP locator_add_instance(MOBJ instance, MOP class_mop)
Definition: locator_cl.c:5782
MOP locator_find_class(const char *classname)
Definition: locator_cl.c:3142
void locator_remove_instance(MOP mop)
Definition: locator_cl.c:5916
MOP mops[1]
Definition: locator_cl.h:67
LIST_MOPS * locator_get_all_class_mops(DB_FETCH_MODE purpose, int(*fun)(MOBJ class_obj))
Definition: locator_cl.c:2861
int locator_assign_all_permanent_oids(void)
Definition: locator_cl.c:6836
MOBJ locator_fetch_class_of_instance(MOP inst_mop, MOP *class_mop, DB_FETCH_MODE purpose)
Definition: locator_cl.c:2354
DB_FETCH_MODE
Definition: dbtype_def.h:215
bool locator_is_root(MOP mop)
Definition: locator_cl.c:212
int locator_flush_class(MOP class_mop)
Definition: locator_cl.c:5068
int locator_does_exist_object(MOP mop, DB_FETCH_MODE purpose)
Definition: locator_cl.c:3242
LC_FIND_CLASSNAME locator_lockhint_classes(int num_classes, const char **many_classnames, LOCK *many_locks, int *need_subclasses, LC_PREFETCH_FLAGS *flags, int quit_on_errors, LOCK lock_rr_tran)
Definition: locator_cl.c:6260
int locator_is_class(MOP mop, DB_FETCH_MODE hint_purpose)
Definition: locator_cl.c:239