@@ -51,6 +51,7 @@ using rocksdb::Status;
51
51
using rocksdb::WritableFile;
52
52
using rocksdb::WriteBatch;
53
53
using rocksdb::WriteOptions;
54
+ using rocksdb::LiveFileMetaData;
54
55
55
56
using std::shared_ptr;
56
57
@@ -70,6 +71,7 @@ struct rocksdb_writablefile_t { WritableFile* rep; };
70
71
struct rocksdb_filelock_t { FileLock* rep; };
71
72
struct rocksdb_logger_t { shared_ptr<Logger> rep; };
72
73
struct rocksdb_cache_t { shared_ptr<Cache> rep; };
74
+ struct rocksdb_livefiles_t { std::vector<LiveFileMetaData> rep; };
73
75
74
76
struct rocksdb_comparator_t : public Comparator {
75
77
void * state_;
@@ -435,6 +437,19 @@ void rocksdb_approximate_sizes(
435
437
delete[] ranges;
436
438
}
437
439
440
+ void rocksdb_delete_file (
441
+ rocksdb_t * db,
442
+ const char * name) {
443
+ db->rep ->DeleteFile (name);
444
+ }
445
+
446
+ const rocksdb_livefiles_t * rocksdb_livefiles (
447
+ rocksdb_t * db) {
448
+ rocksdb_livefiles_t * result = new rocksdb_livefiles_t ;
449
+ db->rep ->GetLiveFilesMetaData (&result->rep );
450
+ return result;
451
+ }
452
+
438
453
void rocksdb_compact_range (
439
454
rocksdb_t * db,
440
455
const char * start_key, size_t start_key_len,
@@ -537,6 +552,10 @@ void rocksdb_writebatch_clear(rocksdb_writebatch_t* b) {
537
552
b->rep .Clear ();
538
553
}
539
554
555
+ int rocksdb_writebatch_count (rocksdb_writebatch_t * b) {
556
+ return b->rep .Count ();
557
+ }
558
+
540
559
void rocksdb_writebatch_put (
541
560
rocksdb_writebatch_t * b,
542
561
const char * key, size_t klen,
@@ -581,6 +600,11 @@ void rocksdb_writebatch_iterate(
581
600
b->rep .Iterate (&handler);
582
601
}
583
602
603
+ const char * rocksdb_writebatch_data (rocksdb_writebatch_t * b, size_t * size) {
604
+ *size = b->rep .GetDataSize ();
605
+ return b->rep .Data ().c_str ();
606
+ }
607
+
584
608
rocksdb_options_t * rocksdb_options_create () {
585
609
return new rocksdb_options_t ;
586
610
}
@@ -983,7 +1007,6 @@ DB::GetSortedWalFiles
983
1007
DB::GetLatestSequenceNumber
984
1008
DB::GetUpdatesSince
985
1009
DB::DeleteFile
986
- DB::GetLiveFilesMetaData
987
1010
DB::GetDbIdentity
988
1011
DB::RunManualCompaction
989
1012
custom cache
@@ -1304,4 +1327,61 @@ void rocksdb_universal_compaction_options_destroy(
1304
1327
delete uco;
1305
1328
}
1306
1329
1330
+ void rocksdb_options_set_min_level_to_compress (rocksdb_options_t * opt, int level) {
1331
+ if (level >= 0 ) {
1332
+ assert (level <= opt->rep .num_levels );
1333
+ opt->rep .compression_per_level .resize (opt->rep .num_levels );
1334
+ for (int i = 0 ; i < level; i++) {
1335
+ opt->rep .compression_per_level [i] = rocksdb::kNoCompression ;
1336
+ }
1337
+ for (int i = level; i < opt->rep .num_levels ; i++) {
1338
+ opt->rep .compression_per_level [i] = opt->rep .compression ;
1339
+ }
1340
+ }
1341
+ }
1342
+
1343
+ int rocksdb_livefiles_count (
1344
+ const rocksdb_livefiles_t * lf) {
1345
+ return lf->rep .size ();
1346
+ }
1347
+
1348
+ const char * rocksdb_livefiles_name (
1349
+ const rocksdb_livefiles_t * lf,
1350
+ int index) {
1351
+ return lf->rep [index ].name .c_str ();
1352
+ }
1353
+
1354
+ int rocksdb_livefiles_level (
1355
+ const rocksdb_livefiles_t * lf,
1356
+ int index) {
1357
+ return lf->rep [index ].level ;
1358
+ }
1359
+
1360
+ size_t rocksdb_livefiles_size (
1361
+ const rocksdb_livefiles_t * lf,
1362
+ int index) {
1363
+ return lf->rep [index ].size ;
1364
+ }
1365
+
1366
+ const char * rocksdb_livefiles_smallestkey (
1367
+ const rocksdb_livefiles_t * lf,
1368
+ int index,
1369
+ size_t * size) {
1370
+ *size = lf->rep [index ].smallestkey .size ();
1371
+ return lf->rep [index ].smallestkey .data ();
1372
+ }
1373
+
1374
+ const char * rocksdb_livefiles_largestkey (
1375
+ const rocksdb_livefiles_t * lf,
1376
+ int index,
1377
+ size_t * size) {
1378
+ *size = lf->rep [index ].largestkey .size ();
1379
+ return lf->rep [index ].largestkey .data ();
1380
+ }
1381
+
1382
+ extern void rocksdb_livefiles_destroy (
1383
+ const rocksdb_livefiles_t * lf) {
1384
+ delete lf;
1385
+ }
1386
+
1307
1387
} // end extern "C"
0 commit comments