79 #define FILTER_OUT_ERR_INTERNAL(err, expr) \ 80 ( err = ((expr) == NO_ERROR ? NO_ERROR : er_filter_errid(false)) ) 82 #define CHECK_ERR(err, expr) \ 84 int inner_err = (expr); \ 85 if (FILTER_OUT_ERR_INTERNAL(err, inner_err) != NO_ERROR) { \ 89 if (inner_err != NO_ERROR && err == NO_ERROR ) { \ 90 skip_current_instance = true; \ 99 #define CHECK_PARSE_ERR(err, expr, cont, type, str) \ 101 int inner_err = (expr); \ 102 if (FILTER_OUT_ERR_INTERNAL(err, inner_err) != NO_ERROR) { \ 104 parse_error(cont, type, str); \ 107 if (inner_err != NO_ERROR && err == NO_ERROR) { \ 108 skip_current_instance = true; \ 112 #define CHECK_PTR(err, expr) \ 114 if ((expr) == NULL) { \ 116 if (err == NO_ERROR) { \ 117 if ((err = er_errid()) == NO_ERROR) { \ 118 err = ER_GENERIC_ERROR; \ 119 er_set(ER_ERROR_SEVERITY, ARG_FILE_LINE, err, 0); \ 126 #define CHECK_CONTEXT_VALIDITY(context, expr) \ 129 ldr_increment_err_count (context, 1); \ 130 context->valid = false; \ 134 #define RETURN_IF_NOT_VALID(context) \ 136 if (!context->valid) return; \ 139 #define RETURN_IF_NOT_VALID_WITH(context, ret) \ 141 if (!context->valid) return (ret); \ 144 #define CHECK_VALIDATION_ONLY(context) \ 146 if (context->validation_only) goto error_exit; \ 149 #define GET_DOMAIN(context, domain) \ 151 if (context->collection == NULL && context->valid) \ 152 domain = context->attrs[context->next_attr].att->domain; \ 154 domain = context->set_domain; \ 157 #define CHECK_SKIP() \ 159 if (skip_current_class == true) { \ 164 #define CHECK_SKIP_WITH(ret) \ 166 if (skip_current_class == true) { \ 267 unsigned int instance_started:1;
342 #define LDR_LOCKHINT_COUNT 1 448 #define MAX_DIGITS_FOR_BIGINT 19 450 #define MAX_DIGITS_FOR_INT 10 451 #define MAX_DIGITS_FOR_SHORT 5 453 #define ROUND(x) (int)((x) > 0 ? ((x) + .5) : ((x) - .5)) 455 #define PARSE_ELO_STR(str, new_len) \ 458 if (str[0] == '\"') \ 460 new_len = (int) strlen (str); \ 461 if (new_len && str[new_len-1] == '\"') \ 470 #define LDR_MOP_TEMPOID_MAPS_PRESIZE 1000 471 #define LDR_ARG_GROW_SIZE 128 481 static void ldr_stats (
int *
errors, int64_t *objects,
int *defaults, int64_t *lastcommit,
int *fails);
650 bool is_ignore_class;
660 ldr_Current_context->
id_class = class_;
665 if (!is_ignore_class)
703 if (class_name ==
NULL)
708 if (cmd_spec ==
NULL)
711 install_class (class_name->
val);
794 if (ldr_Current_context->
valid)
797 ldr_Current_context->
inst_num = object_id;
824 if (ldr_Current_context->
valid)
868 char *full_mon_str_p = full_mon_str;
871 size_t full_mon_str_len = (str->size +
strlen (curr_str));
873 if (full_mon_str_len >=
sizeof (full_mon_str))
875 full_mon_str_p =
new char[full_mon_str_len + 1];
878 strcpy (full_mon_str_p, curr_str);
879 strcat (full_mon_str_p, str->val);
882 if (full_mon_str_p != full_mon_str)
884 delete [] full_mon_str_p;
936 if (ldr_Current_context->
valid)
1026 if (ldr_Current_context)
1095 static const char *name =
NULL;
1119 static const char *name =
NULL;
1121 if (context && context->
attrs && context->
valid)
1192 if (set_domain_ptr !=
NULL)
1194 *set_domain_ptr = best;
1238 if (class_ ==
NULL && d->class_mop !=
NULL)
1271 if (actual_class !=
NULL)
1273 *actual_class = class_;
1359 newsize = size + 10;
1402 Id_map[
id] = class_;
1425 if (class_name ==
NULL)
1462 class_ = Id_map[
id];
1492 context->
valid =
false;
1625 lineno = ldr_Driver->
get_scanner ().lineno() + adjust;
1658 fprintf (stderr, msg);
1659 fprintf (stderr,
"\n");
1713 internal_classes =
NULL;
1762 internal_classes =
NULL;
1773 return (
ml_find (internal_classes, class_));
1810 context->
valid =
false;
1975 attdesc->
parser_str = (
char *) (malloc (len + 1));
1985 char *parser_str_old;
2093 char class_attr[512];
2170 context->
valid =
false;
2207 else if (
tp_value_cast (&src_val, &dest_val, domain,
false))
2448 d = strtod (str, &str_ptr);
2494 d = strtod (str, &str_ptr);
2516 val.
data.
sh = (short) i_val;
2579 if (char_count > precision)
2592 for (p = &str[truncate_size], safe = 1; p < &str[len]; p++)
2602 len = truncate_size;
2651 if (char_count > precision)
2663 for (p = &str[truncate_size], safe = 1; p < &str[len]; p++)
2673 len = truncate_size;
2741 dest_size = (len + 7) / 8;
2745 if (
qstr_bit_to_bin (bstring, dest_size, (
char *) str, (
int) len) != (
int) len)
2816 char *bstring =
NULL;
2823 dest_size = (len + 1) / 2;
2827 if (
qstr_hex_to_bin (bstring, dest_size, (
char *) str, (
int) len) != (
int) len)
2860 if (bstring !=
NULL)
2950 int precision, scale;
2953 precision = (int) len - 1 - (str[0] ==
'+' || str[0] ==
'-');
2954 scale = (int) len - (
int) strcspn (str,
".") - 1;
3000 d = strtod (str, &str_ptr);
3038 d = strtod (str, &str_ptr);
3053 val->
data.
f = (float) d;
3099 d = strtod (str, &str_ptr);
3114 val.
data.
f = (float) d;
3143 d = strtod (str, &str_ptr);
3679 char *locator =
NULL;
3680 char *meta_data =
NULL;
3682 if (!context->
valid)
3698 char *size_sp, *size_ep;
3699 const char *locator_sp, *locator_ep;
3700 const char *meta_sp, *meta_ep;
3703 assert (str[0] ==
'B' || str[0] ==
'C');
3716 size_sp = (
char *) (str + 1);
3717 size_ep = strchr (size_sp,
'|');
3718 if (size_ep ==
NULL || size_ep - size_sp == 0)
3727 locator_sp = size_ep + 1;
3728 locator_ep = strchr (locator_sp,
'|');
3729 if (locator_ep ==
NULL || locator_ep - locator_sp == 0)
3738 meta_ep = meta_sp = locator_ep + 1;
3748 if (result != 0 || size < 0)
3756 if (locator ==
NULL)
3760 memcpy (locator, locator_sp, locator_ep - locator_sp);
3761 locator[locator_ep - locator_sp] =
'\0';
3763 if (meta_ep - meta_sp > 0)
3766 if (meta_data ==
NULL)
3770 memcpy (meta_data, meta_sp, meta_ep - meta_sp);
3771 meta_data[meta_ep - meta_sp] =
'\0';
3789 if (locator !=
NULL)
3794 if (meta_data !=
NULL)
3821 char name_buf[8196];
3828 if (new_len >= 8196)
3830 name = (
char *) malloc (new_len);
3843 name = &name_buf[0];
3846 strncpy (name, str, new_len);
3847 name[new_len] =
'\0';
3854 if (name !=
NULL && name != &name_buf[0])
3877 if (ldr_Mop_tempoid_maps)
3879 ldr_Mop_tempoid_maps->
count = 0;
3880 ldr_Mop_tempoid_maps->
index = 0;
3883 ldr_Mop_tempoid_maps =
NULL;
3898 ldr_Mop_tempoid_maps->
count = -1;
3899 ldr_Mop_tempoid_maps->
index = -1;
3900 ldr_Mop_tempoid_maps->
size = 0;
3912 ldr_Mop_tempoid_maps->
count = 0;
3913 ldr_Mop_tempoid_maps->
index = 0;
3914 ldr_Mop_tempoid_maps->
size = presize;
3927 if (!ldr_Mop_tempoid_maps)
3967 ldr_Mop_tempoid_maps->
count += 1;
3968 ldr_Mop_tempoid_maps->
index += 1;
3972 if (ldr_Mop_tempoid_maps->
index == ldr_Mop_tempoid_maps->
size)
3986 if (mop_tempoid_maps_old)
4016 if (!ldr_Mop_tempoid_maps)
4022 if (!ldr_Mop_tempoid_maps->
count)
4036 while (i < ldr_Mop_tempoid_maps->
count)
4065 while (i < ldr_Mop_tempoid_maps->count)
4072 mop_tempoid_map->
id = 0;
4077 ldr_Mop_tempoid_maps->
index = 0;
4078 ldr_Mop_tempoid_maps->
count = 0;
4131 if ((class_ == context->
cls) && (context->
inst_num ==
id))
4335 const unsigned char *
p = (
const unsigned char *) str;
4336 const unsigned char *token = (
const unsigned char *) str;
4340 int symbol_size = 0;
4347 token += symbol_size;
4355 amt = strtod ((
const char *) token, &str_ptr);
4597 int64_t committed_instances = 0;
4613 committed_instances = 0;
4633 (*ldr_post_interrupt_handler) (committed_instances);
4678 committed_instances = (-1);
4760 #if defined(CUBRID_DEBUG) 4773 context->
err_total == 1 ?
"instance" :
"instances");
4824 if (class_mop ==
NULL)
4835 context->
cls = class_mop;
4843 context->
class_name = (
char *) malloc (len + 1);
4872 context->
valid =
true;
4953 for (i = 0; i < context->
num_attrs; i++)
4966 char class_attr[512];
5014 attrs_old = context->
attrs;
5023 attdesc = &context->
attrs[n];
5066 &class_, comp_ptr));
5076 int invalid_attr = 0;
5295 for (i = 0; i < context->
num_attrs; i += 1)
5297 attdesc = & (context->
attrs[
i]);
5303 attdesc->
attdesc = db_attdesc;
5307 &class_, comp_ptr));
5400 return finish_error;
5510 meth_args[
i] = & (vals[
i]);
5513 meth_args[
i] =
NULL;
5551 return context->
obj;
5572 if (real_obj ==
NULL)
5700 int new_ = -1, resize,
i;
5702 void ***elements_old;
5707 resize = *max + grow;
5709 elements_old = elements;
5711 *elements = (
void **) realloc (*elements,
sizeof (
void *) * resize);
5712 if (*elements ==
NULL)
5719 for (i = *count; i < resize; i++)
5721 (*elements)[
i] =
NULL;
5981 timestamptz.
tz_id = 0;
5987 datetimetz.
tz_id = 0;
6040 ldr_Current_context = context;
6043 context->
valid =
true;
6068 context->
args = args;
6119 if (!ldr_Current_context)
6181 return shutdown_error;
6187 if (ldr_Driver !=
NULL)
6192 ldr_Driver =
new driver ();
6200 ldr_Driver->
initialize (cls_installer, obj_loader, error_handler_);
6207 int64_t objects = 0;
6210 int64_t lastcommit = 0;
6247 ldr_Driver->
parse (object_file);
6248 ldr_stats (&errors, &objects, &defaults, &lastcommit, &fails);
6263 object_file.close ();
6265 object_file.open (args->
object_file, std::fstream::in | std::fstream::binary);
6267 if (object_file.is_open ())
6288 ldr_stats (&errors, &objects, &defaults, &lastcommit, &fails);
6295 *interrupted =
true;
6305 ldr_Driver->
parse (object_file);
6306 ldr_stats (&errors, &objects, &defaults, &lastcommit, &fails);
6329 if (objects || fails)
6377 if (ldr_Driver !=
NULL)
6383 if (object_file.is_open ())
6385 object_file.close ();
6426 *errors = ldr_Current_context->
err_total;
6429 if (objects !=
NULL)
6434 if (defaults !=
NULL)
6439 if (lastcommit !=
NULL)
6461 const char *class_name =
NULL;
6468 if (class_name ==
NULL)
6495 (*ldr_post_interrupt_handler) (-1);
6518 if (class_name ==
NULL)
6542 bool ignore_class =
false;
6543 const char *class_name;
6565 if (ref_class !=
NULL)
6609 if (class_mop ==
NULL)
6620 class_mop = ldr_Current_context->
cls;
static int ldr_reset_context(LDR_CONTEXT *context)
static int is_internal_class(DB_OBJECT *class_)
static int ldr_json_db_json(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
int intl_identifier_ncasecmp(const char *str1, const char *str2, const int len)
DB_OBJECT * db_find_class(const char *name)
static int idmap_grow(int size)
#define INST_FLAG_RESERVED
struct db_domain_info::char_info char_info
static int ldr_null_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
static DB_OBJLIST * internal_classes
#define RETURN_IF_NOT_VALID_WITH(context, ret)
static void ldr_stats(int *errors, int64_t *objects, int *defaults, int64_t *lastcommit, int *fails)
int db_make_json(DB_VALUE *value, JSON_DOC *json_document, bool need_clear)
int db_make_datetime(DB_VALUE *value, const DB_DATETIME *datetime)
static int ldr_act_add_argument(LDR_CONTEXT *context, const char *name)
static int ldr_timestampltz_db_timestampltz(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static LOCK ldr_Hint_locks[LDR_LOCKHINT_COUNT]
static void ldr_init_driver()
static int find_instance(LDR_CONTEXT *context, DB_OBJECT *class_, OID *oid, int id)
char buf[DB_SMALL_CHAR_BUF_SIZE]
#define LANG_SYS_COLLATION
static DB_VALUE ldr_timestampltz_tmpl
void ws_class_has_object_dependencies(MOP class_mop)
#define ER_LDR_MEMORY_ERROR
static void ldr_act_attr(LDR_CONTEXT *context, const char *str, size_t len, data_type type)
int db_string_to_timestamp(const char *str, DB_TIMESTAMP *utime)
int parse(std::istream &iss, int line_offset=0)
static void clist_final(void)
static int ldr_int_db_bigint(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static DB_VALUE ldr_datetimeltz_tmpl
const char * db_get_class_name(DB_OBJECT *class_)
static DB_VALUE ldr_int_tmpl
static int ldr_sys_class_db_generic(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
MOP ws_mop(const OID *oid, MOP class_mop)
const char * db_get_type_name(DB_TYPE type_id)
TP_DOMAIN * collection_domain
static int ldr_monetary_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
static void ldr_restore_pin_and_drop_obj(LDR_CONTEXT *context, bool drop_obj)
static DB_OBJECT * ldr_act_get_ref_class(LDR_CONTEXT *context)
static DB_VALUE ldr_datetimetz_tmpl
void ldr_increment_fails()
#define TP_IS_SET_TYPE(typenum)
static int ldr_destroy(LDR_CONTEXT *context, int err)
LDR_SETTER setter[NUM_LDR_TYPES]
int db_make_bigint(DB_VALUE *value, const DB_BIGINT num)
static int insert_meth_instance(LDR_CONTEXT *context)
int db_string_to_datetimetz(const char *str, DB_DATETIMETZ *dt_tz, bool *has_zone)
static void ldr_act_restrict_attributes(LDR_CONTEXT *context, attribute_type type)
int parse_int(int *ret_p, const char *str_p, int base)
static int ldr_str_db_generic(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static LDR_POST_COMMIT_HANDLER ldr_post_commit_handler
static void ldr_act_init_context(LDR_CONTEXT *context, const char *class_name, size_t len)
int db_make_varchar(DB_VALUE *value, const int max_char_length, DB_CONST_C_CHAR str, const int char_str_byte_size, const int codeset, const int collation_id)
static int ldr_mismatch(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
#define CHECK_PARSE_ERR(err, expr, cont, type, str)
static LDR_CONTEXT * ldr_Current_context
struct tp_domain * setdomain
#define ER_SET_DOMAIN_CONFLICT
static void ldr_signal_handler(void)
#define MAX_DIGITS_FOR_SHORT
static void ldr_get_num_of_inserted_objects(int64_t num_objects)
static int ldr_act_set_constructor(LDR_CONTEXT *context, const char *name)
static void ldr_abort(void)
virtual int install_class(const char *class_name)=0
static int ldr_str_db_varchar(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static MOP construct_instance(LDR_CONTEXT *context)
static jmp_buf * ldr_Jmp_buf_ptr
static DB_VALUE ldr_timestamptz_tmpl
#define ER_LDR_AMBIGUOUS_DOMAIN
static void ldr_internal_error(LDR_CONTEXT *context)
#define CHECK_ERR(err, expr)
#define ER_LDR_CLASS_OBJECT_REFERENCE
SM_ATTRIBUTE * attributes
TP_DOMAIN * tp_domain_select_type(const TP_DOMAIN *domain_list, DB_TYPE type, DB_OBJECT *class_mop, int allow_coercion)
static int64_t Total_objects
int db_string_to_datetime(const char *str, DB_DATETIME *datetime)
static int add_argument(LDR_CONTEXT *context)
int db_make_object(DB_VALUE *value, DB_C_OBJECT *obj)
static LDR_CONTEXT ldr_Context
#define SM_MAX_IDENTIFIER_LENGTH
#define CHECK_CONTEXT_VALIDITY(context, expr)
static void idmap_final(void)
void locator_clear_oid_set(THREAD_ENTRY *thread_p, LC_OIDSET *oidset)
static void display_error(int adjust)
unsigned int instance_started
const char * AU_PASSWORD_CLASS_NAME
void util_arm_signal_handlers(SIG_HANDLER sigint_handler, SIG_HANDLER sigquit_handler)
int obj_desc_set(MOP op, SM_DESCRIPTOR *desc, DB_VALUE *value)
#define ER_LDR_INVALID_CONSTRUCTOR
static void ldr_clear_err_total(LDR_CONTEXT *context)
static DB_VALUE ldr_json_tmpl
static void ldr_act_elem(LDR_CONTEXT *context, const char *str, size_t len, data_type type)
struct sm_component * next
void flush_records() override
int db_make_date(DB_VALUE *value, const int month, const int day, const int year)
#define OID_SET_NULL(oidp)
int db_make_datetimeltz(DB_VALUE *value, const DB_DATETIME *datetime)
void sm_downcase_name(const char *name, char *buf, int maxlen)
const char * AU_USER_CLASS_NAME
TP_DOMAIN * tp_domain_resolve_value(const DB_VALUE *val, TP_DOMAIN *dbuf)
static int ldr_datetimeltz_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
enum lc_prefetch_flags LC_PREFETCH_FLAGS
static const char * ldr_class_name(LDR_CONTEXT *context)
static DB_VALUE ldr_timestamp_tmpl
static void ldr_act_class_attr(LDR_CONTEXT *context, const char *str, size_t len, data_type type)
void ldr_increment_err_total()
static int ldr_class_oid_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
static driver * ldr_Driver
int str_to_int64(INT64 *ret_p, char **end_p, const char *str_p, int base)
static int ldr_elo_ext_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
static DB_VALUE ldr_double_tmpl
static int ldr_final(void)
SM_METHOD_ARGUMENT ** method_args
int otable_reserve(CLASS_TABLE *table, OID *instance, int id)
static int ldr_monetary_db_monetary(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
void start_line(int object_id) override
static DB_VALUE ldr_bigint_tmpl
static DB_VALUE ldr_float_tmpl
static int ldr_act_check_missing_non_null_attrs(LDR_CONTEXT *context)
int ml_find(DB_OBJLIST *list, MOP mop)
static int ldr_datetime_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
static DB_VALUE ldr_short_tmpl
int db_make_elo(DB_VALUE *value, DB_TYPE type, const DB_ELO *elo)
#define ER_LDR_OBJECT_DOMAIN_MISMATCH
static void ldr_act_set_skip_current_class(char *class_name, size_t size)
bool locator_Dont_check_foreign_key
static int ldr_float_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
static void ldr_act_set_ref_class_id(LDR_CONTEXT *context, int id)
static int ldr_numeric_db_generic(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
#define COPY_OID(dest_oid_ptr, src_oid_ptr)
static jmp_buf ldr_Jmp_buf
LC_OIDMAP * locator_add_oidset_object(LC_OIDSET *oidset, MOP obj_mop)
static int ldr_act_add_class_all_attrs(const char *class_name)
int otable_insert(CLASS_TABLE *table, OID *instance, int id)
static void ldr_mop_tempoid_maps_final(void)
static int ldr_null_db_generic(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
#define RETURN_IF_NOT_VALID(context)
static void ldr_act_set_instance_id(LDR_CONTEXT *context, int id)
static DB_VALUE ldr_clob_tmpl
static void idmap_init(void)
int sm_get_descriptor_component(MOP op, SM_DESCRIPTOR *desc, int for_update, SM_CLASS **class_ptr, SM_COMPONENT **comp_ptr)
LOCK locator_fetch_mode_to_lock(DB_FETCH_MODE purpose, LC_OBJTYPE type, LC_FETCH_VERSION_TYPE fetch_version_type)
#define MAX_DIGITS_FOR_INT
int db_make_short(DB_VALUE *value, const DB_C_SHORT num)
static int ldr_init_loader(LDR_CONTEXT *context)
static int ldr_refresh_attrs(LDR_CONTEXT *context)
#define PARSE_ELO_STR(str, new_len)
int db_make_string(DB_VALUE *value, DB_CONST_C_CHAR str)
static int ldr_timestamp_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
int db_string_to_time(const char *str, DB_TIME *time)
DB_OBJECT * db_create_internal(DB_OBJECT *obj)
int setmem(void *memptr, const tp_domain *domain, const DB_VALUE *value) const
unsigned int DB_TIMESTAMP
#define OR_CHECK_DOUBLE_OVERFLOW(i)
static void ldr_process_object_ref(object_ref_type *ref, int type)
static int ldr_class_oid_db_object(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static bool skip_current_instance
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
static const char * ldr_attr_name(LDR_CONTEXT *context)
#define ER_LDR_SYSTEM_CLASS
static int ldr_elo_int_db_elo(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static int ldr_date_db_date(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
enum currency_check_mode CURRENCY_CHECK_MODE
#define INST_FLAG_CLASS_ATT
static void ldr_act_add_attr(LDR_CONTEXT *context, const char *attr_name, size_t len)
const char * AU_ROOT_CLASS_NAME
int db_make_monetary(DB_VALUE *value, const DB_CURRENCY type, const double amount)
static void parse_error(LDR_CONTEXT *context, DB_TYPE token_type, const char *token)
int set_add_element(DB_COLLECTION *set, DB_VALUE *value)
static int ldr_str_db_char(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static bool ldr_is_ignore_class(const char *class_name, size_t size)
#define ER_LC_UNKNOWN_CLASSNAME
static DB_OBJECT ** Id_map
static int ldr_Interrupt_type
LDR_MOP_TEMPOID_MAP * mop_tempoid_maps
int qstr_hex_to_bin(char *dest, int dest_size, const char *src, int src_size)
int prm_get_integer_value(PARAM_ID prm_id)
int au_fetch_class(MOP op, SM_CLASS **class_ptr, AU_FETCHMODE fetchmode, DB_AUTH type)
#define LDR_ARG_GROW_SIZE
static bool skip_current_class
void(* ldr_act)(LDR_CONTEXT *context, const char *str, size_t len, data_type type)
struct db_object * class_mop
int(* LDR_ELEM)(LDR_CONTEXT *, const char *, size_t, DB_VALUE *)
#define ER_IT_DATA_OVERFLOW
static int ldr_check_date_time_conversion(const char *str, data_type type)
DB_TYPE db_value_type(const DB_VALUE *value)
static int ldr_real_db_double(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
bool intl_is_currency_symbol(const char *src, DB_CURRENCY *currency, int *symbol_size, const CURRENCY_CHECK_MODE check_mode)
static void ldr_date_time_conversion_error(const char *token, DB_TYPE type)
#define OR_CHECK_SHORT_OVERFLOW(i)
static int insert_instance(LDR_CONTEXT *context)
SM_ATTRIBUTE * class_attributes
int db_json_get_json_from_str(const char *json_raw, JSON_DOC *&doc, size_t json_raw_length)
int sm_update_statistics(MOP classop, bool with_fullscan)
int intl_identifier_casecmp(const char *str1, const char *str2)
static int ldr_ignore(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static int ldr_nstr_db_varnchar(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static int ldr_double_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
#define ER_LDR_FORWARD_CONSTRUCTOR
void ldr_sa_load(load_args *args, int *status, bool *interrupted)
void db_free_attribute_descriptor(DB_ATTDESC *descriptor)
static int ldr_collection_db_collection(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
void set_class_id(class_id clsid) override
int locator_flush_class(MOP class_mop)
const char * db_error_string(int level)
static DB_VALUE ldr_datetime_tmpl
static int ldr_oid_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
void ws_pin_instance_and_class(MOP obj, int *opin, int *cpin)
#define OR_CHECK_INT_OVERFLOW(i)
#define LDR_MOP_TEMPOID_MAPS_PRESIZE
void ws_restore_pin(MOP obj, int opin, int cpin)
static int select_set_domain(LDR_CONTEXT *context, TP_DOMAIN *domain, TP_DOMAIN **set_domain_ptr)
void process_line(constant_type *cons) override
void otable_class_att_ref(INST_INFO *inst)
cubload::driver * m_loaddb_driver
const char * sm_get_ch_name(MOP op)
#define CHECK_SKIP_WITH(ret)
DB_OBJECT * db_get_object(const DB_VALUE *value)
CLASS_TABLE * otable_find_class(MOP class_)
static int64_t Last_committed_line
int db_make_timestamptz(DB_VALUE *value, const DB_C_TIMESTAMPTZ *ts_tz_val)
static int add_element(void ***elements, int *count, int *max, int grow)
struct LDR_ATTDESC LDR_ATTDESC
unsigned char buf[DB_NUMERIC_BUF_SIZE]
static int ldr_collection_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
#define ER_LDR_MISSING_ATTRIBUTES
static DB_OBJECT * ldr_get_class_from_id(int id)
TP_DOMAIN_STATUS tp_value_cast(const DB_VALUE *src, DB_VALUE *dest, const TP_DOMAIN *desired_domain, bool implicit_coercion)
int db_abort_transaction(void)
#define TP_DOMAIN_TYPE(dom)
static void ldr_clear_and_free_context(LDR_CONTEXT *context)
int db_get_attribute_descriptor(DB_OBJECT *obj, const char *attname, int class_attribute, int for_update, DB_ATTDESC **descriptor)
#define IS_OLD_GLO_CLASS(class_name)
#define CHECK_VALIDATION_ONLY(context)
int locator_assign_oidset(LC_OIDSET *oidset, LC_OIDMAP_CALLBACK callback)
#define ER_OBJ_ATTRIBUTE_CANT_BE_NULL
SM_METHOD_SIGNATURE * signatures
#define MAX_DIGITS_FOR_BIGINT
int db_drop(DB_OBJECT *obj)
static int update_default_count(CLASS_TABLE *table, OID *oid)
static int ldr_timestamptz_db_timestamptz(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
#define OBJ_SET_BOUND_BIT(obj, element)
static void ldr_register_post_interrupt_handler()
DB_TIMESTAMPTZ timestamptz
static int ldr_bstr_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
static void ldr_invalid_class_error(LDR_CONTEXT *context)
static int update_default_instances_stats(LDR_CONTEXT *context)
static DB_VALUE ldr_blob_tmpl
#define db_private_free_and_init(thrd, ptr)
constructor_spec_type * ctor_spec
void check_class(const char *class_name, int class_id) override
LC_OIDSET * locator_make_oid_set(void)
static DB_VALUE ldr_char_tmpl
static DB_OBJECT * ldr_find_class(const char *class_name)
unsigned char is_max_string
void init(class_id clsid) override
int ml_ext_add(DB_OBJLIST **list, MOP mop, int *added_ptr)
int numeric_coerce_num_to_bigint(DB_C_NUMERIC arg, int scale, DB_BIGINT *answer)
#define db_private_alloc(thrd, size)
int intl_char_size(const unsigned char *src, int length_in_chars, INTL_CODESET src_codeset, int *byte_count)
static int64_t Total_objects_loaded
#define ER_LDR_INVALID_CLASS_ATTR
need_clear_type need_clear
#define CHECK_PTR(err, expr)
static LDR_MOP_TEMPOID_MAPS * ldr_Mop_tempoid_maps
static void display_error_line(int adjust)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
static int ldr_int_db_generic(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
#define ER_LDR_INVALID_STATE
int obj_set_shared(MOP op, const char *name, DB_VALUE *value)
int db_change_default(MOP class_, const char *name, DB_VALUE *value)
void locator_free_oid_set(THREAD_ENTRY *thread_p, LC_OIDSET *oidset)
int db_make_time(DB_VALUE *value, const int hour, const int minute, const int second)
#define ER_LDR_INTERNAL_REFERENCE
static int ldr_datetime_db_datetime(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
int er_filter_errid(bool ignore_warning)
bool obt_enable_unique_checking(bool new_state)
INST_INFO * otable_find(CLASS_TABLE *table, int id)
static int ldr_sys_user_db_generic(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
int db_make_datetimetz(DB_VALUE *value, const DB_DATETIMETZ *datetimetz)
#define ER_DATE_CONVERSION
static int ldr_xstr_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
const char * envvar_get(const char *name)
static const char * ldr_Hint_class_names[LDR_LOCKHINT_COUNT]
int db_make_float(DB_VALUE *value, const DB_C_FLOAT num)
int qstr_bit_to_bin(char *dest, int dest_size, const char *src, int src_size)
#define OBJ_CLEAR_BOUND_BIT(obj, element)
#define DB_DEFAULT_PRECISION
static int ldr_Load_interrupted
#define ER_LDR_NESTED_SET
int db_string_to_timestampltz(const char *str, DB_TIMESTAMP *ts)
static int ldr_numeric_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
static void ldr_clear_err_count(LDR_CONTEXT *context)
#define OR_CHECK_FLOAT_OVERFLOW(i)
static int ldr_Hint_subclasses[LDR_LOCKHINT_COUNT]
static int ldr_add_mop_tempoid_map(MOP mop, CLASS_TABLE *table, int id)
unsigned char compressed_need_clear
int otable_map_reserved(OTABLE_MAPFUNC mapfunc, int stop_on_error)
int sm_partitioned_class_type(DB_OBJECT *classop, int *partition_type, char *keyattr, MOP **partitions)
int db_send_argarray(MOP obj, const char *name, DB_VALUE *returnval, DB_VALUE **args)
void print_log_msg(int verbose, const char *fmt,...)
int obj_set(MOP op, const char *name, DB_VALUE *value)
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)
static int clist_init(void)
static void ldr_register_post_commit_handler()
#define GET_DOMAIN(context, domain)
int db_make_varbit(DB_VALUE *value, const int max_bit_length, DB_CONST_C_BIT bit_str, const int bit_str_bit_size)
static int ldr_class_attr_db_generic(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att, DB_VALUE *val)
int db_string_to_datetimeltz(const char *str, DB_DATETIME *datetime)
static int ldr_bstr_db_varbit(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static void ldr_report_num_of_commits(int64_t num_committed)
DB_COLLECTION * db_col_create(DB_TYPE type, int size, DB_DOMAIN *domain)
int intl_identifier_lower_string_size(const char *src)
static int check_object_domain(LDR_CONTEXT *context, DB_OBJECT *class_, DB_OBJECT **actual_class)
int db_make_collection(DB_VALUE *value, DB_C_SET *set)
#define ER_LDR_DOMAIN_MISMATCH
#define free_and_init(ptr)
void numeric_coerce_dec_str_to_num(const char *dec_str, DB_C_NUMERIC result)
unsigned char pruning_type
int db_datetime_encode(DB_DATETIME *datetime, int month, int day, int year, int hour, int minute, int second, int millisecond)
int(* LDR_SETTER)(LDR_CONTEXT *, const char *, size_t, SM_ATTRIBUTE *)
int db_make_timestampltz(DB_VALUE *value, const DB_C_TIMESTAMP ts_val)
int install_class(const char *class_name) override
static int ldr_int_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
static int ldr_update_statistics(void)
class_installer & get_class_installer()
DB_METHOD * db_get_class_method(DB_OBJECT *obj, const char *name)
static int ldr_oid_db_object(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static int ldr_xstr_db_varbit(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
#define ER_LDR_ELO_INPUT_FILE
static DB_VALUE ldr_varchar_tmpl
int db_value_put(DB_VALUE *value, const DB_TYPE_C c_type, void *input, const int input_length)
enum intl_codeset INTL_CODESET
int intl_char_count(const unsigned char *src, int length_in_bytes, INTL_CODESET src_codeset, int *char_count)
static int ldr_timestamp_db_timestamp(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static LDR_ELEM elem_converter[NUM_LDR_TYPES]
void ml_ext_free(DB_OBJLIST *list)
void ws_intern_instances(MOP class_mop)
std::size_t get_rows_number() override
static int ldr_int_db_short(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
void ws_decache_all_instances(MOP mop)
int util_log_write_errstr(const char *format,...)
SM_METHOD_ARGUMENT * args
void(* LDR_POST_INTERRUPT_HANDLER)(int64_t)
void elo_init_structure(DB_ELO *elo)
int db_make_varnchar(DB_VALUE *value, const int max_nchar_length, DB_CONST_C_NCHAR str, const int nchar_str_byte_size, const int codeset, const int collation_id)
static int ldr_nstr_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
#define TP_FLOATING_PRECISION_VALUE
static int ldr_assign_all_perm_oids(void)
static int ldr_timestamptz_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
#define DB_VALUE_TYPE(value)
static int ldr_elo_ext_db_elo(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static int ldr_time_db_time(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
void finish_line() override
struct ldr_mop_tempoid_maps LDR_MOP_TEMPOID_MAPS
int db_make_null(DB_VALUE *value)
char * msgcat_message(int cat_id, int set_id, int msg_id)
static void ldr_act_set_ref_class(LDR_CONTEXT *context, char *name)
void initialize(class_installer *cls_installer, object_loader *obj_loader, error_handler *error_handler)
#define ER_OBJ_DOMAIN_CONFLICT
static void ldr_act_meth(LDR_CONTEXT *context, const char *str, size_t len, data_type type)
int db_make_double(DB_VALUE *value, const DB_C_DOUBLE num)
#define ER_LDR_VALUE_OVERFLOW
int parse_bigint(INT64 *ret_p, const char *str_p, int base)
static DB_VALUE ldr_time_tmpl
int au_fetch_instance(MOP op, MOBJ *obj_ptr, AU_FETCHMODE mode, LC_FETCH_VERSION_TYPE fetch_version_type, DB_AUTH type)
static int ldr_timestampltz_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
std::vector< std::string > ignore_classes
void(* LDR_POST_COMMIT_HANDLER)(int64_t)
const std::size_t LDR_MAX_ARGS
static int ldr_finish_context(LDR_CONTEXT *context)
int db_value_clear(DB_VALUE *value)
int db_make_timestamp(DB_VALUE *value, const DB_C_TIMESTAMP timeval)
int db_make_int(DB_VALUE *value, const int num)
static int ldr_elo_int_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
static int ldr_str_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
#define LDR_LOCKHINT_COUNT
static int ldr_json_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
#define STATS_WITH_SAMPLING
static int ldr_real_db_generic(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
int db_make_char(DB_VALUE *value, const int char_length, DB_CONST_C_CHAR str, const int char_str_byte_size, const int codeset, const int collation_id)
static int ldr_date_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
#define ER_LDR_UNEXPECTED_ARGUMENT
static int ldr_real_db_float(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
int db_string_to_timestamptz(const char *str, DB_TIMESTAMPTZ *ts_tz, bool *has_zone)
void ws_release_instance(MOP mop)
static int ldr_datetimetz_db_datetimetz(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static int ldr_time_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
string_type * instance_number
SM_ATTRIBUTE * ordered_attributes
static int check_class_domain(LDR_CONTEXT *context)
static int ldr_generic(LDR_CONTEXT *context, DB_VALUE *value)
static void ldr_flush(LDR_CONTEXT *context)
static int ldr_datetimetz_elem(LDR_CONTEXT *context, const char *str, size_t len, DB_VALUE *val)
struct ldr_mop_tempoid_map LDR_MOP_TEMPOID_MAP
int otable_update(CLASS_TABLE *table, int id)
#define ER_LDR_NO_CLASS_OR_NO_ATTRIBUTE
static int ldr_datetimeltz_db_datetimeltz(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
int db_make_bit(DB_VALUE *value, const int bit_length, DB_CONST_C_BIT bit_str, const int bit_str_bit_size)
DB_COLLECTION * collection
static void ldr_increment_err_count(LDR_CONTEXT *context, int i)
int db_string_to_date(const char *str, DB_DATE *date)
const char * AU_AUTH_CLASS_NAME
#define ER_LDR_MISSING_ARGUMENT
SM_METHOD_ARGUMENT * classobj_find_method_arg(SM_METHOD_ARGUMENT **arglist, int index, int create)
static DB_VALUE ldr_bit_tmpl
struct db_char::@54 medium
static DB_VALUE ldr_date_tmpl
int db_commit_transaction(void)
static int ldr_assign_class_id(DB_OBJECT *class_, int id)
static LDR_POST_INTERRUPT_HANDLER ldr_post_interrupt_handler
static int ldr_int_db_int(LDR_CONTEXT *context, const char *str, size_t len, SM_ATTRIBUTE *att)
static LC_PREFETCH_FLAGS ldr_Hint_flags[LDR_LOCKHINT_COUNT]
char * intl_get_money_esc_ISO_symbol(const DB_CURRENCY currency)
int db_value_domain_init(DB_VALUE *value, const DB_TYPE type, const int precision, const int scale)
static int ldr_init(load_args *args)
static void ldr_clear_context(LDR_CONTEXT *context)
static int ldr_mop_tempoid_maps_init(void)
static int check_commit(LDR_CONTEXT *context)
static void invalid_class_id_error(LDR_CONTEXT *context, int id)
#define MSGCAT_CATALOG_UTILS