44 #define ENCODED_LEN(siz) (2*(siz)) 45 #define MAX_STRING_OID_LENGTH 4096 46 #define MIN_STRING_OID_LENGTH 18 59 #if defined(ENABLE_UNUSED_FUNCTION) 61 DB_VALUE * destination_value,
int *has_object);
77 if (!class_p || !class_object_p)
205 MOP class_mop, base_mop;
245 fetch_version_type = read_fetch_version_type;
265 #if defined(ENABLE_UNUSED_FUNCTION) 291 MOP ref_mop, proxy_class_mop;
302 if (temp_object !=
NULL)
334 if (proxy_class_mop ==
NULL)
355 for (set_index = 0; set_index <
set_size; ++set_index)
357 error =
db_set_get (
set, set_index, &set_value);
363 error = vid_convert_object_attr_value (attribute_p, &set_value, &new_set_value, has_object);
378 for (set_index = 0; set_index <
set_size; ++set_index)
380 error =
db_seq_get (
set, set_index, &set_value);
385 error = vid_convert_object_attr_value (attribute_p, &set_value, &new_set_value, has_object);
388 error =
db_seq_put (new_set, set_index, &new_set_value);
480 int return_code, isvid, isnew_oo;
501 else if (isvid && isbase && !isnew_oo)
615 if (!instance || !vclass_mop || !bclass_mop || !bclass)
648 int vclass_updatable;
650 if (!bmop || !vclass_mop)
811 #if defined(ENABLE_UNUSED_FUNCTION) 820 vid_set_att_obj_id (
const char *class_name,
SM_ATTRIBUTE * attribute_p,
int id_no)
918 MOP attobj1, attobj2;
922 if ((mop1 ==
NULL) || (mop2 ==
NULL))
945 if ((!inst1) || (!inst2))
957 mem1 = inst1 + att1->
offset;
958 mem2 = inst2 + att2->
offset;
969 if ((set1 !=
NULL) && (set2 !=
NULL))
999 if (!attobj1 || (attobj1 != attobj2))
1089 if ((mop ==
NULL) || (seq ==
NULL))
1121 #if defined(CUBRID_DEBUG) 1148 mem = inst + attribute_p->
offset;
1258 *value = mop_vid_info->
keys;
1282 const char *class_name;
1294 if (!class_mop || !class_p)
1308 snprintf (query,
sizeof (query) - 1,
"SELECT [%s] FROM [%s]", class_name, class_name);
1328 for (t = 0; t < tuple_cnt; ++t)
1350 new1->
next = objlst;
1399 int i, size, flags = 0;
1423 for (i = 0; i < size; i++)
1465 if (bclass && bclass->object ==
NULL 1500 obj =
ws_vmop (bclass, flags, &keys);
1538 *mop =
ws_vmop (vclass, flags, &temp);
1549 *mop =
ws_vmop (vclass, flags, &keys);
1632 const OID *view_oid;
1633 const OID *class_oid;
1639 (vobj)->domain.general_info.is_null = 1;
1640 (vobj)->need_clear =
false;
1657 view_oid =
ws_oid (view_class);
1662 class_oid =
ws_oid (real_class);
1693 int has_proxy, has_view;
1697 has_proxy = (proxy_id && !
OID_ISNULL (proxy_id));
1698 has_view = (view_id && !
OID_ISNULL (view_id));
1799 or_init (&buf, lbuf, val_size);
1843 if (buflen <= *vobj_size)
1848 (void) memset (buf, 0, *vobj_size);
1926 temp_oid =
WS_OID (
object);
1930 temp_oid =
WS_OID (
object);
1959 if (!real_object || real_object ==
object)
1972 else if (is_class > 0)
2039 if (*actual_length > allocated_length)
2104 or_init (&buf, bufp, vobj_len);
2129 if (bufp != vobj_buf)
2147 bool isupdatable, isbase;
2151 isdirty = mop->
dirty;
2160 if (isvid && isdirty)
2162 if (isupdatable && isbase)
2177 bool decache = *(
bool *) arg;
MOP ws_vmop(MOP class_mop, int flags, DB_VALUE *keys)
#define ER_HEAP_UNKNOWN_CLASS_OF_INSTANCE
#define ER_WS_REHASH_VMOP_ERROR
#define WS_IS_DELETED(mop)
int cursor_copy_vobj_to_dbvalue(struct or_buf *buffer_p, DB_VALUE *value_p)
int db_value_put_null(DB_VALUE *value)
DB_COLLECTION * db_get_set(const DB_VALUE *value)
MOBJ vid_fetch_instance(MOP mop, DB_FETCH_MODE purpose, LC_FETCH_VERSION_TYPE read_fetch_version_type)
int pr_data_writeval_disk_size(DB_VALUE *value)
char * obj_alloc(SM_CLASS *class_, int bound_bit_status)
static char * vid_pack_db_value(char *lbuf, DB_VALUE *dbval)
PR_TYPE * tp_Type_id_map[]
#define ER_WS_PIN_VIOLATION
const char * db_get_class_name(DB_OBJECT *class_)
MOP ws_mop(const OID *oid, MOP class_mop)
int data_writeval(struct or_buf *buf, const DB_VALUE *value) const
enum au_fetchmode AU_FETCHMODE
DB_ATTRIBUTE * db_get_attributes(DB_OBJECT *obj)
#define ER_SM_INVALID_ARGUMENTS
DB_OBJECT * db_real_instance(DB_OBJECT *obj)
DB_SET * db_seq_create(MOP classop, const char *name, int size)
#define TP_IS_SET_TYPE(typenum)
#define ER_OBJ_CANT_ENCODE_VOBJ
int db_seq_get(DB_SET *set, int index, DB_VALUE *value)
int tp_value_equal(const DB_VALUE *value1, const DB_VALUE *value2, int do_coercion)
void ws_mark_deleted(MOP mop)
bool vid_compare_non_updatable_objects(MOP mop1, MOP mop2)
int db_seq_put(DB_SET *set, int index, DB_VALUE *value)
#define ER_VID_LOST_NON_UPDATABLE_OBJECT
#define ER_SM_OBJECT_NOT_UPDATABLE
int classobj_get_prop(DB_SEQ *properties, const char *name, DB_VALUE *pvalue)
DB_OBJLIST * ml_ext_alloc_link(void)
int obj_assign_value(MOP op, SM_ATTRIBUTE *att, char *mem, DB_VALUE *value)
SM_ATTRIBUTE * attributes
int db_query_end(DB_QUERY_RESULT *result)
static int vid_make_vid(OID *view_id, OID *proxy_id, DB_VALUE *val, DB_VALUE *vobj)
int db_make_object(DB_VALUE *value, DB_C_OBJECT *obj)
#define ER_OBJ_BUFFER_TOO_SMALL
DB_COLLECTION * set_create_sequence(int size)
int db_is_any_class(MOP obj)
static int class_type(DB_OBJECT *class_obj)
int vid_oid_to_object(const DB_VALUE *value, DB_OBJECT **mop)
SM_CLASS_TYPE sm_get_class_type(SM_CLASS *class_)
int vid_flush_and_rehash(MOP mop)
struct sm_component * next
#define OID_SET_NULL(oidp)
#define SM_PROPERTY_VID_KEY
#define ER_WS_NO_CLASS_FOR_INSTANCE
int db_make_sequence(DB_VALUE *value, DB_C_SET *set)
void vid_get_keys(MOP mop, DB_VALUE *value)
int vid_object_to_vobj(const DB_OBJECT *obj, DB_VALUE *vobj)
DB_VALUE * vid_flush_and_rehash_lbl(DB_VALUE *value)
static int vid_get_class_object(MOP class_p, SM_CLASS **class_object_p)
int set_size(DB_COLLECTION *set)
#define er_log_debug(...)
int getmem(void *memptr, const tp_domain *domain, DB_VALUE *value, bool copy=true) const
MOP locator_add_instance(MOBJ instance, MOP class_mop)
void db_ws_free(void *ptr)
int ws_map_class(MOP class_op, MAPFUNC function, void *args)
const char * db_attribute_name(DB_ATTRIBUTE *attribute)
bool vid_att_in_obj_id(SM_ATTRIBUTE *attribute_p)
#define ER_OBJ_CANT_ENCODE_NONUPD_OBJ
#define ER_OBJ_CANT_RESOLVE_VOBJ_TO_OBJ
static DB_OBJECT * is_class(OID *obj_oid, OID *class_oid)
bool pr_is_set_type(DB_TYPE type)
bool vid_inhibit_null_check
static int vid_db_value_size(DB_VALUE *dbval)
#define ER_OBJ_NULL_ADDR_OUTPUT_OBJ
#define WS_CLASS_MOP(mop)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
void or_decode(const char *buffer, char *dest, int size)
int db_set_get(DB_SET *set, int index, DB_VALUE *value)
DB_OBJLIST * vid_getall_mops(MOP class_mop, SM_CLASS *class_p, DB_FETCH_MODE purpose)
int vid_decode_object(const char *string, DB_OBJECT **object)
static int vid_is_new_oobj(MOP mop)
void obj_free_memory(SM_CLASS *class_, MOBJ obj)
#define ER_OUT_OF_VIRTUAL_MEMORY
int db_seq_size(DB_SET *set)
int vid_encode_object(DB_OBJECT *object, char *string, int allocated_length, int *actual_length)
#define DB_VALUE_DOMAIN_TYPE(value)
bool vid_is_base_instance(MOP mop)
DB_ATTRIBUTE * db_attribute_next(DB_ATTRIBUTE *attribute)
DB_OBJECT * db_get_object(const DB_VALUE *value)
int db_query_get_tuple_value_by_name(DB_QUERY_RESULT *result, char *column_name, DB_VALUE *value)
MOP ws_class_mop(MOP mop)
#define TP_DOMAIN_TYPE(dom)
#define MIN_STRING_OID_LENGTH
LOCK ws_get_lock(MOP mop)
DB_OBJECT * db_get_class(MOP obj)
DB_OBJLIST * ws_Resident_classes
#define ER_OBJ_CANT_ASSIGN_OID
#define ER_OBJ_VOBJ_MAPS_INVALID_OBJ
int vid_flush_all_instances(MOP class_mop, bool decache)
int db_set_add(DB_SET *set, DB_VALUE *value)
int au_fetch_instance_force(MOP op, MOBJ *obj_ptr, AU_FETCHMODE fetchmode, LC_FETCH_VERSION_TYPE fetch_version_type)
#define TM_TRAN_READ_FETCH_VERSION()
DB_VALUE_COMPARE_RESULT set_compare(DB_COLLECTION *set1, DB_COLLECTION *set2, int do_coercion)
void or_init(OR_BUF *buf, char *data, int length)
MOP vid_get_referenced_mop(MOP mop)
need_clear_type need_clear
int db_set_size(DB_SET *set)
int pr_clear_value(DB_VALUE *value)
int db_fetch_list(DB_OBJLIST *objects, DB_FETCH_MODE purpose, int quit_on_error)
int vid_vobj_to_object(const DB_VALUE *vobj, DB_OBJECT **mop)
int db_is_updatable_object(DB_OBJECT *obj)
struct db_domain_info::general_info general_info
static int vid_pack_vobj(char *buf, OID *view, OID *proxy, DB_VALUE *keys, int *vobj_size, int buflen)
#define ER_OBJ_INVALID_ARGUMENT
int set_put_element(DB_COLLECTION *set, int index, DB_VALUE *value)
static void error(const char *msg)
void ws_set_lock(MOP mop, LOCK lock)
#define DB_DEFAULT_PRECISION
entry_workpool * instance
bool vid_is_updatable(MOP mop)
int db_query_next_tuple(DB_QUERY_RESULT *result)
OID * locator_assign_permanent_oid(MOP mop)
static int vid_build_non_upd_object(MOP mop, DB_VALUE *seq)
int pr_clone_value(const DB_VALUE *src, DB_VALUE *dest)
OID * db_get_oid(const DB_VALUE *value)
MOP vid_add_virtual_instance(MOBJ instance, MOP vclass_mop, MOP bclass_mop, SM_CLASS *bclass)
int vid_flush_instance(MOP mop, void *arg)
#define free_and_init(ptr)
#define DB_ALIGN(offset, align)
void vid_rem_instance(MOP mop)
#define ER_OBJ_INVALID_ARGUMENTS
#define ER_HEAP_UNKNOWN_OBJECT
#define DB_CURSOR_SUCCESS
int db_get(DB_OBJECT *object, const char *attpath, DB_VALUE *value)
void ml_ext_free(DB_OBJLIST *list)
#define ER_SM_OBJECT_ID_ALREADY_SET
MOP vid_build_virtual_mop(MOP bmop, MOP vclass_mop)
#define DB_VALUE_TYPE(value)
int db_make_null(DB_VALUE *value)
MOP vid_base_instance(MOP mop)
void vid_decache_instance(MOP mop)
void or_encode(char *buffer, const char *source, int size)
DB_SEQ * classobj_make_prop()
int db_value_clear(DB_VALUE *value)
int db_make_int(DB_VALUE *value, const int num)
int db_make_oid(DB_VALUE *value, const OID *oid)
#define ER_OBJ_INTERNAL_ERROR_IN_DECODING
int ws_find(MOP mop, MOBJ *obj)
int db_compile_and_execute_local(const char *CSQL_query, void *result, DB_QUERY_ERROR *query_error)
#define MAX_STRING_OID_LENGTH
int db_set_cardinality(DB_SET *set)
MOBJ vid_upd_instance(MOP mop)
#define ER_SM_INVALID_CLASS
int ws_has_dirty_objects(MOP op, int *isvirt)
int vid_is_new_pobj(MOP mop)
int set_convert_oids_to_objects(DB_COLLECTION *set)
bool ws_rehash_vmop(MOP mop, MOBJ classobj, DB_VALUE *newkey)
int au_fetch_class_force(MOP op, SM_CLASS **class_, AU_FETCHMODE fetchmode)
int vid_make_vobj(const OID *view_oid, const OID *class_oid, const DB_VALUE *keys, DB_VALUE *vobj)
int db_query_tuple_count(DB_QUERY_RESULT *result)
int db_value_domain_init(DB_VALUE *value, const DB_TYPE type, const int precision, const int scale)
int classobj_put_prop(DB_SEQ *properties, const char *name, DB_VALUE *pvalue)
int db_value_alter_type(DB_VALUE *value, const DB_TYPE type)