Leveldb Versions Save

LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.

1.23

3 years ago
  • Sync MANIFEST before closing in db_impl when creating a new DB. Add logging with debugging information when failing to load a version set.
  • Optimize leveldb block seeks to utilize the current iterator location. This is beneficial when iterators are reused and seeks are not random but increasing. It is additionally beneficial with larger block sizes and keys with common prefixes.
  • Merge pull request #862 from rex4539:https
  • Documentation fixes
  • Merge pull request #855 from cmumford/submodule-fix
  • (test) Merge pull request #853 from cmumford:benchmark
  • Merge pull request #854 from cmumford:printf-fix
  • (cmumford/printf-fix) Fixed fprintf of 64-bit value.
  • (cmumford/benchmark) Added google/benchmark submodule.
  • Internal test cleanup
  • Internal cleanup migrating StatusOr.
  • Merge pull request #822 from jl0x61:bugFix
  • Merge pull request #819 from wzk784533:master
  • avoid unnecessary memory copy
  • Merge pull request #798 from lntotk:master
  • Fix accidental double std:: qualifiers.
  • Add some std:: qualifiers to types and functions.
  • Switch from C headers to C++ headers.
  • change const to constexpr
  • remove unnessary status judge
  • Remove leveldb::port::kLittleEndian.
  • Remove Windows workarounds in some tests.
  • Add Env::Remove{File,Dir} which obsolete Env::Delete{File,Dir}.
  • Defend against inclusion of windows.h in tests that invoke Env::DeleteFile.
  • Add WITHOUT ROWID to SQLite benchmark.
  • Merge pull request #756 from pwnall/third_party_2
  • Switch testing harness to googletest.
  • Move CI to Visual Studio 2019.
  • Allow different C/C++ standards when this is used as a subproject.
  • Align CMake configuration with related projects.
  • Remove redundant PROJECT_SOURCE_DIR usage from CMake config.
  • Fix installed target definition.
  • Added return in Version::Get::State::Match to quiet warning.
  • Using CMake's check_cxx_compiler_flag to check support for -Wthread-safety.
  • Fix tsan problem in env_test.
  • Merge pull request #698 from neal-zhu:master
  • Simplify unlocking in DeleteObsoleteFiles.
  • Add "leveldb" subdirectory to public include paths.
  • Align EnvPosix and EnvWindows.
  • Disable exceptions and RTTI in CMake configuration.
  • cache Saver in State object fix bug(uninitialized options pointer in State)
  • remove TODO in Version::ForEachOverlapping
  • use ForEachOverlapping to impl Get
  • Merge pull request #386 from ivanabc:master
  • unsigned char -> uint8_t
  • Add explicit typecasts to avoid compiler warning.
  • Guard DBImpl::versions_ by mutex_.
  • Converted two for-loops to while-loops.
  • Switch to using C++ 11 override specifier.
  • Added unit test for InternalKey::DecodeFrom with empty string.
  • Merge pull request #411 from proller:assert1
  • Using std::ostringstream in key DebugString.
  • Merge pull request #457 from jellor:patch-2
  • Fix EnvPosix tests on Travis CI.
  • Merge pull request #624 from adam-azarchs:master
  • Clean up util/coding.{h,cc}.
  • Initialize Stats::start_ before first use in Stats::Start().
  • Merge pull request #365 from allangj:c-strict-prototypes
  • Add argument definition for void c functions.
  • Consolidate benchmark code to benchmarks/.
  • Convert missed virtual -> override in db_test.cc.
  • Merge pull request #679 from smartxworks:optimize-readseq
  • Merge pull request #278 from wankai:master
  • don't check current key in DBIter::Next()
  • Add O_CLOEXEC to open calls.
  • broken db: fix assertion in leveldb::InternalKey::Encode, mark base as corrupt
  • set const property
  • reduce lock's range in DeleteObsoleteFiles
  • block_builder header file dependency fixed

1.22

4 years ago
  • Corrected formatting to be compliant with the Google C++ Style Guide.
  • Specifically export the WriteBatch::Handler inner class for Windows link.
  • Merge pull request #665 from cheng-chang:coding.
  • Merge pull request #669 from pavel-pimenov:fix-readme-windows-mkdir.
  • Merge pull request #472 from zhoudayang:patch-1.
  • Merge pull request #339 from richcole-at-amazon:master.
  • Restore soname versioning with CMake build.
  • Other miscellaneous cleanups, fixes, and improvements.

