diff --git a/db/c.cc b/db/c.cc index 73f6857bba0dd59aa23dc595dc0feffba87bebf9..a1f642d4e7003f7aff2196f379c2d30c36bdae45 100644 --- a/db/c.cc +++ b/db/c.cc @@ -2256,6 +2256,11 @@ void rocksdb_readoptions_set_pin_data(rocksdb_readoptions_t* opt, opt->rep.pin_data = v; } +void rocksdb_readoptions_set_total_order_seek(rocksdb_readoptions_t* opt, + unsigned char v) { + opt->rep.total_order_seek = v; +} + rocksdb_writeoptions_t* rocksdb_writeoptions_create() { return new rocksdb_writeoptions_t; } diff --git a/db/c_test.c b/db/c_test.c index c8d624593c326900ac2ba2e883c861e903f68d08..e0bf9e112b09407cec1360d84bb37d4ec8d7058e 100644 --- a/db/c_test.c +++ b/db/c_test.c @@ -989,6 +989,19 @@ int main(int argc, char** argv) { CheckNoError(err); rocksdb_iter_destroy(iter); + rocksdb_readoptions_set_total_order_seek(roptions, 1); + iter = rocksdb_create_iterator(db, roptions); + CheckCondition(!rocksdb_iter_valid(iter)); + + rocksdb_iter_seek(iter, "ba", 2); + rocksdb_iter_get_error(iter, &err); + CheckNoError(err); + CheckCondition(rocksdb_iter_valid(iter)); + CheckIter(iter, "bar1", "bar"); + + rocksdb_iter_destroy(iter); + rocksdb_readoptions_set_total_order_seek(roptions, 0); + rocksdb_close(db); rocksdb_destroy_db(options, dbname, &err); } diff --git a/include/rocksdb/c.h b/include/rocksdb/c.h index 5452fcb42cea2b7b6fc077041294cbe93aa3026e..ae2496d0275ee915f0f36fb6f090532568ee8736 100644 --- a/include/rocksdb/c.h +++ b/include/rocksdb/c.h @@ -879,6 +879,8 @@ extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_readahead_size( rocksdb_readoptions_t*, size_t); extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_pin_data( rocksdb_readoptions_t*, unsigned char); +extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_total_order_seek( + rocksdb_readoptions_t*, unsigned char); /* Write options */