@nxtedition/rocksdb 13.3.0 → 13.4.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
CHANGED
|
@@ -904,71 +904,76 @@ napi_status InitOptions(napi_env env, T& columnOptions, const U& options) {
|
|
|
904
904
|
NAPI_STATUS_RETURN(GetProperty(env, options, "optimizeFiltersForHits", columnOptions.optimize_filters_for_hits));
|
|
905
905
|
NAPI_STATUS_RETURN(GetProperty(env, options, "periodicCompactionSeconds", columnOptions.periodic_compaction_seconds));
|
|
906
906
|
|
|
907
|
+
// Compat
|
|
907
908
|
NAPI_STATUS_RETURN(GetProperty(env, options, "enableBlobFiles", columnOptions.enable_blob_files));
|
|
908
909
|
NAPI_STATUS_RETURN(GetProperty(env, options, "minBlobSize", columnOptions.min_blob_size));
|
|
909
|
-
NAPI_STATUS_RETURN(GetProperty(env, options, "blobFileSize", columnOptions.blob_file_size));
|
|
910
910
|
NAPI_STATUS_RETURN(GetProperty(env, options, "enableBlobGarbageCollection", columnOptions.enable_blob_garbage_collection));
|
|
911
|
+
|
|
912
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobFiles", columnOptions.enable_blob_files));
|
|
913
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobMinSize", columnOptions.min_blob_size));
|
|
914
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobGarbageCollection", columnOptions.enable_blob_garbage_collection));
|
|
915
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobFileSize", columnOptions.blob_file_size));
|
|
911
916
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blobGarbageCollectionAgeCutoff", columnOptions.blob_garbage_collection_age_cutoff));
|
|
912
917
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blobGarbageCollectionForceThreshold", columnOptions.blob_garbage_collection_force_threshold));
|
|
913
918
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blobCompactionReadaheadSize", columnOptions.blob_compaction_readahead_size));
|
|
914
919
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blobFileStartingLevel", columnOptions.blob_file_starting_level));
|
|
915
|
-
|
|
916
|
-
bool blobCompression = true;
|
|
917
|
-
NAPI_STATUS_RETURN(GetProperty(env, options, "blobCompression", blobCompression));
|
|
918
|
-
columnOptions.blob_compression_type = blobCompression ? rocksdb::kZSTD : rocksdb::kNoCompression;
|
|
919
|
-
|
|
920
|
-
bool prepopulateBlobCache = false;
|
|
921
|
-
NAPI_STATUS_RETURN(GetProperty(env, options, "prepopulateBlobCache", prepopulateBlobCache));
|
|
922
|
-
columnOptions.prepopulate_blob_cache = prepopulateBlobCache ? rocksdb::PrepopulateBlobCache::kFlushOnly : rocksdb::PrepopulateBlobCache::kDisable;
|
|
920
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobCompression", columnOptions.blob_compression_type));
|
|
923
921
|
|
|
924
922
|
rocksdb::BlockBasedTableOptions tableOptions;
|
|
925
923
|
tableOptions.decouple_partitioned_filters = true;
|
|
926
924
|
|
|
927
925
|
{
|
|
928
|
-
uint32_t cacheSize =
|
|
926
|
+
uint32_t cacheSize = 8 << 20;
|
|
929
927
|
double compressedRatio = 0.0;
|
|
930
|
-
|
|
931
|
-
|
|
928
|
+
|
|
929
|
+
// Compat
|
|
930
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "cacheSize", cacheSize));
|
|
931
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "cacheCompressedRatio", compressedRatio));
|
|
932
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "prepopulateBlockCache", tableOptions.prepopulate_block_cache));
|
|
933
|
+
|
|
934
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blockCacheSize", cacheSize));
|
|
935
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blockCacheCompressedRatio", compressedRatio));
|
|
936
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blockCachePrepopulate", tableOptions.prepopulate_block_cache));
|
|
932
937
|
|
|
933
938
|
if (cacheSize == 0) {
|
|
934
|
-
|
|
935
|
-
} else
|
|
939
|
+
tableOptions.no_block_cache = true;
|
|
940
|
+
} else if (compressedRatio > 0.0) {
|
|
936
941
|
rocksdb::TieredCacheOptions options;
|
|
937
942
|
options.total_capacity = cacheSize;
|
|
938
943
|
options.compressed_secondary_ratio = compressedRatio;
|
|
939
944
|
options.comp_cache_opts.compression_type = rocksdb::CompressionType::kZSTD;
|
|
940
|
-
|
|
945
|
+
tableOptions.block_cache = rocksdb::NewTieredCache(options);
|
|
941
946
|
} else {
|
|
942
|
-
|
|
947
|
+
tableOptions.block_cache = rocksdb::HyperClockCacheOptions(cacheSize, 0).MakeSharedCache();
|
|
943
948
|
}
|
|
944
949
|
}
|
|
945
950
|
|
|
946
951
|
{
|
|
947
|
-
uint32_t cacheSize =
|
|
952
|
+
uint32_t cacheSize = -1;
|
|
948
953
|
double compressedRatio = 0.0;
|
|
949
|
-
NAPI_STATUS_RETURN(GetProperty(env, options, "cacheSize", cacheSize));
|
|
950
|
-
NAPI_STATUS_RETURN(GetProperty(env, options, "blockCacheSize", cacheSize));
|
|
951
|
-
NAPI_STATUS_RETURN(GetProperty(env, options, "blockCacheCompressedRatio", compressedRatio));
|
|
952
954
|
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
955
|
+
// Compat
|
|
956
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "prepopulateBlobCache", columnOptions.prepopulate_blob_cache));
|
|
957
|
+
|
|
958
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobCacheSize", cacheSize));
|
|
959
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobCacheCompressedRatio", compressedRatio));
|
|
960
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobCachePrepopulate", columnOptions.prepopulate_blob_cache));
|
|
961
|
+
|
|
962
|
+
if (cacheSize == -1) {
|
|
963
|
+
columnOptions.blob_cache = tableOptions.block_cache;
|
|
964
|
+
} else if (cacheSize == 0) {
|
|
965
|
+
columnOptions.blob_cache = nullptr;
|
|
966
|
+
} else if (compressedRatio > 0.0) {
|
|
956
967
|
rocksdb::TieredCacheOptions options;
|
|
957
968
|
options.total_capacity = cacheSize;
|
|
958
969
|
options.compressed_secondary_ratio = compressedRatio;
|
|
959
970
|
options.comp_cache_opts.compression_type = rocksdb::CompressionType::kZSTD;
|
|
960
|
-
|
|
971
|
+
columnOptions.blob_cache = rocksdb::NewTieredCache(options);
|
|
961
972
|
} else {
|
|
962
|
-
|
|
973
|
+
columnOptions.blob_cache = rocksdb::HyperClockCacheOptions(cacheSize, 0).MakeSharedCache();
|
|
963
974
|
}
|
|
964
975
|
}
|
|
965
976
|
|
|
966
|
-
bool prepopulateBlockCache = false;
|
|
967
|
-
NAPI_STATUS_RETURN(GetProperty(env, options, "prepopulateBlockCache", prepopulateBlockCache));
|
|
968
|
-
tableOptions.prepopulate_block_cache = prepopulateBlockCache
|
|
969
|
-
? rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kFlushOnly
|
|
970
|
-
: rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kDisable;
|
|
971
|
-
|
|
972
977
|
std::string optimize = "";
|
|
973
978
|
NAPI_STATUS_RETURN(GetProperty(env, options, "optimize", optimize));
|
|
974
979
|
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
package/util.h
CHANGED
|
@@ -283,6 +283,82 @@ static napi_status GetValue(napi_env env, napi_value value, Encoding& result) {
|
|
|
283
283
|
return napi_ok;
|
|
284
284
|
}
|
|
285
285
|
|
|
286
|
+
static napi_status GetValue(napi_env env, napi_value value, rocksdb::BlockBasedTableOptions::PrepopulateBlockCache& result) {
|
|
287
|
+
std::string str;
|
|
288
|
+
|
|
289
|
+
if (GetValue(env, value, str) == napi_ok) {
|
|
290
|
+
if (str == "flushOnly") {
|
|
291
|
+
result = rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kFlushOnly;
|
|
292
|
+
} else if (str == "disable") {
|
|
293
|
+
result = rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kDisable;
|
|
294
|
+
} else {
|
|
295
|
+
return napi_invalid_arg;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
bool boolean;
|
|
300
|
+
if (GetValue(env, value, boolean) == napi_ok) {
|
|
301
|
+
result = boolean ? rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kFlushOnly
|
|
302
|
+
: rocksdb::BlockBasedTableOptions::PrepopulateBlockCache::kDisable;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
return napi_invalid_arg;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
static napi_status GetValue(napi_env env, napi_value value, rocksdb::PrepopulateBlobCache& result) {
|
|
309
|
+
std::string str;
|
|
310
|
+
|
|
311
|
+
if (GetValue(env, value, str) == napi_ok) {
|
|
312
|
+
if (str == "flushOnly") {
|
|
313
|
+
result = rocksdb::PrepopulateBlobCache::kFlushOnly;
|
|
314
|
+
} else if (str == "disable") {
|
|
315
|
+
result = rocksdb::PrepopulateBlobCache::kDisable;
|
|
316
|
+
} else {
|
|
317
|
+
return napi_invalid_arg;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
bool boolean;
|
|
322
|
+
if (GetValue(env, value, boolean) == napi_ok) {
|
|
323
|
+
result = boolean ? rocksdb::PrepopulateBlobCache::kFlushOnly
|
|
324
|
+
: rocksdb::PrepopulateBlobCache::kDisable;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
return napi_invalid_arg;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
static napi_status GetValue(napi_env env, napi_value value, rocksdb::CompressionType& result) {
|
|
331
|
+
std::string str;
|
|
332
|
+
|
|
333
|
+
if (GetValue(env, value, str) == napi_ok) {
|
|
334
|
+
if (str == "no") {
|
|
335
|
+
result = rocksdb::CompressionType::kNoCompression;
|
|
336
|
+
} else if (str == "snappy") {
|
|
337
|
+
result = rocksdb::CompressionType::kSnappyCompression;
|
|
338
|
+
} else if (str == "zlib") {
|
|
339
|
+
result = rocksdb::CompressionType::kZlibCompression;
|
|
340
|
+
} else if (str == "bzip2") {
|
|
341
|
+
result = rocksdb::CompressionType::kBZip2Compression;
|
|
342
|
+
} else if (str == "lz4") {
|
|
343
|
+
result = rocksdb::CompressionType::kLZ4Compression;
|
|
344
|
+
} else if (str == "lz4hc") {
|
|
345
|
+
result = rocksdb::CompressionType::kLZ4HCCompression;
|
|
346
|
+
} else if (str == "xpress") {
|
|
347
|
+
result = rocksdb::CompressionType::kXpressCompression;
|
|
348
|
+
} else if (str == "zstd") {
|
|
349
|
+
result = rocksdb::CompressionType::kZSTD;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
bool boolean;
|
|
354
|
+
if (GetValue(env, value, boolean) == napi_ok) {
|
|
355
|
+
result = boolean ? rocksdb::kZSTD
|
|
356
|
+
: rocksdb::kNoCompression;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
return napi_invalid_arg;
|
|
360
|
+
}
|
|
361
|
+
|
|
286
362
|
template <typename T>
|
|
287
363
|
static napi_status GetValue(napi_env env, napi_value value, std::optional<T>& result) {
|
|
288
364
|
result = T{};
|