1.21

5 years ago
  • Switched to using Copybara for project synchronization.
  • Minor cleanup in ports.
  • Silence unused argument warnings in MSVC.
  • Add tests for empty keys and values.
  • Switch corruption_test to use InMemEnv.
  • Replace AtomicPointer with std::atomic.
  • Make InMemoryEnv more consistent with filesystem based Env's.
  • Align windows_logger with posix_logger.
  • Improve CI configuration and added AppVeyor (Windows CI) badge to README.
  • Added native support for Windows.
  • Make WriteBatch::ApproximateSize() const.
  • Fix PosixWritableFile::Sync() on Apple systems.
  • Fix fdatasync() feature detection in opensource build.
  • C++11 cleanup for util/mutexlock.h.
  • Rework threading in env_posix.cc.
  • Remove InitOnce from the port API.
  • Expose WriteBatch::Append().
  • Fix documentation for log file growth.
  • Add move constructor to Status.
  • Replace port_posix with port_stdcxx.
  • Reimplement ConsumeDecimalNumber.
  • Document the building process.
  • Replace NULL with nullptr in C++ files.
  • Remove PLATFORM_IS_LITTLE_ENDIAN from port/posix.h.
  • Add more thread safety annotations.
  • Require C++11.
  • Replace SIZE_MAX with std::numeric_limits.
  • Add CMake build support.
  • Enable thread safety annotations.
  • leveldb::DestroyDB will now delete empty directories.
  • Replace SSE-optimized CRC32C in POSIX port with external library.
  • Fix file writing bug in CL 170738066.
  • Fix use of uninitialized value in LRUHandle.
  • Fix issue #474: a race between the f*_unlocked() STDIO calls in env_posix.cc and concurrent application calls to fflush(NULL).
  • Use __APPLE__ instead of OS_MACOS. The former is compiler-provided.
  • Report missing CURRENT manifest file as database corruption.
  • LevelDB: Add WriteBatch::ApproximateSize().
  • Other minor fixes, code cleanup, and documentation improvements.

v1.20

7 years ago
  • Convert documentation to markdown.
  • Implement support for Intel crc32 instruction (SSE 4.2). Based on https://github.com/google/leveldb/pull/309.
  • Limit the number of read-only files the POSIX Env will have open.
  • Add option for maximum file size.

v1.19

