@nxtedition/rocksdb 10.2.3 → 10.3.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 +2 -7
- package/index.js +18 -9
- package/package.json +1 -1
- package/util.js +2 -2
package/binding.cc
CHANGED
|
@@ -1327,7 +1327,6 @@ NAPI_METHOD(iterator_nextv) {
|
|
|
1327
1327
|
}
|
|
1328
1328
|
};
|
|
1329
1329
|
|
|
1330
|
-
auto status = rocksdb::Status::OK();
|
|
1331
1330
|
while (true) {
|
|
1332
1331
|
if (!iterator->first_) {
|
|
1333
1332
|
iterator->Next();
|
|
@@ -1336,9 +1335,8 @@ NAPI_METHOD(iterator_nextv) {
|
|
|
1336
1335
|
}
|
|
1337
1336
|
|
|
1338
1337
|
if (!iterator->Valid() || !iterator->Increment()) {
|
|
1339
|
-
status = iterator->Status();
|
|
1340
1338
|
state.finished = true;
|
|
1341
|
-
|
|
1339
|
+
return iterator->Status();
|
|
1342
1340
|
}
|
|
1343
1341
|
|
|
1344
1342
|
if (iterator->keys_ && iterator->values_) {
|
|
@@ -1353,13 +1351,10 @@ NAPI_METHOD(iterator_nextv) {
|
|
|
1353
1351
|
}
|
|
1354
1352
|
|
|
1355
1353
|
if (bytesRead > iterator->highWaterMarkBytes_ || state.sizes.size() / 2 >= count) {
|
|
1356
|
-
status = rocksdb::Status::OK();
|
|
1357
1354
|
state.finished = false;
|
|
1358
|
-
|
|
1355
|
+
return rocksdb::Status::OK();
|
|
1359
1356
|
}
|
|
1360
1357
|
}
|
|
1361
|
-
|
|
1362
|
-
return status;
|
|
1363
1358
|
},
|
|
1364
1359
|
[=](auto& state, auto env, auto& argv) {
|
|
1365
1360
|
argv.resize(4);
|
package/index.js
CHANGED
|
@@ -41,6 +41,12 @@ class RocksLevel extends AbstractLevel {
|
|
|
41
41
|
this[kPendingClose] = null
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
static async create(...args) {
|
|
45
|
+
const db = new this(...args)
|
|
46
|
+
await db.open()
|
|
47
|
+
return db
|
|
48
|
+
}
|
|
49
|
+
|
|
44
50
|
get sequence () {
|
|
45
51
|
return binding.db_get_latest_sequence(this[kContext])
|
|
46
52
|
}
|
|
@@ -158,19 +164,22 @@ class RocksLevel extends AbstractLevel {
|
|
|
158
164
|
} else {
|
|
159
165
|
data ??= Buffer.alloc(0)
|
|
160
166
|
sizes ??= Buffer.alloc(0)
|
|
161
|
-
|
|
167
|
+
|
|
168
|
+
const rows = []
|
|
162
169
|
let offset = 0
|
|
163
170
|
const sizes32 = new Int32Array(sizes.buffer, sizes.byteOffset, sizes.byteLength / 4)
|
|
164
|
-
for (
|
|
171
|
+
for (let n = 0; n < sizes32.length; n++) {
|
|
172
|
+
const size = sizes32[n]
|
|
173
|
+
const encoding = valueEncoding
|
|
165
174
|
if (size < 0) {
|
|
166
|
-
|
|
175
|
+
rows.push(undefined)
|
|
167
176
|
} else {
|
|
168
|
-
if (!
|
|
169
|
-
|
|
170
|
-
} else if (
|
|
171
|
-
|
|
177
|
+
if (!encoding || encoding === 'buffer') {
|
|
178
|
+
rows.push(data.subarray(offset, offset + size))
|
|
179
|
+
} else if (encoding === 'slice') {
|
|
180
|
+
rows.push({ buffer: data, byteOffset: offset, byteLength: size })
|
|
172
181
|
} else {
|
|
173
|
-
|
|
182
|
+
rows.push(data.toString(encoding, offset, offset + size))
|
|
174
183
|
}
|
|
175
184
|
offset += size
|
|
176
185
|
if (offset & 0x7) {
|
|
@@ -178,7 +187,7 @@ class RocksLevel extends AbstractLevel {
|
|
|
178
187
|
}
|
|
179
188
|
}
|
|
180
189
|
}
|
|
181
|
-
callback(null,
|
|
190
|
+
callback(null, rows)
|
|
182
191
|
}
|
|
183
192
|
this[kUnref]()
|
|
184
193
|
})
|
package/package.json
CHANGED
package/util.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
function handleNextv (err, sizes, buffer, finished, options, callback) {
|
|
4
|
+
const { keyEncoding, valueEncoding } = options ?? {}
|
|
5
|
+
|
|
4
6
|
if (err) {
|
|
5
7
|
callback(err)
|
|
6
8
|
} else {
|
|
7
9
|
buffer ??= Buffer.alloc(0)
|
|
8
10
|
sizes ??= Buffer.alloc(0)
|
|
9
11
|
|
|
10
|
-
const { keyEncoding, valueEncoding } = options ?? {}
|
|
11
|
-
|
|
12
12
|
const rows = []
|
|
13
13
|
let offset = 0
|
|
14
14
|
const sizes32 = new Int32Array(sizes.buffer, sizes.byteOffset, sizes.byteLength / 4)
|