/** * Initialize the database storage * @return true if the database was initialized successfully, false otherwise */ bool initialize_storage(void) { ib_err_t error; ib_id_t tid; checked(ib_init()); checked(ib_cfg_set_text("data_home_dir", "/tmp/memcached_light")); checked(ib_cfg_set_text("log_group_home_dir", "/tmp/memcached_light")); checked(ib_cfg_set_bool_on("file_per_table")); checked(ib_startup("barracuda")); /* check to see if the table exists or if we should create the schema */ error= ib_table_get_id(tablename, &tid); if (error == DB_TABLE_NOT_FOUND) { if (!create_schema()) { return false; } } else if (error != DB_SUCCESS) { fprintf(stderr, "Failed to get table id: %s\n", ib_strerror(error)); return false; } return true; error_exit: return false; }
bool init_db(void) { ib_err_t err; /* Initialize the memory sub-system. */ ib_init(); /* Call the ib_cfg_*() functions to setup the directory etc. */ err = ib_cfg_set_bool_off("adaptive_hash_index"); err = ib_cfg_set_int("additional_mem_pool_size", 16*1024*1024); err = ib_cfg_set_int("buffer_pool_size", 1024*1024*1024); err = ib_cfg_set_int("flush_log_at_trx_commit", 2); err = ib_cfg_set_int("log_buffer_size", 8*1024*1024); err = ib_cfg_set_int("log_file_size", 256*1024*1024); err = ib_cfg_set_text("data_home_dir", "/data/"); err = ib_cfg_set_text("log_group_home_dir", "/data/"); err = ib_cfg_set_text("flush_method", "O_DIRECT"); /* Create system files if this is the first time * or do recovery if starting an existing instance. */ err = ib_startup("barracuda"); /* File format "barracuda" supports all * the currently available table formats. */ if (err == DB_SUCCESS) { printf("InnoDB started!\n"); } else { printf("Error starting up InnoDB: %s\n", ib_strerror(err)); return false; } return true; }
void test_configure(void) /*================*/ { ib_bool_t ret; create_directory(log_group_home_dir); #ifndef __WIN__ ret = ib_cfg_set_text("flush_method", "O_DIRECT"); assert(ret); #else ret = ib_cfg_set_text("flush_method", "async_unbuffered"); assert(ret); #endif ret = ib_cfg_set_int("mirrored_log_groups", 2); assert(ret); ret = ib_cfg_set_int("log_files_in_group", 2); assert(ret); ret = ib_cfg_set_int("log_file_size", 32 * 1024 * 1024); assert(ret); ret = ib_cfg_set_int("log_buffer_size", 24 * 16384); assert(ret); ret = ib_cfg_set_int("buffer_pool_size", 5 * 1024 * 1024); assert(ret); ret = ib_cfg_set_int("additional_mem_pool_size", 4 * 1024 * 1024); assert(ret); ret = ib_cfg_set_int("flush_log_at_trx_commit", 0); assert(ret); ret = ib_cfg_set_int("file_io_threads", 4); assert(ret); ret = ib_cfg_set_int("lock_wait_timeout", 60); assert(ret); ret = ib_cfg_set_int("open_files", 300); assert(ret); ret = ib_cfg_set_bool_on("doublewrite"); assert(ret); ret = ib_cfg_set_bool_on("checksums"); assert(ret); ret = ib_cfg_set_bool_on("rollback_on_timeout"); assert(ret); ret = ib_cfg_set_bool_on("print_verbose_log"); assert(ret); ret = ib_cfg_set_bool_on("file_per_table"); assert(ret); ret = ib_cfg_set_text("data_home_dir", "."); assert(ret); ret = ib_cfg_set_text("log_group_home_dir", log_group_home_dir); if (!ret) { fprintf(stderr, "syntax error in log_group_home_dir, or a " "wrong number of mirrored log groups\n"); exit(1); } ret = ib_cfg_set_text("data_file_path", data_file_path); if (!ret) { fprintf(stderr, "InnoDB: syntax error in data_file_path\n"); exit(1); } }
int main(int argc,char **argv){ if(argc != 2){ printf("give me a database\table name\n"); return 1; } char *dtname=argv[1]; ib_err_t err; err=ib_init(); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } err = ib_cfg_set_int("log_buffer_size", 8*1024*1024); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } err = ib_cfg_set_int("force_recovery", 1); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } err = ib_cfg_set_int("log_file_size", 128*1024*1024); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } err = ib_cfg_set_int("log_files_in_group", 3); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } err = ib_cfg_set_text("log_group_home_dir", "./"); //err = ib_cfg_set_text("log_group_home_dir", "/var/lib/mysql/"); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } err = ib_cfg_set_text("data_home_dir", "./"); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } err = ib_cfg_set_text("data_file_path", "ibdata1:500M:autoextend"); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } err = ib_cfg_set_bool_on("file_per_table"); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } err=ib_startup("Antelope"); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } ib_trx_t trx; ib_crsr_t crsr; trx=ib_trx_begin(IB_TRX_REPEATABLE_READ); assert(trx != NULL); err=ib_cursor_open_table(dtname,trx,&crsr); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } ib_tpl_t tpl; tpl=ib_clust_read_tuple_create(crsr); assert(tpl != NULL); err=ib_cursor_first(crsr); while(err == DB_SUCCESS){ err=ib_cursor_read_row(crsr,tpl); print_tuple(stdout,tpl); err=ib_cursor_next(crsr); tpl=ib_tuple_clear(tpl); } ib_tuple_delete(tpl); err=ib_cursor_close(crsr); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } err=ib_trx_commit(trx); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } err=ib_shutdown(IB_SHUTDOWN_NORMAL); if(err != DB_SUCCESS){ puts(ib_strerror(err)); return err; } return 0; }