Commit Graph

36 Commits

Author SHA1 Message Date
Jacek Sieka 17eb247702
expose memtable flush (#72)
* expose memtable flush

This can be used to avoid log replays on startup, for example

* Add flush to RocksDbReadWriteRef.

* Remove atomic flush default.

---------

Co-authored-by: bhartnett <51288821+bhartnett@users.noreply.github.com>
2024-10-29 08:14:36 +08:00
bhartnett 1e0d26211f
Update RocksDb to v9.6.1 (#70)
* Update RocksDb to v9.6.1
2024-10-01 11:22:08 +08:00
web3-developer 608d10a24e
Use nph v0.6.0 in nimble format and run format on project. (#66) 2024-07-22 21:05:02 +08:00
web3-developer 92df0b067f
Add support for snapshots. (#64)
* Add support for snapshots.
2024-07-10 13:15:40 +08:00
web3-developer cf1267e845
Add support for optimistic transaction db, write batch with index, keyMayExist and empty keys. (#63)
* Add support for optimistic transaction db.

* Add keyMayExist to RocksDbRef.

* Add support for write batch with index.

* Allow empty keys to be used in API.
2024-07-08 22:18:30 +08:00
web3-developer 6b7de5730b
Implement missing getter and setters for option types. (#62)
* Update readme.

* Add additional opts getters and setters for ReadOptionsRef and WriteOptionsRef. Updated BackupEngineOptionsRef to use newer c library type.

* Add majority of option type getter and setters.
2024-07-03 23:46:42 +08:00
web3-developer d31b8b8a72
Build dynamic libraries for all platforms using vcpkg. (#61)
* Build dynamic libraries for all platforms using vcpkg.

* Cleanup CI.
2024-07-03 11:34:40 +08:00
web3-developer 01ced36404
Fix segfault in filterpolicy close (#60)
* Fix seq fault caused by double free. Now using API correctly.

* Add tests to cover autoClose.
2024-07-02 12:44:05 +08:00
web3-developer caedba0b3f
Implement autoclose on missed types. (#59)
* Implement autoclose on missed types.

* Cleanup using templates and add more tests.
2024-06-28 23:57:34 +08:00
web3-developer 03313d8068
Auto close feature to improve memory management of option types. (#57)
* Revert some changes from prior PR https://github.com/status-im/nim-rocksdb/pull/48 which enable memory leak of options when not cleaned up manually.

* Clean up, add more tests and use correct free function for listColumnFamilies.

* Close opt types when opening database fails.

* Add autoClose flag to each opt type.

* Finish autoClose changes to prevent memory leaks.
2024-06-28 10:04:37 +08:00
web3-developer ee15ce027b
Update API to support passing in ColFamilyHandleRef instead of column family string. (#52)
* Refactor API to pass in column family handle instead of string.

* Check for unknown column family in getColFamilyHandle and update tests.

* Update column family function names. Remove redundant exists check.
2024-06-27 01:31:39 +08:00
web3-developer a691d5b9d2
Format using nph (#54)
* Format entire project using nph.

* Add nph lint to CI.
2024-06-26 23:00:10 +08:00
web3-developer 45f7a9266f
Update RocksDb header file and automate regeneration of wrapper. 2024-06-21 12:08:16 +08:00
Jacek Sieka d648b10e2c
options: reclassify (#51)
Several options were mistakenly classified as db options when in fact
they are column family options - the C interface does not make this
distinction and instead puts them all under one umbrella.

This PR updates options to use nim setter/getter properties allowing
both read and write of most options - lots of options are exposed both
for reading and writing, but hey, one could always add _even more_ of
them - there's certainly no lack!
2024-06-19 08:39:15 +02:00
Jacek Sieka 293dc0745e
max_total_wal_size is a db option (#50) 2024-06-14 15:43:49 +02:00
Jordan Hrycaj c5bbf83114
Expose function for listing existing column families (#48)
* Expose function for listing existing column families

* Free CF list after use

* Update, fix error case

* Rename listRocksDbCFs -> listColumnFamilies

* Need to free each item separately

* Handle default option objects, close after use
2024-06-13 15:43:33 +00:00
Jacek Sieka 138dadac9c
expose more options (#46) 2024-06-12 11:51:03 +02:00
Jacek Sieka 2879227085
expose additional configuration options (#43)
* caches
* table options
* spelling fixes
2024-06-04 12:06:14 +02:00
Jordan Hrycaj eb594e33b2
Add explicit seek position method to iterator (#42) 2024-04-16 16:54:55 +00:00
web3-developer f37d7d486c
Don't set default compression as it forces us to require the compression library when linking or at runtime. Let RocksBb pick the best default. (#41) 2024-03-30 00:26:12 +08:00
web3-developer 90027f1875
Support for static linking RocksDb. (#40)
* Added rocksdb as a submodule in vendor directory.

* Add support for static linking using nimble.

* Add script to build static library dependencies.

* Disable warnings as error in deps build.

* Set recommended compression options in build and in library.

* Move static linking into wrapper code.

* Conditionally set linker using when defined(macosx).

* Add support for linking windows static libraries.

* Build rocksdb static libs using vcpkg.

* Remove lib prefix from library names for windows.

* Static linking is not supported on windows. Update documentation and CI.
2024-03-27 14:18:21 +08:00
web3-developer fc2ba4a836
Update open procs to support adding the default column family if it is missing from the columnFamilies list. (#39) 2024-03-07 09:02:24 +08:00
web3-developer 5f6282e8d4
Rocksdb rewrite integration (#38)
* Column families support (#34)

* Update library to support column families. If not specified, uses the 'default' column family.

* Added tests for column family changes.

* Update library version and readme.

* Updated the librocksdb c library to the latest stable version.

* Started rewrite of library.

* Commit library rewrite progress.

* Completed initial rewrite and refactored tests.

* Completed implementation of backup engine.

* Added tests for new types.

* Completed tests for existing features.

* Remove features not supported by older versions of RocksDB to fix CI (temporary fix).

* Remove flush before backup support from BackupEngine to fix CI.

* Transactions support (#36)

* Update library to support column families. If not specified, uses the 'default' column family.

* Added tests for column family changes.

* Update library version and readme.

* Updated the librocksdb c library to the latest stable version.

* Started rewrite of library.

* Commit library rewrite progress.

* Completed initial rewrite and refactored tests.

* Completed implementation of backup engine.

* Added tests for new types.

* Completed tests for existing features.

* Remove features not supported by older versions of RocksDB to fix CI (temporary fix).

* Remove flush before backup support from BackupEngine to fix CI.

* Implemented RocksDB iterator.

* Implemented pairs iterator.

* Completed implementation of WriteBatch with tests.

* Fix example code.

* Completed implementation of TransactionDb.

* Support setting default column family.

* Remove unneeded usage of var for ref type parameters.

* Completed transactiondb tests.

* Improve and refactor rocksdb test.

* Added support for ingesting sst files using the SstFileWriter. (#37)

* Create ColFamilyReadOnly and ColFamilyReadWrite types for using a specific column family.

* Use inline pragma for small procs and add lock to RocksDbRef type close to prevent double free.

* Added documentation for the public API.

* Initial implementation of sst filewriter.

* Added tests for sstfilewriter.

* Documentation minor improvements.
2024-03-05 11:12:37 +08:00
Ștefan Talpalaru fb3f2c30b0
Windows static lib: link required system libs (#30) 2022-03-22 18:46:47 +01:00
Ștefan Talpalaru c381daf84f
allow statically linking librocksdb (#29) 2022-03-22 10:02:39 +01:00
Ștefan Talpalaru 6f55b371e2
Nim-1.6 fix (#27) 2021-11-20 01:19:21 +01:00
Jacek Sieka 8da2f11951
nim 1.2, port to results (#21) 2020-04-18 00:18:04 +02:00
Ștefan Talpalaru 3c0ab43e1e use dynamic linking instead of dlopen on all Linux distros
- also document the need for "librocksdb-dev" on Debian
2018-12-26 23:52:42 +02:00
Yuriy Glukhov e2433f0651 Use native linking on Arch linux. 2018-10-02 21:17:42 +03:00
Jacek Sieka e05b1a411d
remove partial ABI version again, turns out travis has 4.x installed! 2018-08-15 20:45:20 -06:00
Jacek Sieka 9a10f01a27
add more version info to linked library - this is better but still wrong 2018-08-15 20:33:38 -06:00
Jacek Sieka 4b73bca449
fix error parameter type and memory leak
* error is a pointer to a cstring that the API will allocate on error
* if an error is returned, it must be free'd
* note missing tests for when error happens
2018-08-15 19:56:18 -06:00
Yuriy Glukhov 291621b828 Mooore type safety 2018-07-30 19:34:36 +03:00
Yuriy Glukhov ba0aa8e5db Dry up types and pragmas 2018-07-30 12:12:50 +03:00
Yuriy Glukhov 607af3c1aa Removed header dependency (#7) 2018-07-27 10:55:25 +02:00
Yuriy Glukhov 840d470eb9 Fixed pkg struct (#5) 2018-07-04 14:09:03 +02:00