@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
- rocksdb::Status Read (const rocksdb::WriteBatch& batch) {
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
- ROCKS_STATUS_RETURN(batch.Iterate(this));
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 = Encoding::String;
477
+ Encoding keyEncoding;
486
478
  NAPI_STATUS_THROWS(GetProperty(env, options, "keyEncoding", keyEncoding));
487
479
 
488
- Encoding valueEncoding = Encoding::String;
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
- NAPI_STATUS_RETURN(napi_get_undefined(env, &key));
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 (n & 0xf == 0 && deadline > 0 && database_->db->GetEnv()->NowMicros() > deadline) {
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 = 0;
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
- class Updates : public BatchIterator, public Closable {
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
- return updates->nextv(env, -1, -1, argv[1]);
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=znver2", '-mtune=znver3'],
20
- "cflags_cc": ["-flto", '-march=znver2', '-mtune=znver3'],
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"],
@@ -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
- "cflags_cc": [
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=znver2", "-mtune=znver3"],
75
+ "cflags": ["-std=c++20", "-march=znver1"],
76
76
  "cflags!": ["-fno-rtti"],
77
77
  "cflags_cc!": ["-fno-rtti"],
78
- "cflags_cc+": ["-frtti", '-march=znver2', "-mtune=znver3"],
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
- "cflags_cc": ["-march=znver1", "-flto", "-fcoroutines"],
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.updatesAsync(options)
274
+ yield * this.updatesSync(options)
275
275
  }
276
276
 
277
- async * updatesAsync (options) {
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 = await new Promise((resolve, reject) => {
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxtedition/rocksdb",
3
- "version": "13.5.7",
3
+ "version": "13.5.8",
4
4
  "description": "A low-level Node.js RocksDB binding",
5
5
  "license": "MIT",
6
6
  "main": "index.js",