@nxtedition/rocksdb 8.0.5 → 8.1.0
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 +65 -0
- package/index.js +17 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
package/binding.cc
CHANGED
|
@@ -636,6 +636,70 @@ napi_status InitOptions(napi_env env, T& columnOptions, const U& options) {
|
|
|
636
636
|
return napi_ok;
|
|
637
637
|
}
|
|
638
638
|
|
|
639
|
+
NAPI_METHOD(db_get_merge_operands) {
|
|
640
|
+
NAPI_ARGV(4);
|
|
641
|
+
|
|
642
|
+
Database* database;
|
|
643
|
+
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
|
|
644
|
+
|
|
645
|
+
std::string key;
|
|
646
|
+
NAPI_STATUS_THROWS(GetValue(env, argv[1], key));
|
|
647
|
+
|
|
648
|
+
const auto options = argv[2];
|
|
649
|
+
|
|
650
|
+
Encoding valueEncoding = Encoding::String;
|
|
651
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "valueEncoding", valueEncoding));
|
|
652
|
+
|
|
653
|
+
rocksdb::ColumnFamilyHandle* column = database->db->DefaultColumnFamily();
|
|
654
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "column", column));
|
|
655
|
+
|
|
656
|
+
auto callback = argv[3];
|
|
657
|
+
|
|
658
|
+
runAsync<std::vector<rocksdb::PinnableSlice>>(
|
|
659
|
+
"leveldown.get.mergeOperands", env, callback,
|
|
660
|
+
[=, key = std::move(key)](auto& values) {
|
|
661
|
+
rocksdb::ReadOptions readOptions;
|
|
662
|
+
|
|
663
|
+
values.resize(16); // TODO (fix): Make option
|
|
664
|
+
|
|
665
|
+
rocksdb::GetMergeOperandsOptions mergeOperandsOptions;
|
|
666
|
+
mergeOperandsOptions.expected_max_number_of_operands = values.size();
|
|
667
|
+
|
|
668
|
+
int size = 0;
|
|
669
|
+
const auto status = database->db->GetMergeOperands(
|
|
670
|
+
readOptions,
|
|
671
|
+
column,
|
|
672
|
+
key,
|
|
673
|
+
values.data(),
|
|
674
|
+
&mergeOperandsOptions,
|
|
675
|
+
&size
|
|
676
|
+
);
|
|
677
|
+
|
|
678
|
+
values.resize(size);
|
|
679
|
+
|
|
680
|
+
return status;
|
|
681
|
+
},
|
|
682
|
+
[=](auto& values, auto env, auto& argv) {
|
|
683
|
+
argv.resize(2);
|
|
684
|
+
|
|
685
|
+
NAPI_STATUS_RETURN(napi_create_array_with_length(env, values.size(), &argv[1]));
|
|
686
|
+
|
|
687
|
+
for (size_t idx = 0; idx < values.size(); idx++) {
|
|
688
|
+
napi_value element;
|
|
689
|
+
if (values[idx].GetSelf()) {
|
|
690
|
+
NAPI_STATUS_RETURN(Convert(env, &values[idx], valueEncoding, element));
|
|
691
|
+
} else {
|
|
692
|
+
NAPI_STATUS_RETURN(napi_get_undefined(env, &element));
|
|
693
|
+
}
|
|
694
|
+
NAPI_STATUS_RETURN(napi_set_element(env, argv[1], static_cast<uint32_t>(idx), element));
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
return napi_ok;
|
|
698
|
+
});
|
|
699
|
+
|
|
700
|
+
return 0;
|
|
701
|
+
}
|
|
702
|
+
|
|
639
703
|
NAPI_METHOD(db_get_identity) {
|
|
640
704
|
NAPI_ARGV(1);
|
|
641
705
|
|
|
@@ -1581,6 +1645,7 @@ NAPI_INIT() {
|
|
|
1581
1645
|
NAPI_EXPORT_FUNCTION(db_get_latest_sequence);
|
|
1582
1646
|
NAPI_EXPORT_FUNCTION(db_get_sorted_wal_files);
|
|
1583
1647
|
NAPI_EXPORT_FUNCTION(db_flush_wal);
|
|
1648
|
+
NAPI_EXPORT_FUNCTION(db_get_merge_operands);
|
|
1584
1649
|
|
|
1585
1650
|
NAPI_EXPORT_FUNCTION(iterator_init);
|
|
1586
1651
|
NAPI_EXPORT_FUNCTION(iterator_seek);
|
package/index.js
CHANGED
|
@@ -168,6 +168,23 @@ class RocksLevel extends AbstractLevel {
|
|
|
168
168
|
return callback[kPromise]
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
+
_getMergeOperands(key, options, callback) {
|
|
172
|
+
callback = fromCallback(callback, kPromise)
|
|
173
|
+
|
|
174
|
+
try {
|
|
175
|
+
this[kRef]()
|
|
176
|
+
binding.db_get_merge_operands(this[kContext], key, options ?? EMPTY, (err, val) => {
|
|
177
|
+
callback(err, val)
|
|
178
|
+
this[kUnref]()
|
|
179
|
+
})
|
|
180
|
+
} catch (err) {
|
|
181
|
+
process.nextTick(callback, err)
|
|
182
|
+
this[kUnref]()
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return callback[kPromise]
|
|
186
|
+
}
|
|
187
|
+
|
|
171
188
|
_del (key, options, callback) {
|
|
172
189
|
callback = fromCallback(callback, kPromise)
|
|
173
190
|
|
package/package.json
CHANGED
|
Binary file
|