A library that provides an embeddable, persistent key-value store for fast storage. http://rocksdb.org
  • C++ 83.4%
  • Java 7.4%
  • C 2.5%
  • Python 2.3%
  • Starlark 1.9%
  • Other 2.4%
Find a file
Ranjan Banerjee 576dc39899 Fix destination type check in lossless_cast for pointers (#15188)
Summary:
Pull Request resolved: https://github.com/facebook/rocksdb/pull/15188

In the pointer branch of `lossless_cast`, the destination type check tested
`std::is_enum_v<To>` instead of `std::is_enum_v<ToDeref>`. Since `To` is a
pointer type in that branch, `std::is_enum_v<To>` is always false, so the
check collapsed to `std::is_integral_v<ToDeref>` and rejected casting to a
pointer-to-enum, e.g. `lossless_cast<MyEnum8*>(&some_uint8)`.

Reviewed By: xingbowang

Differential Revision: D119422904

fbshipit-source-id: b1f4e205d536ba3d10563fa62adb04867fae02ac
2026-09-11 08:31:56 -07:00
.github Fix AI code review hiding details, stale+misleading driver (#15087) 2026-08-11 17:07:45 -07:00
buckifier Add opt-in stats for async RocksDB reads (#15017) 2026-07-28 09:32:26 -07:00
build_tools Unify clang detection for the C API codegen and add make regen-c-api (#14994) 2026-07-23 15:50:16 -07:00
c_api_gen Retry the OpenAndCompact secondary open when the primary replaces CURRENT (#15179) 2026-09-09 19:32:00 -07:00
cache Fix Cache::ApplyToAllEntries ignoring average_entries_per_lock (#15186) 2026-09-09 09:41:06 -07:00
claude_md Fix AI code review hiding details, stale+misleading driver (#15087) 2026-08-11 17:07:45 -07:00
cmake Refresh platform010 build dependencies and remove TBB (#14882) 2026-06-25 10:05:45 -07:00
coverage internal_repo_rocksdb 2024-10-14 03:01:20 -07:00
db Track newer snapshot versions in RocksDB metadata reads (#15086) 2026-09-11 04:44:59 -07:00
db_stress_tool Track newer snapshot versions in RocksDB metadata reads (#15086) 2026-09-11 04:44:59 -07:00
docs Blog post for coroutines (#15143) 2026-09-01 15:55:37 -07:00
env Lazy wide-column byte-range (partial) blob reads (#15067) 2026-08-07 12:08:03 -07:00
examples Remove deprecated DB::Open raw pointer variants (and more) (#14335) 2026-02-17 23:33:39 -08:00
file Add session-scoped temporary directory for remote compaction (#15169) 2026-09-02 21:46:24 -07:00
fuzz Remove deprecated DB::Open raw pointer variants (and more) (#14335) 2026-02-17 23:33:39 -08:00
githooks Fixes and enhancements to pre-push hook (#14680) 2026-04-28 15:56:32 -07:00
include/rocksdb Track newer snapshot versions in RocksDB metadata reads (#15086) 2026-09-11 04:44:59 -07:00
java Track newer snapshot versions in RocksDB metadata reads (#15086) 2026-09-11 04:44:59 -07:00
logging Remove deprecated DB::Open raw pointer variants (and more) (#14335) 2026-02-17 23:33:39 -08:00
memory Remove deprecated DB::Open raw pointer variants (and more) (#14335) 2026-02-17 23:33:39 -08:00
memtable Track newer snapshot versions in RocksDB metadata reads (#15086) 2026-09-11 04:44:59 -07:00
microbench Store common user-key prefix once per block (format_version 8) (#15117) 2026-08-20 17:32:41 -07:00
monitoring Lazy wide-column byte-range (partial) blob reads (#15067) 2026-08-07 12:08:03 -07:00
options Add session-scoped temporary directory for remote compaction (#15169) 2026-09-02 21:46:24 -07:00
plugin Add initial CMake support to plugin (#9214) 2021-11-30 17:16:53 -08:00
port Use _exit(1) instead of exit(1) after DB is open to avoid UAF (#14850) 2026-06-11 22:32:11 -07:00
table Track newer snapshot versions in RocksDB metadata reads (#15086) 2026-09-11 04:44:59 -07:00
test_util Start format_version=8 development toward new features (#15104) 2026-08-17 12:08:59 -07:00
third-party Fix tests broken by gtest upgrade (#13661) 2025-06-04 10:44:17 -07:00
tools Track newer snapshot versions in RocksDB metadata reads (#15086) 2026-09-11 04:44:59 -07:00
trace_replay propagate request_id from app -> Rocks -> FS (#13616) 2025-05-16 21:25:50 -07:00
unreleased_history Track newer snapshot versions in RocksDB metadata reads (#15086) 2026-09-11 04:44:59 -07:00
util Fix destination type check in lossless_cast for pointers (#15188) 2026-09-11 08:31:56 -07:00
utilities Track newer snapshot versions in RocksDB metadata reads (#15086) 2026-09-11 04:44:59 -07:00
wiki Add a new picking algorithm in fifo compaction (#14326) 2026-02-15 10:04:58 -08:00
.clang-format A script that automatically reformat affected lines 2014-01-14 12:21:24 -08:00
.clang-tidy 2026 02 21 accelerate ci (#14368) 2026-02-24 04:47:32 -08:00
.gitignore Improve build and test experience for Make builds (#14883) 2026-06-29 14:39:13 -07:00
.lgtm.yml Create lgtm.yml for LGTM.com C/C++ analysis (#4058) 2018-06-26 12:43:04 -07:00
.watchmanconfig Added .watchmanconfig file to rocksdb repo (#5593) 2019-07-19 15:00:33 -07:00
AGENTS.md db_stress: document expected-state trace/replay contract (#14612) 2026-04-14 09:58:20 -07:00
AUTHORS Update RocksDB Authors File 2017-10-18 14:42:10 -07:00
BUCK Preferred-phase scheduling for periodic (time-based) compaction 2026-08-26 20:14:26 -07:00
ccache_msvc_compiler.bat Use ccache to accelerate windows build (#14064) 2025-10-20 10:37:08 -07:00
CLAUDE.md Faster and safer MANIFEST recovery for remote compaction (OpenAndCompact) (#15133) 2026-08-20 16:07:48 -07:00
CMakeLists.txt Preferred-phase scheduling for periodic (time-based) compaction 2026-08-26 20:14:26 -07:00
CODE_OF_CONDUCT.md Adopt Contributor Covenant 2019-08-29 23:21:01 -07:00
common.mk Clean up variables for temporary directory (#9961) 2022-05-06 16:38:06 -07:00
CONTRIBUTING.md Add Code of Conduct 2017-12-05 18:42:35 -08:00
COPYING Add GPLv2 as an alternative license. 2017-04-27 18:06:12 -07:00
crash_test.mk Add remote storage liveness crash test signal (#15102) 2026-08-17 19:30:37 -07:00
DEFAULT_OPTIONS_HISTORY.md Add Options::DisableExtraChecks, clarify force_consistency_checks (#9363) 2022-01-18 17:31:03 -08:00
Directory.Build.props Use ccache to accelerate windows build (#14064) 2025-10-20 10:37:08 -07:00
DUMP_FORMAT.md First version of rocksdb_dump and rocksdb_undump. 2015-06-19 16:24:36 -07:00
folly.mk Fix Folly build due to libaio dead download link (#15159) 2026-08-28 09:01:50 -07:00
HISTORY.md Update version to 11.11.0 for 11.10 release (#15157) 2026-09-02 09:07:42 -07:00
INSTALL.md Require C++20 (#13904) 2025-08-28 16:59:16 -07:00
issue_template.md Add Google Group to Issue Template 2020-01-28 14:40:37 -08:00
LANGUAGE-BINDINGS.md Add python binding to LANGUAGE-BINDINGS.md (#13391) 2025-02-10 17:38:40 -08:00
LICENSE.Apache Change RocksDB License 2017-07-15 16:11:23 -07:00
LICENSE.leveldb Add back the LevelDB license file 2017-07-16 18:42:18 -07:00
Makefile Add native coroutine read dispatch to RocksDB (#15073) 2026-08-10 09:43:05 -07:00
PLUGINS.md Add encfs plugin link (#12070) 2023-11-14 07:33:21 -08:00
README.md Remove deprecated integration tests from README.md (#11354) 2023-04-07 16:52:50 -07:00
rocksdb.pc.in build: fix pkg-config file generation (#9953) 2022-05-30 12:46:40 -07:00
src.mk Preferred-phase scheduling for periodic (time-based) compaction 2026-08-26 20:14:26 -07:00
thirdparty.inc Fix build jemalloc api (#5470) 2019-06-24 17:40:32 -07:00
USERS.md Add Venice as a RocksDB user (#13179) 2024-12-05 12:09:44 -08:00
Vagrantfile Adding CentOS 7 Vagrantfile & build script 2018-02-26 15:27:17 -08:00
WINDOWS_PORT.md Update branch name in WINDOWS_PORT.md (#8745) 2021-09-01 19:26:39 -07:00

RocksDB: A Persistent Key-Value Store for Flash and RAM Storage

CircleCI Status

RocksDB is developed and maintained by Facebook Database Engineering Team. It is built on earlier work on LevelDB by Sanjay Ghemawat (sanjay@google.com) and Jeff Dean (jeff@google.com)

This code is a library that forms the core building block for a fast key-value server, especially suited for storing data on flash drives. It has a Log-Structured-Merge-Database (LSM) design with flexible tradeoffs between Write-Amplification-Factor (WAF), Read-Amplification-Factor (RAF) and Space-Amplification-Factor (SAF). It has multi-threaded compactions, making it especially suitable for storing multiple terabytes of data in a single database.

Start with example usage here: https://github.com/facebook/rocksdb/tree/main/examples

See the github wiki for more explanation.

The public interface is in include/. Callers should not include or rely on the details of any other header files in this package. Those internal APIs may be changed without warning.

Questions and discussions are welcome on the RocksDB Developers Public Facebook group and email list on Google Groups.

License

RocksDB is dual-licensed under both the GPLv2 (found in the COPYING file in the root directory) and Apache 2.0 License (found in the LICENSE.Apache file in the root directory). You may select, at your option, one of the above-listed licenses.