Skip to content

Commit 97b2037

Browse files
committed
Bump RocksDB to v11.0.4
1 parent 6c1ab1c commit 97b2037

File tree

7 files changed

+46
-20
lines changed

7 files changed

+46
-20
lines changed

Code/RocksDB.mm

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
#import "RocksDBError.h"
2929
#import "RocksDBSlice.h"
3030

31+
#include <memory>
32+
3133
#include <rocksdb/db.h>
3234
#include <rocksdb/slice.h>
3335
#include <rocksdb/options.h>
@@ -195,10 +197,11 @@ - (BOOL)isClosed {
195197
- (BOOL)openDatabaseReadOnly:(BOOL)readOnly error:(NSError**)error
196198
{
197199
rocksdb::Status status;
200+
std::unique_ptr<rocksdb::DB> db;
198201
if (readOnly) {
199-
status = rocksdb::DB::OpenForReadOnly(_options.options, _path.UTF8String, &_db);
202+
status = rocksdb::DB::OpenForReadOnly(_options.options, _path.UTF8String, &db);
200203
} else {
201-
status = rocksdb::DB::Open(_options.options, _path.UTF8String, &_db);
204+
status = rocksdb::DB::Open(_options.options, _path.UTF8String, &db);
202205
}
203206

204207
if (!status.ok()) {
@@ -208,6 +211,7 @@ - (BOOL)openDatabaseReadOnly:(BOOL)readOnly error:(NSError**)error
208211
[self close];
209212
return NO;
210213
}
214+
_db = db.release();
211215
_columnFamily = _db->DefaultColumnFamily();
212216
_closed = false;
213217

@@ -217,6 +221,7 @@ - (BOOL)openDatabaseReadOnly:(BOOL)readOnly error:(NSError**)error
217221
- (BOOL)openColumnFamilies:(RocksDBColumnFamilyDescriptor *)descriptor readOnly:(BOOL)readOnly error:(NSError**)error
218222
{
219223
rocksdb::Status status;
224+
std::unique_ptr<rocksdb::DB> db;
220225
std::vector<rocksdb::ColumnFamilyDescriptor> *columnFamilies = descriptor.columnFamilies;
221226
_columnFamilyHandles = new std::vector<rocksdb::ColumnFamilyHandle *>;
222227

@@ -225,13 +230,13 @@ - (BOOL)openColumnFamilies:(RocksDBColumnFamilyDescriptor *)descriptor readOnly:
225230
_path.UTF8String,
226231
*columnFamilies,
227232
_columnFamilyHandles,
228-
&_db);
233+
&db);
229234
} else {
230235
status = rocksdb::DB::Open(_options.options,
231236
_path.UTF8String,
232237
*columnFamilies,
233238
_columnFamilyHandles,
234-
&_db);
239+
&db);
235240
}
236241

237242

@@ -242,6 +247,7 @@ - (BOOL)openColumnFamilies:(RocksDBColumnFamilyDescriptor *)descriptor readOnly:
242247
[self close];
243248
return NO;
244249
}
250+
_db = db.release();
245251
_columnFamily = _db->DefaultColumnFamily();
246252
_closed = false;
247253

Code/RocksDBCallbackSliceTransform.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ class RocksDBCallbackSliceTransformImpl : public rocksdb::SliceTransform
1515
const char* name;
1616
TransformCallback transformCallback;
1717
InDomainCallback inDomainCallback;
18-
InRangeCallback inRangeCallback;
18+
SameResultWhenAppendedCallback sameResultWhenAppendedCallback;
1919

2020
public:
2121
RocksDBCallbackSliceTransformImpl(void* instance, const char* name,
2222
TransformCallback transform,
2323
InDomainCallback domain,
24-
InRangeCallback range):
25-
instance(instance), name(name), transformCallback(transform), inDomainCallback(domain), inRangeCallback(range) {}
24+
SameResultWhenAppendedCallback sameResultWhenAppended):
25+
instance(instance), name(name), transformCallback(transform), inDomainCallback(domain), sameResultWhenAppendedCallback(sameResultWhenAppended) {}
2626

2727
virtual const char* Name() const
2828
{
@@ -39,9 +39,9 @@ class RocksDBCallbackSliceTransformImpl : public rocksdb::SliceTransform
3939
return inDomainCallback(instance, src);
4040
}
4141

42-
virtual bool InRange(const rocksdb::Slice& dst) const
42+
virtual bool SameResultWhenAppended(const rocksdb::Slice& prefix) const
4343
{
44-
return inRangeCallback(instance, dst);
44+
return sameResultWhenAppendedCallback(instance, prefix);
4545
}
4646

4747
};
@@ -50,7 +50,7 @@ rocksdb::SliceTransform* RocksDBCallbackSliceTransform(void* instance,
5050
const char* name,
5151
TransformCallback transform,
5252
InDomainCallback domain,
53-
InRangeCallback range)
53+
SameResultWhenAppendedCallback sameResultWhenAppended)
5454
{
55-
return new RocksDBCallbackSliceTransformImpl(instance, name, transform, domain, range);
55+
return new RocksDBCallbackSliceTransformImpl(instance, name, transform, domain, sameResultWhenAppended);
5656
}

Code/RocksDBCallbackSliceTransform.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414

1515
typedef rocksdb::Slice (* TransformCallback)(void* instance, const rocksdb::Slice& src);
1616
typedef bool (* InDomainCallback)(void* instance, const rocksdb::Slice& src);
17-
typedef bool (* InRangeCallback)(void* instance, const rocksdb::Slice& dst);
17+
typedef bool (* SameResultWhenAppendedCallback)(void* instance, const rocksdb::Slice& prefix);
1818

