Skip to content
This repository was archived by the owner on Jan 21, 2026. It is now read-only.

Commit 70c603b

Browse files
committed
Add rocksdb_iter_key_fast & rocksdb_iter_value_fast
1 parent 7182170 commit 70c603b

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

db/c.cc

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
// Use of this source code is governed by a BSD-style license that can be
88
// found in the LICENSE file. See the AUTHORS file for names of contributors.
99

10+
#define ROCKSDB_C_API_IMPLEMENTATION
11+
1012
#include "rocksdb/c.h"
1113

1214
#include <cstdlib>
@@ -136,6 +138,7 @@ using std::unordered_set;
136138
using std::vector;
137139

138140
extern "C" {
141+
using rocksdb_slice_t = Slice;
139142

140143
struct rocksdb_t {
141144
DB* rep;
@@ -1954,6 +1957,19 @@ void rocksdb_iter_get_error(const rocksdb_iterator_t* iter, char** errptr) {
19541957
SaveError(errptr, iter->rep->status());
19551958
}
19561959

1960+
ROCKSDB_LIBRARY_API
1961+
rocksdb_slice_t rocksdb_iter_key_fast(const rocksdb_iterator_t* iter) {
1962+
return iter->rep->key();
1963+
}
1964+
ROCKSDB_LIBRARY_API
1965+
rocksdb_slice_t rocksdb_iter_value_fast(const rocksdb_iterator_t* iter) {
1966+
return iter->rep->value();
1967+
}
1968+
ROCKSDB_LIBRARY_API
1969+
rocksdb_slice_t rocksdb_iter_timestamp_fast(const rocksdb_iterator_t* iter) {
1970+
return iter->rep->timestamp();
1971+
}
1972+
19571973
rocksdb_writebatch_t* rocksdb_writebatch_create() {
19581974
return new rocksdb_writebatch_t;
19591975
}

include/rocksdb/c.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,14 @@ typedef struct rocksdb_statistics_histogram_data_t
142142
typedef struct rocksdb_wait_for_compact_options_t
143143
rocksdb_wait_for_compact_options_t;
144144

145+
#if !defined(ROCKSDB_C_API_IMPLEMENTATION)
146+
struct rocksdb_slice_t {
147+
const char* data;
148+
size_t size;
149+
};
150+
typedef struct rocksdb_slice_t rocksdb_slice_t;
151+
#endif
152+
145153
/* DB operations */
146154

147155
extern ROCKSDB_LIBRARY_API rocksdb_t* rocksdb_open(
@@ -728,6 +736,15 @@ extern ROCKSDB_LIBRARY_API const char* rocksdb_iter_timestamp(
728736
extern ROCKSDB_LIBRARY_API void rocksdb_iter_get_error(
729737
const rocksdb_iterator_t*, char** errptr);
730738

739+
#if !defined(ROCKSDB_C_API_IMPLEMENTATION)
740+
extern ROCKSDB_LIBRARY_API rocksdb_slice_t rocksdb_iter_key_fast(
741+
const rocksdb_iterator_t*);
742+
extern ROCKSDB_LIBRARY_API rocksdb_slice_t rocksdb_iter_value_fast(
743+
const rocksdb_iterator_t*);
744+
extern ROCKSDB_LIBRARY_API rocksdb_slice_t rocksdb_iter_timestamp_fast(
745+
const rocksdb_iterator_t*);
746+
#endif
747+
731748
extern ROCKSDB_LIBRARY_API void rocksdb_wal_iter_next(
732749
rocksdb_wal_iterator_t* iter);
733750
extern ROCKSDB_LIBRARY_API unsigned char rocksdb_wal_iter_valid(

0 commit comments

Comments
 (0)