@nxtedition/rocksdb 7.0.0-alpha.5 → 7.0.0-alpha.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.
Files changed (206) hide show
  1. package/binding.cc +32 -31
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +10 -3
  3. package/deps/rocksdb/rocksdb/Makefile +8 -1
  4. package/deps/rocksdb/rocksdb/TARGETS +14 -0
  5. package/deps/rocksdb/rocksdb/cache/cache.cc +50 -2
  6. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +9 -3
  7. package/deps/rocksdb/rocksdb/cache/cache_test.cc +111 -33
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +71 -31
  9. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +31 -30
  10. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +21 -8
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +35 -38
  12. package/deps/rocksdb/rocksdb/cache/lru_cache.h +22 -9
  13. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +48 -0
  14. package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +78 -0
  15. package/deps/rocksdb/rocksdb/db/builder.cc +7 -5
  16. package/deps/rocksdb/rocksdb/db/c.cc +777 -108
  17. package/deps/rocksdb/rocksdb/db/c_test.c +290 -30
  18. package/deps/rocksdb/rocksdb/db/column_family.cc +13 -0
  19. package/deps/rocksdb/rocksdb/db/column_family_test.cc +24 -36
  20. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +18 -4
  21. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +24 -6
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +6 -9
  23. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +38 -40
  24. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +4 -4
  25. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +14 -17
  26. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +3 -5
  27. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +253 -24
  28. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +9 -3
  29. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +3 -2
  30. package/deps/rocksdb/rocksdb/db/corruption_test.cc +67 -10
  31. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +83 -7
  32. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +5 -2
  33. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +68 -0
  34. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +40 -1
  35. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +94 -23
  36. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +17 -4
  37. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +263 -58
  38. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +186 -23
  39. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +43 -14
  40. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +24 -28
  41. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +116 -83
  42. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +13 -5
  43. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +71 -34
  44. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -3
  45. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +72 -33
  46. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +629 -0
  47. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +438 -10
  48. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +43 -2
  49. package/deps/rocksdb/rocksdb/db/db_test.cc +41 -1
  50. package/deps/rocksdb/rocksdb/db/db_test2.cc +41 -12
  51. package/deps/rocksdb/rocksdb/db/db_test_util.h +1 -0
  52. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +90 -0
  53. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +109 -16
  54. package/deps/rocksdb/rocksdb/db/dbformat.h +1 -1
  55. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +54 -0
  56. package/deps/rocksdb/rocksdb/db/flush_job.cc +3 -3
  57. package/deps/rocksdb/rocksdb/db/log_reader.cc +22 -4
  58. package/deps/rocksdb/rocksdb/db/log_reader.h +4 -0
  59. package/deps/rocksdb/rocksdb/db/memtable.cc +4 -0
  60. package/deps/rocksdb/rocksdb/db/post_memtable_callback.h +25 -0
  61. package/deps/rocksdb/rocksdb/db/repair.cc +1 -1
  62. package/deps/rocksdb/rocksdb/db/repair_test.cc +3 -2
  63. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +65 -2
  64. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +3 -2
  65. package/deps/rocksdb/rocksdb/db/version_set.cc +52 -0
  66. package/deps/rocksdb/rocksdb/db/version_set.h +57 -43
  67. package/deps/rocksdb/rocksdb/db/wal_manager.cc +14 -4
  68. package/deps/rocksdb/rocksdb/db/wal_manager.h +16 -0
  69. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +141 -0
  70. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +55 -0
  71. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +292 -0
  72. package/deps/rocksdb/rocksdb/db/write_thread.h +6 -1
  73. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +2 -0
  74. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +42 -19
  75. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +28 -0
  76. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +6 -2
  77. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +11 -5
  78. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +18 -12
  79. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +74 -167
  80. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -9
  81. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +16 -9
  82. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +117 -10
  83. package/deps/rocksdb/rocksdb/env/composite_env.cc +7 -0
  84. package/deps/rocksdb/rocksdb/env/env.cc +4 -0
  85. package/deps/rocksdb/rocksdb/env/env_posix.cc +3 -3
  86. package/deps/rocksdb/rocksdb/env/env_test.cc +5 -5
  87. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +45 -0
  88. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +14 -0
  89. package/deps/rocksdb/rocksdb/env/fs_posix.cc +1 -1
  90. package/deps/rocksdb/rocksdb/env/io_posix.cc +50 -24
  91. package/deps/rocksdb/rocksdb/env/io_posix.h +9 -7
  92. package/deps/rocksdb/rocksdb/env/mock_env.cc +9 -3
  93. package/deps/rocksdb/rocksdb/file/file_util.cc +4 -1
  94. package/deps/rocksdb/rocksdb/file/filename.cc +14 -0
  95. package/deps/rocksdb/rocksdb/file/line_file_reader.cc +9 -4
  96. package/deps/rocksdb/rocksdb/file/line_file_reader.h +3 -2
  97. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +157 -0
  98. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +8 -1
  99. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +68 -32
  100. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +20 -6
  101. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +10 -6
  102. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +4 -2
  103. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +16 -0
  104. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +231 -2
  105. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +4 -2
  106. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +3 -0
  107. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +13 -1
  108. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +4 -20
  109. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +1 -1
  110. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +31 -0
  111. package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +2 -0
  112. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +4 -20
  113. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +2 -2
  114. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
  115. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -0
  116. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +34 -0
  117. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +36 -0
  118. package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +74 -0
  119. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +36 -3
  120. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +16 -3
  121. package/deps/rocksdb/rocksdb/logging/env_logger.h +3 -3
  122. package/deps/rocksdb/rocksdb/logging/log_buffer.cc +2 -2
  123. package/deps/rocksdb/rocksdb/logging/log_buffer.h +1 -1
  124. package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -3
  125. package/deps/rocksdb/rocksdb/memory/arena.cc +0 -1
  126. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +61 -73
  127. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +6 -5
  128. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +6 -0
  129. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +7 -3
  130. package/deps/rocksdb/rocksdb/options/cf_options.cc +6 -0
  131. package/deps/rocksdb/rocksdb/options/cf_options.h +3 -0
  132. package/deps/rocksdb/rocksdb/options/options.cc +4 -1
  133. package/deps/rocksdb/rocksdb/options/options_helper.cc +1 -0
  134. package/deps/rocksdb/rocksdb/options/options_parser.cc +1 -1
  135. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +1 -0
  136. package/deps/rocksdb/rocksdb/options/options_test.cc +4 -0
  137. package/deps/rocksdb/rocksdb/port/port_posix.h +0 -2
  138. package/deps/rocksdb/rocksdb/port/sys_time.h +27 -11
  139. package/deps/rocksdb/rocksdb/port/win/env_win.cc +1 -1
  140. package/deps/rocksdb/rocksdb/port/win/io_win.cc +16 -0
  141. package/deps/rocksdb/rocksdb/port/win/io_win.h +11 -2
  142. package/deps/rocksdb/rocksdb/port/win/port_win.cc +1 -1
  143. package/deps/rocksdb/rocksdb/port/win/port_win.h +2 -16
  144. package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +2 -2
  145. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +2 -2
  146. package/deps/rocksdb/rocksdb/rocksdb.pc.in +4 -5
  147. package/deps/rocksdb/rocksdb/src.mk +3 -0
  148. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +7 -5
  149. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +39 -43
  150. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +2 -4
  151. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +42 -34
  152. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -7
  153. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +2 -2
  154. package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +2 -2
  155. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.cc +7 -13
  156. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.h +9 -5
  157. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +5 -2
  158. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +4 -4
  159. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +6 -2
  160. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +8 -5
  161. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -2
  162. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +19 -14
  163. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +2 -0
  164. package/deps/rocksdb/rocksdb/table/format.h +1 -3
  165. package/deps/rocksdb/rocksdb/table/get_context.cc +5 -0
  166. package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -0
  167. package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +3 -4
  168. package/deps/rocksdb/rocksdb/table/table_test.cc +1 -1
  169. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +102 -6
  170. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +1 -0
  171. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +19 -2
  172. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +2 -1
  173. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +2 -1
  174. package/deps/rocksdb/rocksdb/util/aligned_buffer.h +2 -4
  175. package/deps/rocksdb/rocksdb/util/autovector.h +11 -1
  176. package/deps/rocksdb/rocksdb/util/cleanable.cc +1 -0
  177. package/deps/rocksdb/rocksdb/util/compression.h +5 -7
  178. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +14 -8
  179. package/deps/rocksdb/rocksdb/util/string_util.cc +1 -1
  180. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +33 -63
  181. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
  182. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +3 -2
  183. package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +14 -0
  184. package/deps/rocksdb/rocksdb/utilities/counted_fs.h +7 -1
  185. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +7 -0
  186. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
  187. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +8 -0
  188. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
  189. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +6 -4
  190. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -3
  191. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +34 -21
  192. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +31 -7
  193. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +1 -0
  194. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +63 -0
  195. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +40 -0
  196. package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +426 -0
  197. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +37 -0
  198. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +6 -0
  199. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +16 -18
  200. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +18 -0
  201. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +61 -0
  202. package/deps/rocksdb/rocksdb.gyp +1 -0
  203. package/index.js +4 -4
  204. package/package.json +1 -1
  205. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  206. package/prebuilds/linux-x64/node.napi.node +0 -0