1919
extern rocksdb::SliceTransform* RocksDBCallbackSliceTransform(void* instance,
2020
const char* name,
2121
TransformCallback transform,
2222
InDomainCallback domain,
23-
InRangeCallback range);
23+
SameResultWhenAppendedCallback sameResultWhenAppended);
2424

2525
#endif /* defined(__ObjectiveRocks__RocksDBCallbackSliceTransform__) */

Code/RocksDBPrefixExtractor.mm

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ - (instancetype)initWithName:(NSString *)name
6262
_prefixCandidateBlock = [prefixCandidateBlock copy];
6363
_validPrefixBlock = [validPrefixBlock copy];
6464
_sliceTransform = RocksDBCallbackSliceTransform((__bridge void *)self, _name.UTF8String,
65-
&trampolineTransform, &trampolineInDomain, &trampolineInRange);
65+
&trampolineTransform, &trampolineInDomain, &trampolineSameResultWhenAppended);
6666
}
6767
return self;
6868
}
@@ -108,6 +108,11 @@ bool trampolineInRange(void* instance, const rocksdb::Slice& dst)
108108
return [(__bridge id)instance isPrefixValid:dst];
109109
}
110110

111+
bool trampolineSameResultWhenAppended(void* instance, const rocksdb::Slice& prefix)
112+
{
113+
return [(__bridge id)instance isPrefixValid:prefix];
114+
}
115+
111116
- (BOOL)isPrefixValid:(const rocksdb::Slice &)prefixSlice
112117
{
113118
NSData *prefix = DataFromSlice(prefixSlice);

Code/RocksDBStatistics.mm

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,20 @@ @interface RocksDBStatisticsHistogram ()
3333
@implementation RocksDBStatistics
3434
@synthesize statistics = _statistics;
3535

36+
static rocksdb::Tickers RocksDBTickerToNativeTicker(RocksDBTicker ticker)
37+
{
38+
switch (ticker) {
39+
// RocksDB 11 inserted new tickers before these legacy ObjectiveRocks cases,
40+
// so raw enum forwarding no longer points at the intended counters.
41+
case RocksDBTickerBytesWritten:
42+
return rocksdb::BYTES_WRITTEN;
43+
case RocksDBTickerBytesRead:
44+
return rocksdb::BYTES_READ;
45+
default:
46+
return static_cast<rocksdb::Tickers>(ticker);
47+
}
48+
}
49+
3650
#pragma mark - Lifecycle
3751

3852
- (instancetype)init
@@ -57,7 +71,7 @@ - (void)dealloc
5771

5872
- (uint64_t)countForTicker:(RocksDBTicker)ticker
5973
{
60-
return _statistics->getTickerCount(ticker);
74+
return _statistics->getTickerCount(RocksDBTickerToNativeTicker(ticker));
6175
}
6276

6377
- (RocksDBStatisticsHistogram *)histogramDataForType:(RocksDBHistogram)ticker
@@ -72,7 +86,7 @@ - (RocksDBStatisticsHistogram *)histogramDataForType:(RocksDBHistogram)ticker
7286
histogram.ticker = [NSString stringWithCString:tickerName.c_str() encoding:NSUTF8StringEncoding];
7387
histogram.median = data->median;
7488
histogram.percentile95 = data->percentile95;
75-
histogram.percentile95 = data->percentile99;
89+
histogram.percentile99 = data->percentile99;
7690
histogram.average = data->average;
7791
histogram.standardDeviation = data->standard_deviation;
7892

Package.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import PackageDescription
55

66
let package = Package(
77
name: "ObjectiveRocks",
8-
platforms: [.iOS(.v15), .macCatalyst(.v15), .macOS(.v12)],
8+
platforms: [.iOS(.v15), .macCatalyst(.v15)],
99
products: [
1010
// Products define the executables and libraries a package produces, and make them visible to other packages.
1111
.library(
@@ -32,6 +32,7 @@ let package = Package(
3232
dependencies: ["ObjectiveRocks"],
3333
path: "Tests",
3434
exclude: [
35+
"Info.plist",
3536
"RocksDBIndexedWriteBatchTests.m",
3637
"RocksDBReadOnlyTests.m",
3738
"RocksDBBackupTests.mm",
@@ -52,8 +53,8 @@ let package = Package(
5253
),
5354
.binaryTarget(
5455
name: "RocksDB",
55-
url: "https://github.com/GoodNotes/rocksdb/releases/download/v9.10.0/RocksDB.xcframework.zip",
56-
checksum: "48ad2e911d8b48e2e69abce9d506e99bdaf05f4072eacb42f2a48d33f8dc1f70"
56+
url: "https://github.com/GoodNotes/rocksdb/releases/download/v11.0.4/RocksDB.xcframework.zip?ts=20260414-1329",
57+
checksum: "1c4ffb565b8d998c79ea068147d5e6697633daa247c19d561bfca4f9d05d643f"
5758
)
5859
],
5960
cxxLanguageStandard: .cxx20

Tests/RockDBTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import ObjectiveRocks
1212

1313
// MARK:- Extension
1414

15-
extension Data: ExpressibleByStringLiteral {
15+
extension Data: @retroactive ExpressibleByStringLiteral {
1616
public init(stringLiteral value: String) {
1717
self = value.data(using: .utf8)!
1818
}

0 commit comments

Comments
 (0)