7 years ago
  • A snappy change broke test assumptions about the size of compressed output. Fixed.
  • Fix problems in LevelDB's caching code.
  • Fix LevelDB build when asserts are enabled in release builds. (#367).
  • Change std::uint64_t to uint64_t (#354).
  • Fixes a bug encountered when reading records from leveldb files that have been split, as in a [] input task split.
  • Deleted redundant null ptr check prior to delete. (#338).
  • Fix signed/unsigned mismatch on VC++ builds.
  • Putting build artifacts in subdirectory.
  • Added continuous build integration via Travis CI.
  • log compaction output file's level along with number.
  • Misc. improvements to README file.
  • Fix Android/MIPS build (#115).
  • Only compiling TrimSpace on linux (#310).
  • Use xcrun to determine Xcode.app path instead of using a hardcoded path.
  • Add "approximate-memory-usage" property to leveldb::DB::GetProperty.
  • Add leveldb::Cache::Prune.
  • Fix size_t/int comparison/conversion issues.
  • Added leveldb::Status::IsInvalidArgument() method.
  • Suppress error reporting after seeking but before a valid First or Full record is encountered.
  • #include -> (#280).
  • Now attempts to reuse the preceding MANIFEST and log file when re-opened.
  • Add benchmark that measures cost of repeatedly opening the database.
  • Added a new fault injection test.
  • Add arm64 support to leveldb.

v1.18

9 years ago
  • Update version number to 1.18
  • Replace the basic fprintf call with a call to fwrite in order to work around the apparent compiler optimization/rewrite failure that we are seeing with the new toolchain/iOS SDKs provided with Xcode6 and iOS8.
  • Fix ALL the header guards.
  • Createed a README.md with the LevelDB project description.
  • A new CONTRIBUTING file.
  • Don't implicitly convert uint64_t to size_t or int. Either preserve it as uint64_t, or explicitly cast. This fixes MSVC warnings about possible value truncation when compiling this code in Chromium.
  • Added a DumpFile() library function that encapsulates the guts of the "leveldbutil dump" command. This will allow clients to dump data to their log files instead of stdout. It will also allow clients to supply their own environment.
  • leveldb: Remove unused function 'ConsumeChar'.
  • leveldbutil: Remove unused member variables from WriteBatchItemPrinter.
  • OpenBSD, NetBSD and DragonflyBSD have _LITTLE_ENDIAN, so define PLATFORM_IS_LITTLE_ENDIAN like on FreeBSD. This fixes:
    • issue #143
    • issue #198
    • issue #249
  • Switch from <cstdatomic> to <atomic>. The former never made it into the standard and doesn't exist in modern gcc versions at all. The later contains everything that leveldb was using from the former. This problem was noticed when porting to Portable Native Client where no memory barrier is defined. The fact that <cstdatomic> is missing normally goes unnoticed since memory barriers are defined for most architectures.
  • Make Hash() treat its input as unsigned. Before this change LevelDB files from platforms with different signedness of char were not compatible. This change fixes: issue #243
  • Verify checksums of index/meta/filter blocks when paranoid_checks set.
  • Invoke all tools for iOS with xcrun. (This was causing problems with the new XCode 5.1.1 image on pulse.)
  • include <sys/stat.h> only once, and fix the following linter warning: "Found C system header after C++ system header"
  • When encountering a corrupted table file, return Status::Corruption instead of Status::InvalidArgument.
  • Support cygwin as build platform, patch is from https://code.google.com/p/leveldb/issues/detail?id=188
  • Fix typo, merge patch from https://code.google.com/p/leveldb/issues/detail?id=159
  • Fix typos and comments, and address the following two issues:
    • issue #166
    • issue #241
  • Add missing db synchronize after "fillseq" in the benchmark.
  • Removed unused variable in SeekRandom: value (issue #201)

v1.3

9 years ago
  • build shared libraries
  • updated version to 1.3
  • add Status accessors

v1.4

9 years ago

In particular, we add a new FilterPolicy class. An instance of this class can be supplied in Options when opening a database. If supplied, the instance is used to generate summaries of keys (e.g., a bloom filter) which are placed in sstables. These summaries are consulted by DB::Get() so we can avoid reading sstable blocks that are guaranteed to not contain the key we are looking for.

This change provides one implementation of FilterPolicy based on bloom filters.

Other changes:

  • Updated version number to 1.4.
  • Some build tweaks.
  • C binding for CompactRange.
  • A few more benchmarks: deleteseq, deleterandom, readmissing, seekrandom.
  • Minor .gitignore update.

v1.6

9 years ago

Highlights

  • Mmap at most 1000 files on Posix to improve performance for large databases.
  • Support for more architectures (thanks to Alexander K.)

Building and porting

  • HP/UX support (issue #132)
  • AtomicPointer for ia64 (issue #129)
  • Sparc v9 support (issue #130)
  • Atomic ops for powerpc
  • Use -fno-builtin-memcmp only when using g++
  • Simplify IOS build rules (issue #120)
  • Use CXXFLAGS instead of CFLAGS when invoking C++ compiler (issue #124)
  • Fix snappy shared library problem (issue #100)
  • Fix shared library installation path regression
  • Endian-ness detection tweak for FreeBSD

Bug fixes

  • Stop ignoring FLAGS_open_files in db_bench
  • Make bloom test behavior agnostic to endian-ness

Performance

  • Limit number of mmapped files to 1000 to improve perf for large dbs
  • Do not delay for 1 second on shutdown path (issue #131)

Misc

  • Make InMemoryEnv return a no-op logger
  • C binding now has a wrapper for free (issue #123)
  • Add thread-safety annotations
  • Added an in-process lock table (issue #126)
  • Make RandomAccessFile and SequentialFile non-copyable

v1.7

9 years ago

Details:

  • Fix shared library building.
  • Reorganize linking commands so flags like --as-needed can be passed.
  • C binding exports version numbers.
  • Fix small typos in documention.