package/binding.cc CHANGED
@@ -691,85 +691,85 @@ struct OpenWorker final : public Worker {
691
691
  std::vector<rocksdb::ColumnFamilyDescriptor> column_families_;
692
692
  };
693
693
 
694
- napi_status InitOptions(napi_env env, auto& options, auto options2) {
695
- const auto memtable_memory_budget = Uint32Property(env, options2, "memtableMemoryBudget").value_or(256 * 1024 * 1024);
694
+ napi_status InitOptions(napi_env env, auto& columnOptions, auto options) {
695
+ const auto memtable_memory_budget = Uint32Property(env, options, "memtableMemoryBudget").value_or(256 * 1024 * 1024);
696
696
 
697
- const auto compaction = StringProperty(env, options2, "compaction").value_or("level");
697
+ const auto compaction = StringProperty(env, options, "compaction").value_or("level");
698
698
 
699
699
  if (compaction == "universal") {
700
- options.write_buffer_size = static_cast<size_t>(memtable_memory_budget / 4);
700
+ columnOptions.write_buffer_size = static_cast<size_t>(memtable_memory_budget / 4);
701
701
  // merge two memtables when flushing to L0
702
- options.min_write_buffer_number_to_merge = 2;
702
+ columnOptions.min_write_buffer_number_to_merge = 2;
703
703
  // this means we'll use 50% extra memory in the worst case, but will reduce
704
704
  // write stalls.
705
- options.max_write_buffer_number = 6;
705
+ columnOptions.max_write_buffer_number = 6;
706
706
  // universal style compaction
707
- options.compaction_style = rocksdb::kCompactionStyleUniversal;
708
- options.compaction_options_universal.compression_size_percent = 80;
707
+ columnOptions.compaction_style = rocksdb::kCompactionStyleUniversal;
708
+ columnOptions.compaction_options_universal.compression_size_percent = 80;
709
709
  } else {
710
710
  // merge two memtables when flushing to L0
711
- options.min_write_buffer_number_to_merge = 2;
711
+ columnOptions.min_write_buffer_number_to_merge = 2;
712
712
  // this means we'll use 50% extra memory in the worst case, but will reduce
713
713
  // write stalls.
714
- options.max_write_buffer_number = 6;
714
+ columnOptions.max_write_buffer_number = 6;
715
715
  // start flushing L0->L1 as soon as possible. each file on level0 is
716
716
  // (memtable_memory_budget / 2). This will flush level 0 when it's bigger than
717
717
  // memtable_memory_budget.
718
- options.level0_file_num_compaction_trigger = 2;
718
+ columnOptions.level0_file_num_compaction_trigger = 2;
719
719
  // doesn't really matter much, but we don't want to create too many files
720
- options.target_file_size_base = memtable_memory_budget / 8;
720
+ columnOptions.target_file_size_base = memtable_memory_budget / 8;
721
721
  // make Level1 size equal to Level0 size, so that L0->L1 compactions are fast
722
- options.max_bytes_for_level_base = memtable_memory_budget;
722
+ columnOptions.max_bytes_for_level_base = memtable_memory_budget;
723
723
 
724
724
  // level style compaction
725
- options.compaction_style = rocksdb::kCompactionStyleLevel;
725
+ columnOptions.compaction_style = rocksdb::kCompactionStyleLevel;
726
726
 
727
727
  // TODO (perf): only compress levels >= 2
728
728
  }
729
729
 
730
- options.compression =
731
- BooleanProperty(env, options2, "compression").value_or((true)) ? rocksdb::kZSTD : rocksdb::kNoCompression;
732
- if (options.compression == rocksdb::kZSTD) {
733
- options.compression_opts.max_dict_bytes = 16 * 1024;
734
- options.compression_opts.zstd_max_train_bytes = 16 * 1024 * 100;
735
- // options.compression_opts.parallel_threads
730
+ columnOptions.compression =
731
+ BooleanProperty(env, options, "compression").value_or((true)) ? rocksdb::kZSTD : rocksdb::kNoCompression;
732
+ if (columnOptions.compression == rocksdb::kZSTD) {
733
+ columnOptions.compression_opts.max_dict_bytes = 16 * 1024;
734
+ columnOptions.compression_opts.zstd_max_train_bytes = 16 * 1024 * 100;
735
+ // columnOptions.compression_opts.parallel_threads
736
736
  }
737
737
 
738
- const auto cacheSize = Uint32Property(env, options2, "cacheSize").value_or(8 << 20);
738
+ const auto cacheSize = Uint32Property(env, options, "cacheSize").value_or(8 << 20);
739
739
 
740
740
  rocksdb::BlockBasedTableOptions tableOptions;
741
741
 
742
742
  if (cacheSize) {
743
743
  tableOptions.block_cache = rocksdb::NewLRUCache(cacheSize);
744
744
  tableOptions.cache_index_and_filter_blocks =
745
- BooleanProperty(env, options2, "cacheIndexAndFilterBlocks").value_or(true);
745
+ BooleanProperty(env, options, "cacheIndexAndFilterBlocks").value_or(true);
746
746
  } else {
747
747
  tableOptions.no_block_cache = true;
748
748
  tableOptions.cache_index_and_filter_blocks = false;
749
749
  }
750
750
 
751
- const auto optimize = StringProperty(env, options2, "optimize").value_or("");
751
+ const auto optimize = StringProperty(env, options, "optimize").value_or("");
752
752
 
753
753
  if (optimize == "point-lookup") {
754
754
  tableOptions.data_block_index_type = rocksdb::BlockBasedTableOptions::kDataBlockBinaryAndHash;
755
755
  tableOptions.data_block_hash_table_util_ratio = 0.75;
756
756
  tableOptions.filter_policy.reset(rocksdb::NewRibbonFilterPolicy(10, 1));
757
757
 
758
- options.memtable_prefix_bloom_size_ratio = 0.02;
759
- options.memtable_whole_key_filtering = true;
758
+ columnOptions.memtable_prefix_bloom_size_ratio = 0.02;
759
+ columnOptions.memtable_whole_key_filtering = true;
760
760
  } else if (optimize == "range-lookup") {
761
761
  // TODO?
762
762
  } else {
763
763
  tableOptions.filter_policy.reset(rocksdb::NewRibbonFilterPolicy(10));
764
764
  }
765
765
 
766
- tableOptions.block_size = Uint32Property(env, options2, "blockSize").value_or(4096);
767
- tableOptions.block_restart_interval = Uint32Property(env, options2, "blockRestartInterval").value_or(16);
766
+ tableOptions.block_size = Uint32Property(env, options, "blockSize").value_or(4096);
767
+ tableOptions.block_restart_interval = Uint32Property(env, options, "blockRestartInterval").value_or(16);
768
768
  tableOptions.format_version = 5;
769
769
  tableOptions.checksum = rocksdb::kXXH3;
770
- tableOptions.optimize_filters_for_memory = BooleanProperty(env, options2, "optimizeFiltersForMemory").value_or(true);
770
+ tableOptions.optimize_filters_for_memory = BooleanProperty(env, options, "optimizeFiltersForMemory").value_or(true);
771
771
 
772
- options.table_factory.reset(rocksdb::NewBlockBasedTableFactory(tableOptions));
772
+ columnOptions.table_factory.reset(rocksdb::NewBlockBasedTableFactory(tableOptions));
773
773
 
774
774
  return napi_ok;
775
775
  }
@@ -791,7 +791,7 @@ NAPI_METHOD(db_open) {
791
791
 
792
792
  dbOptions.create_if_missing = BooleanProperty(env, options, "createIfMissing").value_or(true);
793
793
  dbOptions.error_if_exists = BooleanProperty(env, options, "errorIfExists").value_or(false);
794
- dbOptions.avoid_unnecessary_blocking_io = true;
794
+ dbOptions.avoid_unnecessary_blocking_io = BooleanProperty(env, options, "avoidUnnecessaryBlockingIO").value_or(true);
795
795
  dbOptions.use_adaptive_mutex = BooleanProperty(env, options, "useAdaptiveMutex").value_or(true);
796
796
  dbOptions.enable_pipelined_write = BooleanProperty(env, options, "enablePipelinedWrite").value_or(true);
797
797
  dbOptions.max_background_jobs =
@@ -799,6 +799,7 @@ NAPI_METHOD(db_open) {
799
799
  dbOptions.WAL_ttl_seconds = Uint32Property(env, options, "walTTL").value_or(0) / 1e3;
800
800
  dbOptions.WAL_size_limit_MB = Uint32Property(env, options, "walSizeLimit").value_or(0) / 1e6;
801
801
  dbOptions.create_missing_column_families = true;
802
+ dbOptions.unordered_write = BooleanProperty(env, options, "unorderedWrite").value_or(false);
802
803
 
803
804
  const auto infoLogLevel = StringProperty(env, options, "infoLogLevel").value_or("");
804
805
  if (infoLogLevel.size() > 0) {
@@ -1479,7 +1480,7 @@ struct NextWorker final : public Worker {
1479
1480
  cache_.push_back(v.ToString());
1480
1481
  }
1481
1482
 
1482
- if (bytesRead > iterator_->highWaterMarkBytes_ || cache_.size() / 2 >= size_) {
1483
+ if ((iterator_->highWaterMarkBytes_ != -1 && bytesRead > iterator_->highWaterMarkBytes_) || cache_.size() / 2 >= size_) {
1483
1484
  finished_ = false;
1484
1485
  return rocksdb::Status::OK();
1485
1486
  }
@@ -89,7 +89,11 @@ include(CMakeDependentOption)
89
89
  if(MSVC)
90
90
  option(WITH_GFLAGS "build with GFlags" OFF)
91
91
  option(WITH_XPRESS "build with windows built in compression" OFF)
92
- include(${CMAKE_CURRENT_SOURCE_DIR}/thirdparty.inc)
92
+ option(ROCKSDB_SKIP_THIRDPARTY "skip thirdparty.inc" OFF)
93
+
94
+ if(NOT ROCKSDB_SKIP_THIRDPARTY)
95
+ include(${CMAKE_CURRENT_SOURCE_DIR}/thirdparty.inc)
96
+ endif()
93
97
  else()
94
98
  if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" AND NOT CMAKE_SYSTEM_NAME MATCHES "kFreeBSD")
95
99
  # FreeBSD has jemalloc as default malloc
@@ -671,6 +675,7 @@ set(SOURCES
671
675
  db/version_set.cc
672
676
  db/wal_edit.cc
673
677
  db/wal_manager.cc
678
+ db/wide/wide_column_serialization.cc
674
679
  db/write_batch.cc
675
680
  db/write_batch_base.cc
676
681
  db/write_controller.cc
@@ -1122,8 +1127,8 @@ if(NOT WIN32 OR ROCKSDB_INSTALL_ON_WINDOWS)
1122
1127
  )
1123
1128
 
1124
1129
  configure_file(
1125
- ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc.in
1126
- ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc
1130
+ ${PROJECT_NAME}.pc.in
1131
+ ${PROJECT_NAME}.pc
1127
1132
  @ONLY
1128
1133
  )
1129
1134
 
@@ -1290,6 +1295,7 @@ if(WITH_TESTS)
1290
1295
  db/version_set_test.cc
1291
1296
  db/wal_manager_test.cc
1292
1297
  db/wal_edit_test.cc
1298
+ db/wide/wide_column_serialization_test.cc
1293
1299
  db/write_batch_test.cc
1294
1300
  db/write_callback_test.cc
1295
1301
  db/write_controller_test.cc
@@ -1384,6 +1390,7 @@ if(WITH_TESTS)
1384
1390
  utilities/transactions/write_prepared_transaction_test.cc
1385
1391
  utilities/transactions/write_unprepared_transaction_test.cc
1386
1392
  utilities/transactions/lock/range/range_locking_test.cc
1393
+ utilities/transactions/timestamped_snapshot_test.cc
1387
1394
  utilities/ttl/ttl_test.cc
1388
1395
  utilities/util_merge_operators_test.cc
1389
1396
  utilities/write_batch_with_index/write_batch_with_index_test.cc
@@ -1777,6 +1777,9 @@ write_prepared_transaction_test: $(OBJ_DIR)/utilities/transactions/write_prepare
1777
1777
  write_unprepared_transaction_test: $(OBJ_DIR)/utilities/transactions/write_unprepared_transaction_test.o $(TEST_LIBRARY) $(LIBRARY)
1778
1778
  $(AM_LINK)
1779
1779
 
1780
+ timestamped_snapshot_test: $(OBJ_DIR)/utilities/transactions/timestamped_snapshot_test.o $(TEST_LIBRARY) $(LIBRARY)
1781
+ $(AM_LINK)
1782
+
1780
1783
  sst_dump: $(OBJ_DIR)/tools/sst_dump.o $(TOOLS_LIBRARY) $(LIBRARY)
1781
1784
  $(AM_LINK)
1782
1785
 
@@ -1876,7 +1879,7 @@ testutil_test: $(OBJ_DIR)/test_util/testutil_test.o $(TEST_LIBRARY) $(LIBRARY)
1876
1879
  io_tracer_test: $(OBJ_DIR)/trace_replay/io_tracer_test.o $(OBJ_DIR)/trace_replay/io_tracer.o $(TEST_LIBRARY) $(LIBRARY)
1877
1880
  $(AM_LINK)
1878
1881
 
1879
- prefetch_test: $(OBJ_DIR)/file/prefetch_test.o $(TEST_LIBRARY) $(LIBRARY)
1882
+ prefetch_test: $(OBJ_DIR)/file/prefetch_test.o $(OBJ_DIR)/tools/io_tracer_parser_tool.o $(TEST_LIBRARY) $(LIBRARY)
1880
1883
  $(AM_LINK)
1881
1884
 
1882
1885
  io_tracer_parser_test: $(OBJ_DIR)/tools/io_tracer_parser_test.o $(OBJ_DIR)/tools/io_tracer_parser_tool.o $(TEST_LIBRARY) $(LIBRARY)
@@ -1902,6 +1905,10 @@ db_basic_bench: $(OBJ_DIR)/microbench/db_basic_bench.o $(LIBRARY)
1902
1905
 
1903
1906
  cache_reservation_manager_test: $(OBJ_DIR)/cache/cache_reservation_manager_test.o $(TEST_LIBRARY) $(LIBRARY)
1904
1907
  $(AM_LINK)
1908
+
1909
+ wide_column_serialization_test: $(OBJ_DIR)/db/wide/wide_column_serialization_test.o $(TEST_LIBRARY) $(LIBRARY)
1910
+ $(AM_LINK)
1911
+
1905
1912
  #-------------------------------------------------
1906
1913
  # make install related stuff
1907
1914
  PREFIX ?= /usr/local
@@ -91,6 +91,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
91
91
  "db/version_set.cc",
92
92
  "db/wal_edit.cc",
93
93
  "db/wal_manager.cc",
94
+ "db/wide/wide_column_serialization.cc",
94
95
  "db/write_batch.cc",
95
96
  "db/write_batch_base.cc",
96
97
  "db/write_controller.cc",
@@ -419,6 +420,7 @@ cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
419
420
  "db/version_set.cc",
420
421
  "db/wal_edit.cc",
421
422
  "db/wal_manager.cc",
423
+ "db/wide/wide_column_serialization.cc",
422
424
  "db/write_batch.cc",
423
425
  "db/write_batch_base.cc",
424
426
  "db/write_controller.cc",
@@ -5766,6 +5768,12 @@ cpp_unittest_wrapper(name="timer_test",
5766
5768
  extra_compiler_flags=[])
5767
5769
 
5768
5770
 
5771
+ cpp_unittest_wrapper(name="timestamped_snapshot_test",
5772
+ srcs=["utilities/transactions/timestamped_snapshot_test.cc"],
5773
+ deps=[":rocksdb_test_lib"],
5774
+ extra_compiler_flags=[])
5775
+
5776
+
5769
5777
  cpp_unittest_wrapper(name="trace_analyzer_test",
5770
5778
  srcs=["tools/trace_analyzer_test.cc"],
5771
5779
  deps=[":rocksdb_test_lib"],
@@ -5814,6 +5822,12 @@ cpp_unittest_wrapper(name="wal_manager_test",
5814
5822
  extra_compiler_flags=[])
5815
5823
 
5816
5824
 
5825
+ cpp_unittest_wrapper(name="wide_column_serialization_test",
5826
+ srcs=["db/wide/wide_column_serialization_test.cc"],
5827
+ deps=[":rocksdb_test_lib"],
5828
+ extra_compiler_flags=[])
5829
+
5830
+
5817
5831
  cpp_unittest_wrapper(name="work_queue_test",
5818
5832
  srcs=["util/work_queue_test.cc"],
5819
5833
  deps=[":rocksdb_test_lib"],
@@ -34,13 +34,61 @@ static std::unordered_map<std::string, OptionTypeInfo>
34
34
  OptionType::kDouble, OptionVerificationType::kNormal,
35
35
  OptionTypeFlags::kMutable}},
36
36
  };
37
+
38
+ static std::unordered_map<std::string, OptionTypeInfo>
39
+ comp_sec_cache_options_type_info = {
40
+ {"capacity",
41
+ {offsetof(struct CompressedSecondaryCacheOptions, capacity),
42
+ OptionType::kSizeT, OptionVerificationType::kNormal,
43
+ OptionTypeFlags::kMutable}},
44
+ {"num_shard_bits",
45
+ {offsetof(struct CompressedSecondaryCacheOptions, num_shard_bits),
46
+ OptionType::kInt, OptionVerificationType::kNormal,
47
+ OptionTypeFlags::kMutable}},
48
+ {"compression_type",
49
+ {offsetof(struct CompressedSecondaryCacheOptions, compression_type),
50
+ OptionType::kCompressionType, OptionVerificationType::kNormal,
51
+ OptionTypeFlags::kMutable}},
52
+ {"compress_format_version",
53
+ {offsetof(struct CompressedSecondaryCacheOptions,
54
+ compress_format_version),
55
+ OptionType::kUInt32T, OptionVerificationType::kNormal,
56
+ OptionTypeFlags::kMutable}},
57
+ };
37
58
  #endif // ROCKSDB_LITE
38
59
 
39
60
  Status SecondaryCache::CreateFromString(
40
61
  const ConfigOptions& config_options, const std::string& value,
41
62
  std::shared_ptr<SecondaryCache>* result) {
42
- return LoadSharedObject<SecondaryCache>(config_options, value, nullptr,
43
- result);
63
+ if (value.find("compressed_secondary_cache://") == 0) {
64
+ std::string args = value;
65
+ args.erase(0, std::strlen("compressed_secondary_cache://"));
66
+ Status status;
67
+ std::shared_ptr<SecondaryCache> sec_cache;
68
+
69
+ #ifndef ROCKSDB_LITE
70
+ CompressedSecondaryCacheOptions sec_cache_opts;
71
+ status = OptionTypeInfo::ParseStruct(config_options, "",
72
+ &comp_sec_cache_options_type_info, "",
73
+ args, &sec_cache_opts);
74
+ if (status.ok()) {
75
+ sec_cache = NewCompressedSecondaryCache(sec_cache_opts);
76
+ }
77
+
78
+ #else
79
+ (void)config_options;
80
+ status = Status::NotSupported(
81
+ "Cannot load compressed secondary cache in LITE mode ", args);
82
+ #endif //! ROCKSDB_LITE
83
+
84
+ if (status.ok()) {
85
+ result->swap(sec_cache);
86
+ }
87
+ return status;
88
+ } else {
89
+ return LoadSharedObject<SecondaryCache>(config_options, value, nullptr,
90
+ result);
91
+ }
44
92
  }
45
93
 
46
94
  Status Cache::CreateFromString(const ConfigOptions& config_options,
@@ -12,6 +12,7 @@
12
12
  #include <set>
13
13
  #include <sstream>
14
14
 
15
+ #include "cache/fast_lru_cache.h"
15
16
  #include "db/db_impl/db_impl.h"
16
17
  #include "monitoring/histogram.h"
17
18
  #include "port/port.h"
@@ -76,7 +77,7 @@ DEFINE_string(secondary_cache_uri, "",
76
77
  static class std::shared_ptr<ROCKSDB_NAMESPACE::SecondaryCache> secondary_cache;
77
78
  #endif // ROCKSDB_LITE
78
79
 
79
- DEFINE_bool(use_clock_cache, false, "");
80
+ DEFINE_string(cache_type, "lru_cache", "Type of block cache.");
80
81
 
81
82
  // ## BEGIN stress_cache_key sub-tool options ##
82
83
  // See class StressCacheKey below.
@@ -279,13 +280,15 @@ class CacheBench {
279
280
  if (max_key > (static_cast<uint64_t>(1) << max_log_)) max_log_++;
280
281
  }
281
282
 
282
- if (FLAGS_use_clock_cache) {
283
+ if (FLAGS_cache_type == "clock_cache") {
283
284
  cache_ = NewClockCache(FLAGS_cache_size, FLAGS_num_shard_bits);
284
285
  if (!cache_) {
285
286
  fprintf(stderr, "Clock cache not supported.\n");
286
287
  exit(1);
287
288
  }
288
- } else {
289
+ } else if (FLAGS_cache_type == "fast_lru_cache") {
290
+ cache_ = NewFastLRUCache(FLAGS_cache_size, FLAGS_num_shard_bits);
291
+ } else if (FLAGS_cache_type == "lru_cache") {
289
292
  LRUCacheOptions opts(FLAGS_cache_size, FLAGS_num_shard_bits, false, 0.5);
290
293
  #ifndef ROCKSDB_LITE
291
294
  if (!FLAGS_secondary_cache_uri.empty()) {
@@ -303,6 +306,9 @@ class CacheBench {
303
306
  #endif // ROCKSDB_LITE
304
307
 
305
308
  cache_ = NewLRUCache(opts);
309
+ } else {
310
+ fprintf(stderr, "Cache type not supported.");
311
+ exit(1);
306
312
  }
307
313
  }
308
314