@nxtedition/rocksdb 13.5.7 → 13.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/binding.cc
CHANGED
|
@@ -127,14 +127,11 @@ struct BatchIterator : public rocksdb::WriteBatch::Handler {
|
|
|
127
127
|
keyEncoding_(keyEncoding),
|
|
128
128
|
valueEncoding_(valueEncoding) {}
|
|
129
129
|
|
|
130
|
-
|
|
131
|
-
cache_.clear();
|
|
130
|
+
napi_status Iterate(napi_env env, const rocksdb::WriteBatch& batch, napi_value* result) {
|
|
132
131
|
cache_.reserve(batch.Count());
|
|
133
132
|
|
|
134
|
-
|
|
135
|
-
}
|
|
133
|
+
ROCKS_STATUS_RETURN_NAPI(batch.Iterate(this));
|
|
136
134
|
|
|
137
|
-
napi_status Write(napi_env env, napi_value* result) {
|
|
138
135
|
napi_value putStr;
|
|
139
136
|
NAPI_STATUS_RETURN(napi_create_string_utf8(env, "put", NAPI_AUTO_LENGTH, &putStr));
|
|
140
137
|
|
|
@@ -185,11 +182,6 @@ struct BatchIterator : public rocksdb::WriteBatch::Handler {
|
|
|
185
182
|
return napi_ok;
|
|
186
183
|
}
|
|
187
184
|
|
|
188
|
-
napi_status Iterate(napi_env env, const rocksdb::WriteBatch& batch, napi_value* result) {
|
|
189
|
-
ROCKS_STATUS_RETURN_NAPI(Read(batch));
|
|
190
|
-
return Write(env, result);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
185
|
rocksdb::Status PutCF(uint32_t column_family_id, const rocksdb::Slice& key, const rocksdb::Slice& value) override {
|
|
194
186
|
if (column_ && column_->GetID() != column_family_id) {
|
|
195
187
|
return rocksdb::Status::OK();
|
|
@@ -482,10 +474,10 @@ class Iterator final : public BaseIterator {
|
|
|
482
474
|
rocksdb::ColumnFamilyHandle* column = database->db->DefaultColumnFamily();
|
|
483
475
|
NAPI_STATUS_THROWS(GetProperty(env, options, "column", column));
|
|
484
476
|
|
|
485
|
-
Encoding keyEncoding
|
|
477
|
+
Encoding keyEncoding;
|
|
486
478
|
NAPI_STATUS_THROWS(GetProperty(env, options, "keyEncoding", keyEncoding));
|
|
487
479
|
|
|
488
|
-
Encoding valueEncoding
|
|
480
|
+
Encoding valueEncoding;
|
|
489
481
|
NAPI_STATUS_THROWS(GetProperty(env, options, "valueEncoding", valueEncoding));
|
|
490
482
|
|
|
491
483
|
rocksdb::ReadOptions readOptions;
|
|
@@ -577,6 +569,8 @@ class Iterator final : public BaseIterator {
|
|
|
577
569
|
rocksdb::PinnableSlice v;
|
|
578
570
|
v.PinSelf(CurrentValue());
|
|
579
571
|
state.values.push_back(std::move(v));
|
|
572
|
+
} else {
|
|
573
|
+
assert(false);
|
|
580
574
|
}
|
|
581
575
|
state.count += 1;
|
|
582
576
|
|
|
@@ -615,8 +609,7 @@ class Iterator final : public BaseIterator {
|
|
|
615
609
|
NAPI_STATUS_RETURN(napi_get_undefined(env, &key));
|
|
616
610
|
NAPI_STATUS_RETURN(Convert(env, std::move(state.values[n]), valueEncoding_, val));
|
|
617
611
|
} else {
|
|
618
|
-
|
|
619
|
-
NAPI_STATUS_RETURN(napi_get_undefined(env, &val));
|
|
612
|
+
assert(false);
|
|
620
613
|
}
|
|
621
614
|
|
|
622
615
|
NAPI_STATUS_RETURN(napi_set_element(env, rows, n * 2 + 0, key));
|
|
@@ -688,7 +681,7 @@ class Iterator final : public BaseIterator {
|
|
|
688
681
|
break;
|
|
689
682
|
}
|
|
690
683
|
|
|
691
|
-
if (
|
|
684
|
+
if (deadline > 0 && database_->db->GetEnv()->NowMicros() > deadline) {
|
|
692
685
|
break;
|
|
693
686
|
}
|
|
694
687
|
}
|
|
@@ -736,7 +729,7 @@ NAPI_METHOD(db_init) {
|
|
|
736
729
|
napi_valuetype type;
|
|
737
730
|
NAPI_STATUS_THROWS(napi_typeof(env, argv[0], &type));
|
|
738
731
|
|
|
739
|
-
napi_value result
|
|
732
|
+
napi_value result;
|
|
740
733
|
|
|
741
734
|
if (type == napi_string) {
|
|
742
735
|
std::string location;
|
|
@@ -1877,8 +1870,7 @@ NAPI_METHOD(batch_iterate) {
|
|
|
1877
1870
|
return result;
|
|
1878
1871
|
}
|
|
1879
1872
|
|
|
1880
|
-
|
|
1881
|
-
public:
|
|
1873
|
+
struct Updates : public BatchIterator, public Closable {
|
|
1882
1874
|
Updates(Database* database,
|
|
1883
1875
|
const int64_t since,
|
|
1884
1876
|
const bool keys,
|
|
@@ -1899,54 +1891,6 @@ public:
|
|
|
1899
1891
|
}
|
|
1900
1892
|
}
|
|
1901
1893
|
|
|
1902
|
-
napi_value nextv(napi_env env, uint32_t count, uint32_t timeout, napi_value callback) {
|
|
1903
|
-
struct State {
|
|
1904
|
-
uint64_t sequence = 0;
|
|
1905
|
-
bool finished = false;
|
|
1906
|
-
};
|
|
1907
|
-
runAsync<State>("updates.next", env, callback,
|
|
1908
|
-
[=](auto& state) {
|
|
1909
|
-
if (!iterator_) {
|
|
1910
|
-
rocksdb::TransactionLogIterator::ReadOptions options;
|
|
1911
|
-
ROCKS_STATUS_RETURN(database_->db->GetUpdatesSince(start_, &iterator_, options));
|
|
1912
|
-
}
|
|
1913
|
-
|
|
1914
|
-
ROCKS_STATUS_RETURN(iterator_->status());
|
|
1915
|
-
|
|
1916
|
-
if (!iterator_->Valid()) {
|
|
1917
|
-
state.finished = true;
|
|
1918
|
-
return rocksdb::Status::OK();
|
|
1919
|
-
}
|
|
1920
|
-
|
|
1921
|
-
auto batchResult = iterator_->GetBatch();
|
|
1922
|
-
Read(*batchResult.writeBatchPtr);
|
|
1923
|
-
state.sequence = batchResult.sequence;
|
|
1924
|
-
|
|
1925
|
-
iterator_->Next();
|
|
1926
|
-
|
|
1927
|
-
return rocksdb::Status::OK();
|
|
1928
|
-
},
|
|
1929
|
-
[=](auto& state, auto env, auto& argv) {
|
|
1930
|
-
argv.resize(2);
|
|
1931
|
-
|
|
1932
|
-
if (!state.finished) {
|
|
1933
|
-
napi_value rows;
|
|
1934
|
-
napi_value sequence;
|
|
1935
|
-
|
|
1936
|
-
NAPI_STATUS_RETURN(Write(env, &rows));
|
|
1937
|
-
NAPI_STATUS_RETURN(napi_create_int64(env, state.sequence, &sequence));
|
|
1938
|
-
|
|
1939
|
-
NAPI_STATUS_RETURN(napi_create_object(env, &argv[1]));
|
|
1940
|
-
NAPI_STATUS_RETURN(napi_set_named_property(env, argv[1], "rows", rows));
|
|
1941
|
-
NAPI_STATUS_RETURN(napi_set_named_property(env, argv[1], "seq", sequence));
|
|
1942
|
-
} else {
|
|
1943
|
-
NAPI_STATUS_RETURN(napi_get_null(env, &argv[1]));
|
|
1944
|
-
}
|
|
1945
|
-
|
|
1946
|
-
return napi_ok;
|
|
1947
|
-
});
|
|
1948
|
-
}
|
|
1949
|
-
|
|
1950
1894
|
rocksdb::Status Close() override {
|
|
1951
1895
|
if (iterator_) {
|
|
1952
1896
|
iterator_.reset();
|
|
@@ -1955,10 +1899,11 @@ public:
|
|
|
1955
1899
|
return rocksdb::Status::OK();
|
|
1956
1900
|
}
|
|
1957
1901
|
|
|
1958
|
-
private:
|
|
1959
1902
|
Database* database_;
|
|
1960
1903
|
int64_t start_;
|
|
1961
1904
|
std::unique_ptr<rocksdb::TransactionLogIterator> iterator_;
|
|
1905
|
+
|
|
1906
|
+
private:
|
|
1962
1907
|
napi_ref ref_ = nullptr;
|
|
1963
1908
|
};
|
|
1964
1909
|
|
|
@@ -2013,7 +1958,33 @@ NAPI_METHOD(updates_next) {
|
|
|
2013
1958
|
Updates* updates;
|
|
2014
1959
|
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&updates)));
|
|
2015
1960
|
|
|
2016
|
-
|
|
1961
|
+
if (!updates->iterator_) {
|
|
1962
|
+
rocksdb::TransactionLogIterator::ReadOptions options;
|
|
1963
|
+
ROCKS_STATUS_THROWS_NAPI(updates->database_->db->GetUpdatesSince(updates->start_, &updates->iterator_, options));
|
|
1964
|
+
}
|
|
1965
|
+
|
|
1966
|
+
ROCKS_STATUS_THROWS_NAPI(updates->iterator_->status());
|
|
1967
|
+
|
|
1968
|
+
if (!updates->iterator_->Valid()) {
|
|
1969
|
+
return 0;
|
|
1970
|
+
}
|
|
1971
|
+
|
|
1972
|
+
auto batchResult = updates->iterator_->GetBatch();
|
|
1973
|
+
|
|
1974
|
+
napi_value rows;
|
|
1975
|
+
napi_value sequence;
|
|
1976
|
+
|
|
1977
|
+
NAPI_STATUS_THROWS(updates->Iterate(env, *batchResult.writeBatchPtr, &rows));
|
|
1978
|
+
NAPI_STATUS_THROWS(napi_create_int64(env, batchResult.sequence, &sequence));
|
|
1979
|
+
|
|
1980
|
+
ROCKS_STATUS_THROWS_NAPI(updates->iterator_->status());
|
|
1981
|
+
updates->iterator_->Next();
|
|
1982
|
+
|
|
1983
|
+
napi_value ret;
|
|
1984
|
+
NAPI_STATUS_THROWS(napi_create_object(env, &ret));
|
|
1985
|
+
NAPI_STATUS_THROWS(napi_set_named_property(env, ret, "rows", rows));
|
|
1986
|
+
NAPI_STATUS_THROWS(napi_set_named_property(env, ret, "seq", sequence));
|
|
1987
|
+
return ret;
|
|
2017
1988
|
} catch (const std::exception& e) {
|
|
2018
1989
|
napi_throw_error(env, nullptr, e.what());
|
|
2019
1990
|
return nullptr;
|
package/binding.gyp
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"/usr/lib/x86_64-linux-gnu/include",
|
|
17
17
|
"/usr/lib/include",
|
|
18
18
|
],
|
|
19
|
-
"cflags": ["-march=
|
|
20
|
-
"
|
|
19
|
+
"cflags": ["-march=znver1"],
|
|
20
|
+
"ccflags": ["-flto", '-march=znver1'],
|
|
21
21
|
"cflags!": ["-fno-exceptions"],
|
|
22
22
|
"cflags_cc!": ["-fno-exceptions"],
|
|
23
23
|
"ldflags": ["-flto", "-fuse-linker-plugin"],
|
package/deps/rocksdb/rocksdb.gyp
CHANGED
|
@@ -67,15 +67,15 @@
|
|
|
67
67
|
"rocksdb/env/io_posix.cc"
|
|
68
68
|
],
|
|
69
69
|
"defines": ["ROCKSDB_PLATFORM_POSIX=1", "ROCKSDB_LIB_IO_POSIX=1"],
|
|
70
|
-
"
|
|
70
|
+
"ccflags": [
|
|
71
71
|
"-fno-omit-frame-pointer",
|
|
72
72
|
"-momit-leaf-frame-pointer",
|
|
73
73
|
"-fno-builtin-memcmp",
|
|
74
74
|
],
|
|
75
|
-
"cflags": ["-std=c++20", "-march=
|
|
75
|
+
"cflags": ["-std=c++20", "-march=znver1"],
|
|
76
76
|
"cflags!": ["-fno-rtti"],
|
|
77
77
|
"cflags_cc!": ["-fno-rtti"],
|
|
78
|
-
"cflags_cc+": ["-frtti", '-march=
|
|
78
|
+
"cflags_cc+": ["-frtti", '-march=znver1']
|
|
79
79
|
}
|
|
80
80
|
],
|
|
81
81
|
[
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
"/usr/lib/include",
|
|
117
117
|
],
|
|
118
118
|
"cflags": ["-march=znver1"],
|
|
119
|
-
"
|
|
119
|
+
"ccflags": ["-march=znver1", "-flto", "-fcoroutines"],
|
|
120
120
|
"cflags!": ["-fno-exceptions"],
|
|
121
121
|
"cflags_cc!": ["-fno-exceptions"],
|
|
122
122
|
"ldflags": ["-flto", "-fuse-linker-plugin"],
|
package/index.js
CHANGED
|
@@ -271,10 +271,10 @@ class RocksLevel extends AbstractLevel {
|
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
async * updates (options) {
|
|
274
|
-
yield * this.
|
|
274
|
+
yield * this.updatesSync(options)
|
|
275
275
|
}
|
|
276
276
|
|
|
277
|
-
|
|
277
|
+
* updatesSync (options) {
|
|
278
278
|
if (this.status !== 'open') {
|
|
279
279
|
throw new ModuleError('Database is not open', {
|
|
280
280
|
code: 'LEVEL_DATABASE_NOT_OPEN'
|
|
@@ -284,11 +284,7 @@ class RocksLevel extends AbstractLevel {
|
|
|
284
284
|
const handle = binding.updates_init(this[kContext], options)
|
|
285
285
|
try {
|
|
286
286
|
while (true) {
|
|
287
|
-
const value =
|
|
288
|
-
binding.updates_next(
|
|
289
|
-
handle,
|
|
290
|
-
(err, val) => err ? reject(err) : resolve(val))
|
|
291
|
-
})
|
|
287
|
+
const value = binding.updates_next(handle)
|
|
292
288
|
if (!value) {
|
|
293
289
|
break
|
|
294
290
|
}
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|