Added db paths to c
Summary: Closes https://github.com/facebook/rocksdb/pull/2613 Differential Revision: D5476064 Pulled By: sagar0 fbshipit-source-id: 6b30a9eacb93a945bbe499eafb90565fa9f1798b
This commit is contained in:
parent
1d8aa2961c
commit
34112aeffd
26
db/c.cc
26
db/c.cc
@ -52,6 +52,7 @@ using rocksdb::CompressionType;
|
|||||||
using rocksdb::WALRecoveryMode;
|
using rocksdb::WALRecoveryMode;
|
||||||
using rocksdb::DB;
|
using rocksdb::DB;
|
||||||
using rocksdb::DBOptions;
|
using rocksdb::DBOptions;
|
||||||
|
using rocksdb::DbPath;
|
||||||
using rocksdb::Env;
|
using rocksdb::Env;
|
||||||
using rocksdb::EnvOptions;
|
using rocksdb::EnvOptions;
|
||||||
using rocksdb::InfoLogLevel;
|
using rocksdb::InfoLogLevel;
|
||||||
@ -382,6 +383,10 @@ struct rocksdb_mergeoperator_t : public MergeOperator {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct rocksdb_dbpath_t {
|
||||||
|
DbPath rep;
|
||||||
|
};
|
||||||
|
|
||||||
struct rocksdb_env_t {
|
struct rocksdb_env_t {
|
||||||
Env* rep;
|
Env* rep;
|
||||||
bool is_default;
|
bool is_default;
|
||||||
@ -2009,6 +2014,16 @@ void rocksdb_options_set_paranoid_checks(
|
|||||||
opt->rep.paranoid_checks = v;
|
opt->rep.paranoid_checks = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void rocksdb_options_set_db_paths(rocksdb_options_t* opt,
|
||||||
|
const rocksdb_dbpath_t** dbpath_values,
|
||||||
|
size_t num_paths) {
|
||||||
|
std::vector<DbPath> db_paths(num_paths);
|
||||||
|
for (size_t i = 0; i < num_paths; ++i) {
|
||||||
|
db_paths[i] = dbpath_values[i]->rep;
|
||||||
|
}
|
||||||
|
opt->rep.db_paths = db_paths;
|
||||||
|
}
|
||||||
|
|
||||||
void rocksdb_options_set_env(rocksdb_options_t* opt, rocksdb_env_t* env) {
|
void rocksdb_options_set_env(rocksdb_options_t* opt, rocksdb_env_t* env) {
|
||||||
opt->rep.env = (env ? env->rep : nullptr);
|
opt->rep.env = (env ? env->rep : nullptr);
|
||||||
}
|
}
|
||||||
@ -2789,6 +2804,17 @@ size_t rocksdb_cache_get_pinned_usage(rocksdb_cache_t* cache) {
|
|||||||
return cache->rep->GetPinnedUsage();
|
return cache->rep->GetPinnedUsage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rocksdb_dbpath_t* rocksdb_dbpath_create(const char* path, uint64_t target_size) {
|
||||||
|
rocksdb_dbpath_t* result = new rocksdb_dbpath_t;
|
||||||
|
result->rep.path = std::string(path);
|
||||||
|
result->rep.target_size = target_size;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void rocksdb_dbpath_destroy(rocksdb_dbpath_t* dbpath) {
|
||||||
|
delete dbpath;
|
||||||
|
}
|
||||||
|
|
||||||
rocksdb_env_t* rocksdb_create_default_env() {
|
rocksdb_env_t* rocksdb_create_default_env() {
|
||||||
rocksdb_env_t* result = new rocksdb_env_t;
|
rocksdb_env_t* result = new rocksdb_env_t;
|
||||||
result->rep = Env::Default();
|
result->rep = Env::Default();
|
||||||
|
21
db/c_test.c
21
db/c_test.c
@ -41,6 +41,7 @@ static char dbname[200];
|
|||||||
static char sstfilename[200];
|
static char sstfilename[200];
|
||||||
static char dbbackupname[200];
|
static char dbbackupname[200];
|
||||||
static char dbcheckpointname[200];
|
static char dbcheckpointname[200];
|
||||||
|
static char dbpathname[200];
|
||||||
|
|
||||||
static void StartPhase(const char* name) {
|
static void StartPhase(const char* name) {
|
||||||
fprintf(stderr, "=== Test %s\n", name);
|
fprintf(stderr, "=== Test %s\n", name);
|
||||||
@ -351,6 +352,7 @@ int main(int argc, char** argv) {
|
|||||||
rocksdb_t* db;
|
rocksdb_t* db;
|
||||||
rocksdb_comparator_t* cmp;
|
rocksdb_comparator_t* cmp;
|
||||||
rocksdb_cache_t* cache;
|
rocksdb_cache_t* cache;
|
||||||
|
rocksdb_dbpath_t *dbpath;
|
||||||
rocksdb_env_t* env;
|
rocksdb_env_t* env;
|
||||||
rocksdb_options_t* options;
|
rocksdb_options_t* options;
|
||||||
rocksdb_compactoptions_t* coptions;
|
rocksdb_compactoptions_t* coptions;
|
||||||
@ -385,8 +387,14 @@ int main(int argc, char** argv) {
|
|||||||
GetTempDir(),
|
GetTempDir(),
|
||||||
((int)geteuid()));
|
((int)geteuid()));
|
||||||
|
|
||||||
|
snprintf(dbpathname, sizeof(dbpathname),
|
||||||
|
"%s/rocksdb_c_test-%d-dbpath",
|
||||||
|
GetTempDir(),
|
||||||
|
((int) geteuid()));
|
||||||
|
|
||||||
StartPhase("create_objects");
|
StartPhase("create_objects");
|
||||||
cmp = rocksdb_comparator_create(NULL, CmpDestroy, CmpCompare, CmpName);
|
cmp = rocksdb_comparator_create(NULL, CmpDestroy, CmpCompare, CmpName);
|
||||||
|
dbpath = rocksdb_dbpath_create(dbpathname, 1024 * 1024);
|
||||||
env = rocksdb_create_default_env();
|
env = rocksdb_create_default_env();
|
||||||
cache = rocksdb_cache_create_lru(100000);
|
cache = rocksdb_cache_create_lru(100000);
|
||||||
|
|
||||||
@ -1440,6 +1448,18 @@ int main(int argc, char** argv) {
|
|||||||
CheckNoError(err);
|
CheckNoError(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Simple sanity check that options setting db_paths work.
|
||||||
|
StartPhase("open_db_paths");
|
||||||
|
{
|
||||||
|
rocksdb_close(db);
|
||||||
|
rocksdb_destroy_db(options, dbname, &err);
|
||||||
|
|
||||||
|
const rocksdb_dbpath_t* paths[1] = {dbpath};
|
||||||
|
rocksdb_options_set_db_paths(options, paths, 1);
|
||||||
|
db = rocksdb_open(options, dbname, &err);
|
||||||
|
CheckNoError(err);
|
||||||
|
}
|
||||||
|
|
||||||
StartPhase("cleanup");
|
StartPhase("cleanup");
|
||||||
rocksdb_close(db);
|
rocksdb_close(db);
|
||||||
rocksdb_options_destroy(options);
|
rocksdb_options_destroy(options);
|
||||||
@ -1449,6 +1469,7 @@ int main(int argc, char** argv) {
|
|||||||
rocksdb_compactoptions_destroy(coptions);
|
rocksdb_compactoptions_destroy(coptions);
|
||||||
rocksdb_cache_destroy(cache);
|
rocksdb_cache_destroy(cache);
|
||||||
rocksdb_comparator_destroy(cmp);
|
rocksdb_comparator_destroy(cmp);
|
||||||
|
rocksdb_dbpath_destroy(dbpath);
|
||||||
rocksdb_env_destroy(env);
|
rocksdb_env_destroy(env);
|
||||||
|
|
||||||
fprintf(stderr, "PASS\n");
|
fprintf(stderr, "PASS\n");
|
||||||
|
@ -82,6 +82,7 @@ typedef struct rocksdb_compactionfiltercontext_t
|
|||||||
typedef struct rocksdb_compactionfilterfactory_t
|
typedef struct rocksdb_compactionfilterfactory_t
|
||||||
rocksdb_compactionfilterfactory_t;
|
rocksdb_compactionfilterfactory_t;
|
||||||
typedef struct rocksdb_comparator_t rocksdb_comparator_t;
|
typedef struct rocksdb_comparator_t rocksdb_comparator_t;
|
||||||
|
typedef struct rocksdb_dbpath_t rocksdb_dbpath_t;
|
||||||
typedef struct rocksdb_env_t rocksdb_env_t;
|
typedef struct rocksdb_env_t rocksdb_env_t;
|
||||||
typedef struct rocksdb_fifo_compaction_options_t rocksdb_fifo_compaction_options_t;
|
typedef struct rocksdb_fifo_compaction_options_t rocksdb_fifo_compaction_options_t;
|
||||||
typedef struct rocksdb_filelock_t rocksdb_filelock_t;
|
typedef struct rocksdb_filelock_t rocksdb_filelock_t;
|
||||||
@ -713,6 +714,9 @@ extern ROCKSDB_LIBRARY_API void rocksdb_options_set_error_if_exists(
|
|||||||
rocksdb_options_t*, unsigned char);
|
rocksdb_options_t*, unsigned char);
|
||||||
extern ROCKSDB_LIBRARY_API void rocksdb_options_set_paranoid_checks(
|
extern ROCKSDB_LIBRARY_API void rocksdb_options_set_paranoid_checks(
|
||||||
rocksdb_options_t*, unsigned char);
|
rocksdb_options_t*, unsigned char);
|
||||||
|
extern ROCKSDB_LIBRARY_API void rocksdb_options_set_db_paths(rocksdb_options_t*,
|
||||||
|
const rocksdb_dbpath_t** path_values,
|
||||||
|
size_t num_paths);
|
||||||
extern ROCKSDB_LIBRARY_API void rocksdb_options_set_env(rocksdb_options_t*,
|
extern ROCKSDB_LIBRARY_API void rocksdb_options_set_env(rocksdb_options_t*,
|
||||||
rocksdb_env_t*);
|
rocksdb_env_t*);
|
||||||
extern ROCKSDB_LIBRARY_API void rocksdb_options_set_info_log(rocksdb_options_t*,
|
extern ROCKSDB_LIBRARY_API void rocksdb_options_set_info_log(rocksdb_options_t*,
|
||||||
@ -1089,6 +1093,11 @@ rocksdb_cache_get_usage(rocksdb_cache_t* cache);
|
|||||||
extern ROCKSDB_LIBRARY_API size_t
|
extern ROCKSDB_LIBRARY_API size_t
|
||||||
rocksdb_cache_get_pinned_usage(rocksdb_cache_t* cache);
|
rocksdb_cache_get_pinned_usage(rocksdb_cache_t* cache);
|
||||||
|
|
||||||
|
/* DBPath */
|
||||||
|
|
||||||
|
extern ROCKSDB_LIBRARY_API rocksdb_dbpath_t* rocksdb_dbpath_create(const char* path, uint64_t target_size);
|
||||||
|
extern ROCKSDB_LIBRARY_API void rocksdb_dbpath_destroy(rocksdb_dbpath_t*);
|
||||||
|
|
||||||
/* Env */
|
/* Env */
|
||||||
|
|
||||||
extern ROCKSDB_LIBRARY_API rocksdb_env_t* rocksdb_create_default_env();
|
extern ROCKSDB_LIBRARY_API rocksdb_env_t* rocksdb_create_default_env();
|
||||||
|
Loading…
Reference in New Issue
Block a user