From f5ef36a29a8bb3116d885fdc215124ad5301b437 Mon Sep 17 00:00:00 2001 From: sg20180546 Date: Sat, 16 Jul 2022 19:35:46 -0700 Subject: [PATCH] add sstfilewriter_delete_range (#10314) Summary: I add C API db/c.cc rocksdb_sstfilewriter_delete_range and test it , PASS. can you review it ? ajkr Pull Request resolved: https://github.com/facebook/rocksdb/pull/10314 Reviewed By: riversand963 Differential Revision: D37657236 Pulled By: ajkr fbshipit-source-id: c3b758daa36fbd9133210b011716914dff311278 --- db/c.cc | 9 +++++++++ db/c_test.c | 15 +++++++++++++++ include/rocksdb/c.h | 4 +++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/db/c.cc b/db/c.cc index a820159c3..de5744ee4 100644 --- a/db/c.cc +++ b/db/c.cc @@ -4899,6 +4899,15 @@ void rocksdb_sstfilewriter_delete_with_ts(rocksdb_sstfilewriter_t* writer, SaveError(errptr, writer->rep->Delete(Slice(key, keylen), Slice(ts, tslen))); } +void rocksdb_sstfilewriter_delete_range(rocksdb_sstfilewriter_t* writer, + const char* begin_key, + size_t begin_keylen, + const char* end_key, size_t end_keylen, + char** errptr) { + SaveError(errptr, writer->rep->DeleteRange(Slice(begin_key, begin_keylen), + Slice(end_key, end_keylen))); +} + void rocksdb_sstfilewriter_finish(rocksdb_sstfilewriter_t* writer, char** errptr) { SaveError(errptr, writer->rep->Finish(nullptr)); diff --git a/db/c_test.c b/db/c_test.c index e28c597f5..343ce3cf3 100644 --- a/db/c_test.c +++ b/db/c_test.c @@ -905,6 +905,21 @@ int main(int argc, char** argv) { CheckGet(db, roptions, "sstk22", "v5"); CheckGet(db, roptions, "sstk3", "v6"); + rocksdb_sstfilewriter_open(writer, sstfilename, &err); + CheckNoError(err); + rocksdb_sstfilewriter_put(writer, "abc1", 4, "v7", 2, &err); + CheckNoError(err); + rocksdb_sstfilewriter_put(writer, "abc2", 4, "v8", 2, &err); + CheckNoError(err); + rocksdb_sstfilewriter_put(writer, "abc3", 4, "v9", 2, &err); + CheckNoError(err); + rocksdb_sstfilewriter_put(writer, "abc4", 4, "v10", 3, &err); + CheckNoError(err); + rocksdb_sstfilewriter_delete_range(writer, "abc1", 4, "abc4", 4, &err); + CheckNoError(err); + rocksdb_sstfilewriter_finish(writer, &err); + CheckNoError(err); + rocksdb_ingestexternalfileoptions_destroy(ing_opt); rocksdb_sstfilewriter_destroy(writer); rocksdb_options_destroy(io_options); diff --git a/include/rocksdb/c.h b/include/rocksdb/c.h index a1ce50c5c..3c42f904e 100644 --- a/include/rocksdb/c.h +++ b/include/rocksdb/c.h @@ -2061,13 +2061,15 @@ extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_delete( extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_delete_with_ts( rocksdb_sstfilewriter_t* writer, const char* key, size_t keylen, const char* ts, size_t tslen, char** errptr); +extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_delete_range( + rocksdb_sstfilewriter_t* writer, const char* begin_key, size_t begin_keylen, + const char* end_key, size_t end_keylen, char** errptr); extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_finish( rocksdb_sstfilewriter_t* writer, char** errptr); extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_file_size( rocksdb_sstfilewriter_t* writer, uint64_t* file_size); extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_destroy( rocksdb_sstfilewriter_t* writer); - extern ROCKSDB_LIBRARY_API rocksdb_ingestexternalfileoptions_t* rocksdb_ingestexternalfileoptions_create(void); extern ROCKSDB_LIBRARY_API void