65 #define OBJ_INTERNAL_SAVEPOINT_NAME "*template-unique*" 158 if (Template_area ==
NULL)
164 if (Assignment_area ==
NULL)
187 if (Template_area !=
NULL)
190 Template_area =
NULL;
193 if (Assignment_area !=
NULL)
196 Assignment_area =
NULL;
224 class_ = (use_base_class) ? template_ptr->
base_class : template_ptr->
class_;
250 if (class_ != upgrade_class)
296 value = proposed_value;
650 unsigned force_check_not_null)
655 value = proposed_value;
675 if (value != proposed_value)
687 if (value == proposed_value)
748 MOP base_classobj, base_object;
752 base_classobj =
NULL;
762 else if (
object != classobj)
790 &&
object != classobj )
807 if (base_classobj ==
NULL)
833 if (
object !=
NULL &&
object != classobj)
848 if (template_ptr !=
NULL)
850 template_ptr->
object = object;
857 template_ptr->
class_ = class_;
916 for (i = 0; i < template_ptr->
nassigns; i++)
1057 (void)
area_free (Assignment_area, assign);
1084 for (i = 0; i < template_ptr->
nassigns; i++)
1105 (void)
area_free (Template_area, template_ptr);
1135 MOP serial_class_mop =
NULL, serial_mop;
1137 const char *class_name;
1145 class_ = template_ptr->
class_;
1156 if (serial_class_mop ==
NULL)
1162 if (class_name ==
NULL)
1165 goto auto_increment_error;
1171 if (serial_mop ==
NULL)
1174 goto auto_increment_error;
1192 goto auto_increment_error;
1200 goto auto_increment_error;
1205 goto auto_increment_error;
1225 goto auto_increment_error;
1233 goto auto_increment_error;
1243 auto_increment_error:
1272 const char *base_name;
1278 class_ = template_ptr->
class_;
1426 return template_ptr;
1477 return template_ptr;
1491 if (template_ptr !=
NULL)
1528 const char *base_name;
1534 if ((template_ptr ==
NULL) || (att ==
NULL) || (value ==
NULL))
1557 &base_value, &base_name, auth))
1569 value = &base_value;
1604 if (actual != value)
1673 const char *base_name;
1689 &base_value, &base_name, auth))
1743 assign->
obj = value;
1772 if ((template_ptr ==
NULL) || (attname ==
NULL) || (value ==
NULL))
1819 return (
obt_set (template_ptr, attname, &v));
1840 if ((template_ptr ==
NULL) || (desc ==
NULL) || (value ==
NULL))
1895 class_ = template_ptr->
class_;
1928 template_ptr->
object = mop;
2020 mop = template_ptr->
object;
2076 for (i = 0; i < set_size && error ==
NO_ERROR; i++)
2127 for (i = 0; i < set_size && error ==
NO_ERROR; i++)
2433 for (i = 0; i < template_ptr->
nassigns; i++)
2453 if (trstate ==
NULL)
2459 pin =
ws_pin (
object, 1);
2479 if (!(error =
access_object (template_ptr, &
object, &mobj)))
2481 pin =
ws_pin (
object, 1);
2490 if (!(error =
access_object (template_ptr, &
object, &mobj)))
2504 if (trstate !=
NULL)
2522 pin =
ws_pin (
object, 1);
2591 char *save_meta_data;
2649 (void)
ws_pin (
object, pin);
2653 if (trstate !=
NULL)
2750 template_ptr->
label = label;
2863 char savepoint_name[80];
2864 int has_uniques = 0;
2865 int savepoint_used = 0;
2867 if (template_ptr !=
NULL)
2913 *newobj = template_ptr->
object;
2986 if (class_ ==
NULL ||
object ==
NULL)
2996 obj->
object = (
void *)
object;
struct tr_schema_cache * triggers
#define ER_LK_UNILATERALLY_ABORTED
static void begin_template_traversal(void)
int tran_system_savepoint(const char *savept_name)
#define DB_GET_STRING_PRECISION(v)
bool classobj_has_unique_constraint(SM_CONSTRAINT *constraints)
#define ER_OBJ_INVALID_TEMPLATE
#define WS_IS_DELETED(mop)
DB_COLLECTION * db_get_set(const DB_VALUE *value)
int db_value_scale(const DB_VALUE *value)
void ws_class_has_object_dependencies(MOP class_mop)
static void obt_free_template(OBJ_TEMPLATE *template_ptr)
char * obj_alloc(SM_CLASS *class_, int bound_bit_status)
unsigned discard_on_finish
TP_DOMAIN_STATUS tp_domain_check(const TP_DOMAIN *domain, const DB_VALUE *value, TP_MATCH exact_match)
int serial_get_next_value(DB_VALUE *value, OID *oid_p, int cached_num, int num_alloc, int is_auto_increment)
int do_get_serial_cached_num(int *cached_num, MOP serial_obj)
#define ER_OBJ_TEMPLATE_INTERNAL
static void obt_free_assignment(OBJ_TEMPASSIGN *assign)
unsigned is_autoincrement_set
enum au_fetchmode AU_FETCHMODE
void area_destroy(AREA *area)
unsigned function_key_modified
bool obt_Last_insert_id_generated
#define TP_IS_SET_TYPE(typenum)
static int obt_apply_assignments(OBJ_TEMPLATE *template_ptr, int check_uniques, int level)
#define DB_GET_NUMERIC_SCALE(val)
static DB_VALUE * check_att_domain(SM_ATTRIBUTE *att, DB_VALUE *proposed_value)
void obt_begin_insert_values(void)
#define ER_REFERENCE_TO_NON_REFERABLE_NOT_ALLOWED
int obt_populate_known_arguments(OBJ_TEMPLATE *template_ptr)
void obt_area_final(void)
int sm_check_class_domain(TP_DOMAIN *domain, MOP class_)
unsigned uniques_were_modified
void tr_abort(TR_STATE *state)
int obj_assign_value(MOP op, SM_ATTRIBUTE *att, char *mem, DB_VALUE *value)
SM_ATTRIBUTE * attributes
int obt_set(OBJ_TEMPLATE *template_ptr, const char *attname, DB_VALUE *value)
int db_make_object(DB_VALUE *value, DB_C_OBJECT *obj)
int db_make_pointer(DB_VALUE *value, DB_C_POINTER ptr)
int obt_update(OBJ_TEMPLATE *template_ptr, MOP *newobj)
int setobj_get_element_ptr(COL *col, int index, DB_VALUE **result)
OBJ_TEMPASSIGN ** assignments
SM_DEFAULT_VALUE default_value
int vid_flush_and_rehash(MOP mop)
struct sm_component * next
static int access_object(OBJ_TEMPLATE *template_ptr, MOP *object, MOBJ *objptr)
int db_elo_copy(DB_ELO *src, DB_ELO *dest)
void ws_free_temp_mop(MOP op)
static int check_constraints(SM_ATTRIBUTE *att, DB_VALUE *value, unsigned force_check_not_null)
SM_ATTRIBUTE * classobj_find_attribute(SM_CLASS *class_, const char *name, int class_attribute)
void obt_reset_force_flush(OBJ_TEMPLATE *template_ptr)
int set_size(DB_COLLECTION *set)
enum tp_domain_status TP_DOMAIN_STATUS
#define OBT_BASE_CLASS(template_ptr)
void obt_retain_after_finish(OBJ_TEMPLATE *template_ptr)
MOP locator_add_instance(MOBJ instance, MOP class_mop)
int ml_find(DB_OBJLIST *list, MOP mop)
int db_make_elo(DB_VALUE *value, DB_TYPE type, const DB_ELO *elo)
DB_VALUE * obt_check_assignment(SM_ATTRIBUTE *att, DB_VALUE *proposed_value, SM_VALIDATION *valid, unsigned force_check_not_null)
AREA * area_create(const char *name, size_t element_size, size_t alloc_count)
DB_ELO * db_get_elo(const DB_VALUE *value)
unsigned fkeys_were_modified
#define ERROR0(error, code)
unsigned shared_was_modified
int db_elo_delete(DB_ELO *elo)
static AREA * Template_area
int sm_get_descriptor_component(MOP op, SM_DESCRIPTOR *desc, int for_update, SM_CLASS **class_ptr, SM_COMPONENT **comp_ptr)
DB_DEFAULT_EXPR_TYPE default_expr_type
static DB_OBJECT * is_class(OID *obj_oid, OID *class_oid)
int pr_free_ext_value(DB_VALUE *value)
static unsigned int obj_Template_traversal
unsigned force_check_not_null
int class_attribute_count
DB_DEFAULT_EXPR default_expr
static AREA * Assignment_area
static unsigned int template_savepoint_count
#define ER_IT_NOT_UPDATABLE_STMT
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
const char * sm_ch_name(const MOBJ clobj)
struct tr_schema_cache * triggers
int obt_quit(OBJ_TEMPLATE *template_ptr)
int tran_abort_upto_system_savepoint(const char *savepoint_name)
int obt_set_obt(OBJ_TEMPLATE *template_ptr, const char *attname, OBJ_TEMPLATE *value)
void obt_set_force_flush(OBJ_TEMPLATE *template_ptr)
int au_fetch_class(MOP op, SM_CLASS **class_ptr, AU_FETCHMODE fetchmode, DB_AUTH type)
#define ERROR1(error, code, arg1)
int tp_domain_status_er_set(TP_DOMAIN_STATUS status, const char *file_name, const int line_no, const DB_VALUE *src, const TP_DOMAIN *domain)
int ws_pin(MOP mop, int pin)
static OBJ_TEMPLATE * make_template(MOP object, MOP classobj)
struct db_object * class_mop
OBJ_TEMPLATE * obt_def_object(MOP class_mop)
static int obt_assign_obt(OBJ_TEMPLATE *template_ptr, SM_ATTRIBUTE *att, int base_assignment, OBJ_TEMPLATE *value)
DB_TYPE db_value_type(const DB_VALUE *value)
#define ER_SM_OBJECT_ID_NOT_SET
static int obt_final_check_set(SETREF *setref, int *has_uniques)
static int populate_auto_increment(OBJ_TEMPLATE *template_ptr)
int numeric_db_value_coerce_from_num(DB_VALUE *src, DB_VALUE *dest, DB_DATA_STATUS *data_status)
struct obj_template * obj
#define DB_VALUE_DOMAIN_TYPE(value)
int locator_flush_class(MOP class_mop)
int obt_assign(OBJ_TEMPLATE *template_ptr, SM_ATTRIBUTE *att, int base_assignment, DB_VALUE *value, SM_VALIDATION *valid)
static enum scanner_mode mode
bool vid_is_base_instance(MOP mop)
const char * sm_get_ch_name(MOP op)
DB_OBJECT * db_get_object(const DB_VALUE *value)
static void cache_validation(SM_VALIDATION *valid, DB_VALUE *value)
int classobj_get_cached_constraint(SM_CONSTRAINT *constraints, SM_CONSTRAINT_TYPE type, BTID *id)
TP_DOMAIN_STATUS tp_value_cast(const DB_VALUE *src, DB_VALUE *dest, const TP_DOMAIN *desired_domain, bool implicit_coercion)
#define ER_OBJ_DUPLICATE_ASSIGNMENT
static int obt_convert_set_templates(SETREF *setref, int check_uniques)
#define TP_DOMAIN_TYPE(dom)
void obt_disable_serializable_conflict_checking(OBJ_TEMPLATE *template_ptr)
#define ER_OBJ_ATTRIBUTE_CANT_BE_NULL
DB_OBJECT * db_get_class(MOP obj)
int pt_is_reference_to_reusable_oid(DB_VALUE *val)
static MOP make_temp_object(DB_OBJECT *class_, OBJ_TEMPLATE *object)
DB_VALUE * pr_make_ext_value(void)
#define ERROR3(error, code, arg1, arg2, arg3)
int au_fetch_instance_force(MOP op, MOBJ *obj_ptr, AU_FETCHMODE fetchmode, LC_FETCH_VERSION_TYPE fetch_version_type)
#define ER_OBJ_INVALID_ATTRIBUTE
int ml_ext_add(DB_OBJLIST **list, MOP mop, int *added_ptr)
int obt_desc_set(OBJ_TEMPLATE *template_ptr, SM_DESCRIPTOR *desc, DB_VALUE *value)
int tr_prepare_class(TR_STATE **state_p, TR_SCHEMA_CACHE *cache, MOP class_mop, DB_TRIGGER_EVENT event)
static OBJ_TEMPASSIGN * obt_make_assignment(OBJ_TEMPLATE *template_ptr, SM_ATTRIBUTE *att)
MOP vid_get_referenced_mop(MOP mop)
int pr_clear_value(DB_VALUE *value)
unsigned is_auto_increment
int sm_active_triggers(MOP class_mop, SM_CLASS *class_, DB_TRIGGER_EVENT event_type)
bool obt_enable_unique_checking(bool new_state)
SM_CONSTRAINT * constraints
TP_DOMAIN_STATUS tp_check_value_size(TP_DOMAIN *domain, DB_VALUE *value)
int locator_flush_instance(MOP mop)
int obt_check_missing_assignments(OBJ_TEMPLATE *template_ptr)
#define TP_IS_CHAR_TYPE(typeid)
static void error(const char *msg)
TP_DOMAIN * set_get_domain(DB_COLLECTION *set)
#define DB_DEFAULT_PRECISION
#define ER_OBJ_ATTRIBUTE_TYPE_CONFLICT
static int obt_final_check(OBJ_TEMPLATE *template_ptr, int check_non_null, int *has_uniques)
bool db_value_is_null(const DB_VALUE *value)
MOP ws_make_temp_mop(void)
DB_OBJLIST * validated_classes
int pr_clone_value(const DB_VALUE *src, DB_VALUE *dest)
static int quick_validate(SM_VALIDATION *valid, DB_VALUE *value)
MOP vid_add_virtual_instance(MOBJ instance, MOP vclass_mop, MOP bclass_mop, SM_CLASS *bclass)
int db_get_client_type(void)
DB_DOMAIN * last_setdomain
#define free_and_init(ptr)
unsigned char pruning_type
bool sm_is_reuse_oid_class(MOP op)
int obj_get_value(MOP op, SM_ATTRIBUTE *att, void *mem, DB_VALUE *source, DB_VALUE *dest)
int db_value_precision(const DB_VALUE *value)
#define ERROR2(error, code, arg1, arg2)
static int obt_apply_assignment(MOP op, SM_ATTRIBUTE *att, char *mem, DB_VALUE *value, int check_uniques)
#define ER_OBJ_INVALID_ARGUMENTS
void obt_set_label(OBJ_TEMPLATE *template_ptr, DB_VALUE *label)
OBJ_TEMPLATE * obt_edit_object(MOP object)
bool obt_Enable_autoincrement
void * area_alloc(AREA *area)
#define ER_OBJ_STRING_OVERFLOW
void obt_disable_unique_checking(OBJ_TEMPLATE *template_ptr)
int area_free(AREA *area, void *ptr)
unsigned int sm_local_schema_version(void)
int tr_before_object(TR_STATE *state, DB_OBJECT *current, DB_OBJECT *temp)
static MOP create_template_object(OBJ_TEMPLATE *template_ptr)
#define DB_VALUE_TYPE(value)
int db_make_null(DB_VALUE *value)
#define DB_IS_NULL(value)
#define ER_OBJ_DOMAIN_CONFLICT
#define OBJ_INTERNAL_SAVEPOINT_NAME
bool classobj_has_function_constraint(SM_CONSTRAINT *constraints)
static int populate_defaults(OBJ_TEMPLATE *template_ptr)
MOP sm_get_class(MOP obj)
#define DB_GET_NUMERIC_PRECISION(val)
#define ER_OBJ_MISSING_NON_NULL_ASSIGN
int au_fetch_instance(MOP op, MOBJ *obj_ptr, AU_FETCHMODE mode, LC_FETCH_VERSION_TYPE fetch_version_type, DB_AUTH type)
struct sm_attribute * order_link
int db_value_clear(DB_VALUE *value)
int obt_find_attribute(OBJ_TEMPLATE *template_ptr, int use_base_class, const char *name, SM_ATTRIBUTE **attp)
MOP sm_find_class(const char *name)
#define OBT_BASE_CLASSOBJ(template_ptr)
#define OBT_BASE_OBJECT(template_ptr)
int locator_is_class(MOP mop, DB_FETCH_MODE hint_purpose)
#define WS_MOP_IS_NULL(mop)
SM_ATTRIBUTE * ordered_attributes
int obt_update_internal(OBJ_TEMPLATE *template_ptr, MOP *newobj, int check_non_null)
int tr_after_object(TR_STATE *state, DB_OBJECT *current, DB_OBJECT *temp)
static void free_temp_object(MOP obj)
DB_C_POINTER db_get_pointer(const DB_VALUE *value)
MOP do_get_serial_obj_id(DB_IDENTIFIER *serial_obj_id, DB_OBJECT *serial_class_mop, const char *serial_name)
#define TP_IS_BIT_TYPE(typeid)
static int validate_template(OBJ_TEMPLATE *temp)
int setobj_size(COL *col)
#define ER_OBJ_NOT_A_CLASS
unsigned check_serializable_conflict
#define ER_OBJ_INVALID_TEMP_OBJECT
#define DB_GET_BIT_PRECISION(v)
#define TM_TRAN_ISOLATION()
int db_value_domain_init(DB_VALUE *value, const DB_TYPE type, const int precision, const int scale)