74 extern int get_class_mops (
char **class_names,
int num_class,
MOP ** class_list,
int *num_class_list);
85 const char *exec_name;
87 exec_name =
basename ((
char *) argv0);
107 char **tables =
NULL;
123 if (table_size > 1 && input_filename !=
NULL)
128 else if (table_size > 1)
130 tables = (
char **) malloc (
sizeof (
char *) * (table_size - 1));
138 for (i = 1; i < table_size; i++)
155 status =
compactdb_start (verbose_flag, input_filename, tables, table_size - 1);
184 int num_class_mops = 0;
185 bool skip_phase3 =
false;
193 if (input_filename && input_class_names && input_class_length > 0)
198 if (input_class_names && input_class_length > 0)
200 status =
get_class_mops (input_class_names, input_class_length, &class_mops, &num_class_mops);
207 else if (input_filename)
219 if (class_table ==
NULL)
223 num_class_mops = class_table->
num;
224 class_mops = class_table->
mops;
248 for (i = 0; i < num_class_mops; i++)
287 for (i = 0; i < num_class_mops; i++)
289 ws_find (class_mops[i], &
object);
324 if (file_tracker_reclaim_marked_deleted (thread_p) !=
NO_ERROR)
344 for (i = 0; i < num_class_mops; i++)
346 class_mops[
i] =
NULL;
373 int nobjects, nfetched;
383 if (class_ptr ==
NULL)
388 class_oid =
ws_oid (class_);
396 #if defined(CUBRID_DEBUG) 429 while (nobjects != nfetched)
434 if (fetch_area !=
NULL)
439 for (i = 0; i < mobjs->
num_objs; i++)
504 class_ptr = desc_obj->
class_;
507 #if defined(CUBRID_DEBUG) 515 value = &desc_obj->
values[v++];
539 int return_value = 0;
569 #if defined(CUBRID_DEBUG) 571 ref_oid->
pageid, ref_oid->
slotid, ref_class_oid.volid, ref_class_oid.pageid, ref_class_oid.slotid);
616 int return_value = 0;
int sm_destroy_representations(MOP op)
#define WS_IS_DELETED(mop)
int compactdb(UTIL_FUNCTION_ARG *arg)
cubthread::entry * thread_get_thread_entry_info(void)
DB_COLLECTION * db_get_set(const DB_VALUE *value)
MVCC_SNAPSHOT * logtb_get_mvcc_snapshot(THREAD_ENTRY *thread_p)
void db_set_client_type(int client_type)
int catalog_reclaim_space(THREAD_ENTRY *thread_p)
#define PRINT_AND_LOG_ERR_MSG(...)
int sysprm_set_force(const char *pname, const char *pvalue)
MOP ws_mop(const OID *oid, MOP class_mop)
int db_login(const char *name, const char *password)
SCAN_CODE heap_get_visible_version(THREAD_ENTRY *thread_p, const OID *oid, OID *class_oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, int ispeeking, int old_chn)
static int compactdb_start(bool verbose_flag, char *input_filename, char **input_class_name, int input_class_length)
void locator_free_copy_area(LC_COPYAREA *copyarea)
int get_class_mops_from_file(const char *input_filename, MOP **class_list, int *num_class_mops)
static void process_class(THREAD_ENTRY *thread_p, DB_OBJECT *class_, bool verbose_flag)
#define AU_DISABLE_PASSWORDS
#define LC_START_ONEOBJ_PTR_IN_COPYAREA(manyobjs_ptr)
void set_iterator_free(SET_ITERATOR *it)
int desc_obj_to_disk(DESC_OBJ *obj, RECDES *record, bool *index_flag)
SM_ATTRIBUTE * attributes
DESC_OBJ * make_desc_obj(SM_CLASS *class_)
int get_class_mops(char **class_names, int num_class, MOP **class_list, int *num_class_list)
struct sm_component * next
#define OID_SET_NULL(oidp)
int set_iterator_next(SET_ITERATOR *it)
SCAN_CODE heap_get_last_version(THREAD_ENTRY *thread_p, HEAP_GET_CONTEXT *context)
void locator_free_list_mops(LIST_MOPS *mops)
LIST_MOPS * locator_get_all_mops(MOP class_mop, DB_FETCH_MODE purpose, LC_FETCH_VERSION_TYPE *force_fetch_version_type)
int heap_scancache_end(THREAD_ENTRY *thread_p, HEAP_SCANCACHE *scan_cache)
int util_log_write_errid(int message_id,...)
static void compact_usage(const char *argv0)
static DB_OBJECT * is_class(OID *obj_oid, OID *class_oid)
#define LC_RECDES_TO_GET_ONEOBJ(copy_area_ptr, oneobj_ptr, recdes_ptr)
int db_restart(const char *program, int print_version, const char *volume)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
static void disk_init(void)
const char * sm_ch_name(const MOBJ clobj)
bool utility_get_option_bool_value(UTIL_ARG_MAP *arg_map, int arg_ch)
int heap_reclaim_addresses(const HFID *hfid)
static void free_recdes(RECDES *rec)
static int process_value(THREAD_ENTRY *thread_p, DB_VALUE *value)
int desc_disk_to_obj(MOP classop, SM_CLASS *class_, RECDES *record, DESC_OBJ *obj)
void heap_clean_get_context(THREAD_ENTRY *thread_p, HEAP_GET_CONTEXT *context)
int prm_get_integer_value(PARAM_ID prm_id)
#define SINGLE_ROW_UPDATE
HFID * sm_ch_heap(MOBJ clobj)
static int update_indexes(OID *class_oid, OID *obj_oid, RECDES *rec)
int heap_update_logical(THREAD_ENTRY *thread_p, HEAP_OPERATION_CONTEXT *context)
void heap_create_update_context(HEAP_OPERATION_CONTEXT *context, HFID *hfid_p, OID *oid_p, OID *class_oid_p, RECDES *recdes_p, HEAP_SCANCACHE *scancache_p, UPDATE_INPLACE_STYLE in_place)
const char * db_error_string(int level)
DB_OBJECT * db_get_object(const DB_VALUE *value)
#define OID_EQ(oidp1, oidp2)
#define LC_NEXT_ONEOBJ_PTR_IN_COPYAREA(oneobj_ptr)
int catalog_drop_old_representations(THREAD_ENTRY *thread_p, OID *class_id_p)
static int failed_objects
static int process_set(THREAD_ENTRY *thread_p, DB_SET *set)
static void disk_final(void)
int utility_get_option_string_table_size(UTIL_ARG_MAP *arg_map)
static void error(const char *msg)
#define HFID_IS_NULL(hfid)
static void process_object(THREAD_ENTRY *thread_p, DESC_OBJ *desc_obj, OID *obj_oid, bool verbose_flag)
static int disk_update_instance(MOP classop, DESC_OBJ *obj, OID *oid)
static char database_name[MAX_HA_DBINFO_LENGTH]
OID * db_get_oid(const DB_VALUE *value)
static RECDES * alloc_recdes(int length)
void heap_init_get_context(THREAD_ENTRY *thread_p, HEAP_GET_CONTEXT *context, const OID *oid, OID *class_oid, RECDES *recdes, HEAP_SCANCACHE *scan_cache, int ispeeking, int old_chn)
MVCC_SNAPSHOT * mvcc_snapshot
#define free_and_init(ptr)
int locator_update_index(THREAD_ENTRY *thread_p, RECDES *new_recdes, RECDES *old_recdes, ATTR_ID *att_id, int n_att_id, OID *oid, OID *class_oid, int op_type, HEAP_SCANCACHE *scan_cache, REPL_INFO *repl_info)
#define LC_MANYOBJS_PTR_IN_COPYAREA(copy_areaptr)
int util_log_write_errstr(const char *format,...)
char * basename(const char *path)
DB_VALUE * set_iterator_value(SET_ITERATOR *it)
int locator_fetch_all(const HFID *hfid, LOCK *lock, LC_FETCH_VERSION_TYPE fetch_version_type, OID *class_oidp, int *nobjects, int *nfetched, OID *last_oidp, LC_COPYAREA **fetch_copyarea)
#define DB_VALUE_TYPE(value)
int locator_flush_all_instances(MOP class_mop, bool decache)
char * msgcat_message(int cat_id, int set_id, int msg_id)
const char * prm_get_name(PARAM_ID prm_id)
void desc_free(DESC_OBJ *obj)
#define OPTION_STRING_TABLE
int heap_scancache_quick_start(HEAP_SCANCACHE *scan_cache)
#define COMPACT_INPUT_CLASS_FILE_S
int ws_find(MOP mop, MOBJ *obj)
const char * command_name
SET_ITERATOR * set_iterate(DB_COLLECTION *set)
char * utility_get_option_string_value(UTIL_ARG_MAP *arg_map, int arg_ch, int index)
int db_commit_transaction(void)
#define COMPACT_VERBOSE_S
#define MSGCAT_CATALOG_UTILS