mirror of
https://github.com/isar/libmdbx.git
synced 2025-04-02 15:22:58 +08:00
mdbx: basic cleanup from dead github and another corrupted services.
This commit is contained in:
parent
1a471ed04b
commit
ed23956e11
@ -1,22 +0,0 @@
|
||||
version: 2
|
||||
jobs:
|
||||
build:
|
||||
branches:
|
||||
ignore:
|
||||
- gh-pages
|
||||
docker:
|
||||
- image: circleci/buildpack-deps:20.04
|
||||
environment:
|
||||
- TESTDB: /tmp/test.db
|
||||
- TESTLOG: /tmp/test.log
|
||||
steps:
|
||||
- checkout
|
||||
- run: ulimit -c unlimited && MDBX_BUILD_OPTIONS="-DNDEBUG=1 -DMDBX_FORCE_ASSERTIONS=1" make test-ubsan
|
||||
- run:
|
||||
command: |
|
||||
mkdir -p /tmp/artifacts
|
||||
mv -t /tmp/artifacts $TESTLOG $TESTDB core.*
|
||||
when: on_fail
|
||||
- store_artifacts:
|
||||
path: /tmp/artifacts
|
||||
destination: test-artifacts
|
@ -1,6 +0,0 @@
|
||||
freebsd_instance:
|
||||
image_family: freebsd-12-1-snap
|
||||
|
||||
task:
|
||||
install_script: pkg install -y gmake bash git
|
||||
script: git fetch --tags --force && gmake MDBX_BUILD_OPTIONS="-DNDEBUG=1 -DMDBX_FORCE_ASSERTIONS=1" check
|
12
.github/FUNDING.yml
vendored
12
.github/FUNDING.yml
vendored
@ -1,12 +0,0 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: ['https://sobe.ru/na/libmdbx']
|
11
.github/actions/spelling/excludes.txt
vendored
11
.github/actions/spelling/excludes.txt
vendored
@ -1,11 +0,0 @@
|
||||
\.def$
|
||||
^AUTHORS$
|
||||
^\.github/FUNDING\.yml$
|
||||
^\.github/actions/spelling/
|
||||
^\.github/workflows/ci\.yml$
|
||||
^\.github/workflows/coverity\.yml$
|
||||
^\.github/workflows/doxygen-github-pages\.yml$
|
||||
^\.gitignore$
|
||||
^\.travis\.yml$
|
||||
^packages/buildroot/
|
||||
^CMakeSettings\.json$
|
2030
.github/actions/spelling/expect.txt
vendored
2030
.github/actions/spelling/expect.txt
vendored
File diff suppressed because it is too large
Load Diff
6
.github/actions/spelling/patterns.txt
vendored
6
.github/actions/spelling/patterns.txt
vendored
@ -1,6 +0,0 @@
|
||||
# numbers
|
||||
(?:[\\0][xX]|[uU]\+|#)[0-9a-fA-FgGrR]{2,}[uU]?[lL]{0,2}\b
|
||||
# avoid false positive
|
||||
-{1,2}force\W
|
||||
# flags
|
||||
(?!\w)-{1,2}[fDW]
|
69
.github/workflows/MinGW.yml
vendored
69
.github/workflows/MinGW.yml
vendored
@ -1,69 +0,0 @@
|
||||
name: MinGW
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches: mingw
|
||||
paths-ignore:
|
||||
- '.circleci/**'
|
||||
- '.github/actions/spelling/**'
|
||||
- 'docs/**'
|
||||
- 'packages**'
|
||||
- .cirrus.yml
|
||||
- .clang-format
|
||||
- .gitignore
|
||||
- .travis.yml
|
||||
- AUTHORS
|
||||
- COPYRIGHT
|
||||
- ChangeLog.md
|
||||
- LICENSE
|
||||
- README.md
|
||||
- appveyor.yml
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: [windows-latest]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: fetch tags
|
||||
run: git fetch --unshallow --tags --prune --force
|
||||
- name: append PATH
|
||||
run: echo 'C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/bin' >> $GITHUB_PATH
|
||||
- name: update mingw64
|
||||
# wanna version >= 10.2
|
||||
run: choco upgrade mingw -y --no-progress && refreshenv
|
||||
- name: build-make
|
||||
shell: bash
|
||||
run: |
|
||||
CC=gcc CXX=g++ make MDBX_BUILD_OPTIONS=-DMDBX_DEBUG=1 all build-test tools-static
|
||||
- name: configure-dll
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir build-dll && cd build-dll && \
|
||||
cmake -G "MinGW Makefiles" -DMDBX_BUILD_SHARED_LIBRARY:BOOL=ON -DMDBX_INSTALL_STATIC:BOOL=OFF -DMDBX_ENABLE_TESTS:BOOL=ON ..
|
||||
- name: build-dll
|
||||
shell: bash
|
||||
run: cd build-dll && cmake --build .
|
||||
- name: test-dll
|
||||
shell: bash
|
||||
run: |
|
||||
export "PATH=/c/programdata/chocolatey/lib/mingw/tools/install/mingw64/bin:$PATH" && \
|
||||
cd build-dll && \
|
||||
./mdbx_test.exe --progress --console=no --pathname=test.db --dont-cleanup-after basic && \
|
||||
./mdbx_chk.exe -nvv test.db
|
||||
- name: configure-static
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir build-static && cd build-static && \
|
||||
cmake -G "MinGW Makefiles" -DMDBX_BUILD_SHARED_LIBRARY:BOOL=OFF -DMDBX_INSTALL_STATIC:BOOL=ON -DMDBX_ENABLE_TESTS:BOOL=ON ..
|
||||
- name: build-static
|
||||
shell: bash
|
||||
run: |
|
||||
cd build-static && cmake --build .
|
||||
- name: run-test
|
||||
shell: bash
|
||||
run: |
|
||||
export "PATH=/c/programdata/chocolatey/lib/mingw/tools/install/mingw64/bin:$PATH" && \
|
||||
cd build-static && \
|
||||
./mdbx_test.exe --progress --console=no --pathname=test.db --dont-cleanup-after basic && \
|
||||
./mdbx_chk.exe -nvv test.db
|
41
.github/workflows/android.yml
vendored
41
.github/workflows/android.yml
vendored
@ -1,41 +0,0 @@
|
||||
name: Android
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches-ignore:
|
||||
- coverity_scan
|
||||
paths-ignore:
|
||||
- '.circleci/**'
|
||||
- '.github/actions/spelling/**'
|
||||
- 'docs/**'
|
||||
- 'packages**'
|
||||
- .cirrus.yml
|
||||
- .clang-format
|
||||
- .gitignore
|
||||
- .travis.yml
|
||||
- AUTHORS
|
||||
- COPYRIGHT
|
||||
- ChangeLog.md
|
||||
- LICENSE
|
||||
- README.md
|
||||
- appveyor.yml
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: fetch tags
|
||||
run: git fetch --unshallow --tags --prune --force
|
||||
- uses: nttld/setup-ndk@v1
|
||||
id: setup-ndk
|
||||
with:
|
||||
ndk-version: r21e
|
||||
add-to-path: true
|
||||
- name: configure
|
||||
env:
|
||||
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||
run: cmake --version && cmake --toolchain "${{ steps.setup-ndk.outputs.ndk-path }}/build/cmake/android.toolchain.cmake"
|
||||
- name: build
|
||||
run: cmake --build .
|
40
.github/workflows/ci.yml
vendored
40
.github/workflows/ci.yml
vendored
@ -1,40 +0,0 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches-ignore:
|
||||
- coverity_scan
|
||||
paths-ignore:
|
||||
- '.circleci/**'
|
||||
- '.github/actions/spelling/**'
|
||||
- 'docs/**'
|
||||
- 'packages**'
|
||||
- .cirrus.yml
|
||||
- .clang-format
|
||||
- .gitignore
|
||||
- .travis.yml
|
||||
- AUTHORS
|
||||
- COPYRIGHT
|
||||
- ChangeLog.md
|
||||
- LICENSE
|
||||
- README.md
|
||||
- appveyor.yml
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
#, windows-latest
|
||||
os: [ubuntu-latest, macos-latest, ubuntu-18.04]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: fetch tags
|
||||
run: git fetch --unshallow --tags --prune --force
|
||||
- name: make check
|
||||
run: make MDBX_BUILD_OPTIONS="-DNDEBUG=1 -DMDBX_FORCE_ASSERTIONS=1" --keep-going all && MALLOC_CHECK_=7 MALLOC_PERTURB_=42 make MDBX_BUILD_OPTIONS="-DNDEBUG=1 -DMDBX_FORCE_ASSERTIONS=1" --keep-going check
|
||||
shell: bash
|
||||
- name: if_failure
|
||||
if: failure()
|
||||
run: for F in *.err; do echo --- $F; cat $F; done
|
55
.github/workflows/coverity.yml
vendored
55
.github/workflows/coverity.yml
vendored
@ -1,55 +0,0 @@
|
||||
name: Coverity
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: coverity_scan
|
||||
paths-ignore:
|
||||
- '.circleci/**'
|
||||
- '.github/actions/spelling/**'
|
||||
- 'docs/**'
|
||||
- 'packages**'
|
||||
- .cirrus.yml
|
||||
- .clang-format
|
||||
- .gitignore
|
||||
- .travis.yml
|
||||
- AUTHORS
|
||||
- COPYRIGHT
|
||||
- ChangeLog.md
|
||||
- LICENSE
|
||||
- README.md
|
||||
- appveyor.yml
|
||||
|
||||
env:
|
||||
COVERITY_SCAN_PROJECT_NAME: 'ReOpen/libmdbx'
|
||||
COVERITY_SCAN_TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
|
||||
COVERITY_SCAN_BUILD_COMMAND: 'make MDBX_BUILD_OPTIONS=-DMDBX_DEBUG=2 CXXSTD=-std=gnu++17 build-test'
|
||||
COVERITY_SCAN_NOTIFICATION_EMAIL: 'leo@yuriev.ru'
|
||||
COVERITY_UNSUPPORTED_COMPILER_INVOCATION: 1
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: fetch tags
|
||||
run: git fetch --unshallow --tags --prune --force
|
||||
- name: Download Coverity Build Tool
|
||||
run: |
|
||||
wget -q https://scan.coverity.com/download/cxx/linux64 --post-data "token=$COVERITY_SCAN_TOKEN&project=$COVERITY_SCAN_PROJECT_NAME" -O cov-analysis-linux64.tar.gz
|
||||
mkdir cov-analysis-linux64
|
||||
tar xzf cov-analysis-linux64.tar.gz --strip 1 -C cov-analysis-linux64
|
||||
- name: Build with cov-build
|
||||
run: |
|
||||
export PATH=`pwd`/cov-analysis-linux64/bin:$PATH
|
||||
cov-build --dir cov-int $COVERITY_SCAN_BUILD_COMMAND
|
||||
- name: Submit the result to Coverity Scan
|
||||
run: |
|
||||
tar czvf libmdbx.tgz cov-int
|
||||
curl \
|
||||
--form project=$COVERITY_SCAN_PROJECT_NAME \
|
||||
--form token=$COVERITY_SCAN_TOKEN \
|
||||
--form email=$COVERITY_SCAN_NOTIFICATION_EMAIL \
|
||||
--form file=@libmdbx.tgz \
|
||||
--form version=$GITHUB_SHA \
|
||||
--form description="GithubActionCI $GITHUB_ACTION" \
|
||||
https://scan.coverity.com/builds?project=$COVERITY_SCAN_PROJECT_NAME
|
29
.github/workflows/doxygen-github-pages.yml
vendored
29
.github/workflows/doxygen-github-pages.yml
vendored
@ -1,29 +0,0 @@
|
||||
name: doxygen-github-pages
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: master
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Set Actions Allow Unsecure Commands (temporary)
|
||||
run: |
|
||||
echo "ACTIONS_ALLOW_UNSECURE_COMMANDS=true" >> $GITHUB_ENV
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2.3.1
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Install doxygen
|
||||
run: sudo apt install doxygen graphviz fonts-freefont-ttf
|
||||
- name: Build html docs
|
||||
run: make doxygen && cp -R .circleci docs/html/
|
||||
- name: Deploy gh-pages
|
||||
uses: JamesIves/github-pages-deploy-action@3.5.7
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
BRANCH: gh-pages
|
||||
FOLDER: docs/html
|
||||
CLEAN: true
|
||||
SINGLE_COMMIT: true
|
58
.github/workflows/release-assets.yml
vendored
58
.github/workflows/release-assets.yml
vendored
@ -1,58 +0,0 @@
|
||||
# Based on the https://github.com/actions/upload-release-asset example
|
||||
|
||||
on:
|
||||
push:
|
||||
# Sequence of patterns matched against refs/tags
|
||||
tags:
|
||||
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
|
||||
|
||||
name: Upload Release Asset
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Upload Release Asset
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Build assets
|
||||
run: |
|
||||
make release-assets
|
||||
- id: name
|
||||
run: |
|
||||
echo "::set-output name=tarball::$(ls *.tar.gz)"
|
||||
echo "::set-output name=zip::$(ls *.zip)"
|
||||
echo "::set-output name=suffix_unix::$(sed 's|^\([0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\)\.\(.*\)$|\1|' dist/VERSION.txt)"
|
||||
echo "::set-output name=suffix_dos::$(sed 's|^\([0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\)\.\(.*\)$|\1|' dist/VERSION.txt | tr . _)"
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: ${{ github.ref }}
|
||||
release_name: Release ${{ github.ref }}
|
||||
draft: true
|
||||
prerelease: true
|
||||
- name: Upload tarball
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ${{ steps.name.outputs.tarball }}
|
||||
asset_name: libmdbx-amalgamated-${{ steps.name.outputs.suffix_unix }}.tar.gz
|
||||
# asset_label: Amalgamated source tarball
|
||||
asset_content_type: application/tar+gzip
|
||||
- name: Upload zip
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: ${{ steps.name.outputs.zip }}
|
||||
asset_name: libmdbx-amalgamated-${{ steps.name.outputs.suffix_dos }}.zip
|
||||
# asset_label: Amalgamated source zip-archive
|
||||
asset_content_type: application/zip
|
14
.github/workflows/spelling.yml
vendored
14
.github/workflows/spelling.yml
vendored
@ -1,14 +0,0 @@
|
||||
name: Spell checking
|
||||
on:
|
||||
push:
|
||||
branches: spelling
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 5
|
||||
- uses: check-spelling/check-spelling@main
|
89
.travis.yml
89
.travis.yml
@ -1,89 +0,0 @@
|
||||
language: c cpp
|
||||
sudo: false
|
||||
|
||||
env:
|
||||
global:
|
||||
- secure: "M+W+heGGyRQJoBq2W0uqWVrpL4KBXmL0MFL7FSs7f9vmAaDyEgziUXeZRj3GOKzW4kTef3LpIeiu9SmvqSMoQivGGiomZShqPVl045o/OUgRCAT7Al1RLzEZ0efSHpIPf0PZ6byEf6GR2ML76OfuL6JxTVdnz8iVyO2sgLE1HbX1VeB+wgd/jfMeOBhCCXskfK6MLyZihfMYsiYZYSaV98ZDhDLSlzuuRIgzb0bMi8aL6AErs0WLW0NelRBeHkKPYfAUc85pdQHscgrJw6Rh/zT6+8BQ/q5f4IgWhiu4xoRg3Ngl7SNoedRQh93ADM3UG2iGl6HDFpVORaXcFWKAtuYY+kHQ0HB84BRYpQmeBuXNpltsfxQ3d1Q3u0RlE45zRvmr2+X1mFnkcNUAWISLPbsOUlriDQM8irGwRpho77/uYnRC00bJsHW//s6+uPf9zrAw1nI4f0y3PAWukGF/xs6HAI3FZPsuSSnx18Tj3Opgbc9Spop+V3hkhdiJoPGpNKTkFX4ZRXfkPgoRVJmtp4PpbpH0Ps/mCriKjMEfGGi0HcVCi0pEGLXiecdqJ5KPg5+22zNycEujQBJcNTKd9shN+R3glrbmhAxTEzGdGwxXXJ2ybwJ2PWJLMYZ7g98nLyX+uQPaA3BlsbYJHNeS5283/9pJsd9DzfHKsN2nFSc="
|
||||
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- cmake
|
||||
- clang-format
|
||||
update: true
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- os: linux
|
||||
dist: focal
|
||||
compiler: gcc
|
||||
env: CC=cc CXX=c++
|
||||
- os: linux
|
||||
dist: focal
|
||||
compiler: clang
|
||||
env: CC=clang CXX=clang++
|
||||
- os: linux
|
||||
dist: bionic
|
||||
compiler: gcc
|
||||
env: CC=cc CXX=c++
|
||||
- os: linux
|
||||
dist: bionic
|
||||
compiler: clang
|
||||
env: CC=clang CXX=clang++
|
||||
- os: linux
|
||||
dist: xenial
|
||||
compiler: gcc
|
||||
env: CC=cc CXX=c++
|
||||
- os: linux
|
||||
dist: xenial
|
||||
compiler: clang
|
||||
env: CC=clang CXX=clang++
|
||||
- os: osx
|
||||
osx_image: xcode11.3
|
||||
env: CC=cc CXX=c++
|
||||
- os: osx
|
||||
osx_image: xcode9.4
|
||||
env: CC=cc CXX=c++
|
||||
|
||||
before_script: |
|
||||
if [ "${TRAVIS_BRANCH}" = "coverity_scan" ]; then
|
||||
# call Coverity Scan manually of addons.coverity_scan for first job only
|
||||
if [ "${TRAVIS_JOB_NUMBER}" = "${TRAVIS_BUILD_NUMBER}.1" ]; then
|
||||
export COVERITY_SCAN_BRANCH=1
|
||||
echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-
|
||||
curl -s 'https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh' -o coverity_scan.sh
|
||||
else
|
||||
echo 'echo "Skip CoverityScan for unrelated os/compiler"' > coverity_scan.sh
|
||||
fi
|
||||
fi
|
||||
|
||||
script: |
|
||||
${CC} --version
|
||||
${CXX} --version
|
||||
git fetch --unshallow --tags --prune --force || exit 1
|
||||
if [ ! -s ./coverity_scan.sh ]; then
|
||||
make --keep-going all && MALLOC_CHECK_=7 MALLOC_PERTURB_=42 make --keep-going check
|
||||
else
|
||||
COVERITY_UNSUPPORTED_COMPILER_INVOCATION=1 \
|
||||
COVERITY_SCAN_PROJECT_NAME="ReOpen/libmdbx" \
|
||||
COVERITY_SCAN_NOTIFICATION_EMAIL="leo@yuriev.ru" \
|
||||
COVERITY_SCAN_BUILD_COMMAND_PREPEND="" \
|
||||
COVERITY_SCAN_BUILD_COMMAND="make MDBX_BUILD_OPTIONS=-DMDBX_DEBUG=2 CXXSTD=-std=gnu++17 build-test" \
|
||||
COVERITY_SCAN_BRANCH_PATTERN="$TRAVIS_BRANCH" \
|
||||
bash ./coverity_scan.sh || cat cov-int/scm_log.txt
|
||||
fi
|
||||
|
||||
after_script: |
|
||||
if [ "${TRAVIS_BRANCH}" != "coverity_scan" -a "${TRAVIS_JOB_NUMBER}" = "${TRAVIS_BUILD_NUMBER}.1" ] && make reformat && [[ -n $(git diff) ]]; then
|
||||
echo "You must run 'make reformat' before submitting a pull request"
|
||||
echo "-------------------------------------------------------------------------------"
|
||||
git diff
|
||||
sleep 1
|
||||
echo "-------------------------------------------------------------------------------"
|
||||
sleep 1
|
||||
exit -1
|
||||
fi
|
||||
echo "-------------------------------------------------------------------------------"
|
||||
sleep 1
|
@ -14,7 +14,7 @@
|
||||
|
||||
##
|
||||
## libmdbx = { Revised and extended descendant of Symas LMDB. }
|
||||
## Please see README.md at https://github.com/erthink/libmdbx
|
||||
## Please see README.md at https://gitflic.ru/project/erthink/libmdbx
|
||||
##
|
||||
## Libmdbx is superior to LMDB in terms of features and reliability,
|
||||
## not inferior in performance. libmdbx works on Linux, FreeBSD, MacOS X
|
||||
|
154
ChangeLog.md
154
ChangeLog.md
@ -3,17 +3,17 @@ ChangeLog
|
||||
|
||||
### TODO
|
||||
|
||||
- [Engage an "overlapped I/O" on Windows](https://github.com/erthink/libmdbx/issues/224).
|
||||
- [Simple careful mode for working with corrupted DB](https://github.com/erthink/libmdbx/issues/223).
|
||||
- [Move most of `mdbx_chk` functional to the library API](https://github.com/erthink/libmdbx/issues/204).
|
||||
- [Replace SRW-lock on Windows to allow shrink DB with `MDBX_NOTLS` option](https://github.com/erthink/libmdbx/issues/210).
|
||||
- [More flexible support of asynchronous runtime/framework(s)](https://github.com/erthink/libmdbx/issues/200).
|
||||
- [Migration guide from LMDB to MDBX](https://github.com/erthink/libmdbx/issues/199).
|
||||
- [Get rid of dirty-pages list in MDBX_WRITEMAP mode](https://github.com/erthink/libmdbx/issues/193).
|
||||
- [Large/Overflow pages accounting for dirty-room](https://github.com/erthink/libmdbx/issues/192).
|
||||
- [Support for RAW devices](https://github.com/erthink/libmdbx/issues/124).
|
||||
- [Support MessagePack for Keys & Values](https://github.com/erthink/libmdbx/issues/115).
|
||||
- [Engage new terminology](https://github.com/erthink/libmdbx/issues/137).
|
||||
- [Engage an "overlapped I/O" on Windows](https://erased_by_erased_by_github.none/libmdbx/issues/224).
|
||||
- [Simple careful mode for working with corrupted DB](https://erased_by_erased_by_github.none/libmdbx/issues/223).
|
||||
- [Move most of `mdbx_chk` functional to the library API](https://erased_by_erased_by_github.none/libmdbx/issues/204).
|
||||
- [Replace SRW-lock on Windows to allow shrink DB with `MDBX_NOTLS` option](https://erased_by_erased_by_github.none/libmdbx/issues/210).
|
||||
- [More flexible support of asynchronous runtime/framework(s)](https://erased_by_erased_by_github.none/libmdbx/issues/200).
|
||||
- [Migration guide from LMDB to MDBX](https://erased_by_erased_by_github.none/libmdbx/issues/199).
|
||||
- [Get rid of dirty-pages list in MDBX_WRITEMAP mode](https://erased_by_erased_by_github.none/libmdbx/issues/193).
|
||||
- [Large/Overflow pages accounting for dirty-room](https://erased_by_erased_by_github.none/libmdbx/issues/192).
|
||||
- [Support for RAW devices](https://erased_by_erased_by_github.none/libmdbx/issues/124).
|
||||
- [Support MessagePack for Keys & Values](https://erased_by_erased_by_github.none/libmdbx/issues/115).
|
||||
- [Engage new terminology](https://erased_by_erased_by_github.none/libmdbx/issues/137).
|
||||
- Packages for [Astra Linux](https://astralinux.ru/), [ALT Linux](https://www.altlinux.org/), [ROSA Linux](https://www.rosalinux.ru/), etc.
|
||||
|
||||
|
||||
@ -48,7 +48,7 @@ Minors:
|
||||
|
||||
The stable release with the complete workaround for an incoherence flaw of Linux unified page/buffer cache.
|
||||
Nonetheless the cause for this trouble may be an issue of Intel CPU cache/MESI.
|
||||
See [issue#269](https://github.com/erthink/libmdbx/issues/269) for more information.
|
||||
See [issue#269](https://erased_by_github.none/libmdbx/issues/269) for more information.
|
||||
|
||||
Acknowledgements:
|
||||
|
||||
@ -57,8 +57,8 @@ Acknowledgements:
|
||||
|
||||
Fixes:
|
||||
|
||||
- [Added complete workaround](https://github.com/erthink/libmdbx/issues/269) for an incoherence flaw of Linux unified page/buffer cache.
|
||||
- [Fixed](https://github.com/erthink/libmdbx/issues/272) cursor reusing for read-only transactions.
|
||||
- [Added complete workaround](https://erased_by_github.none/libmdbx/issues/269) for an incoherence flaw of Linux unified page/buffer cache.
|
||||
- [Fixed](https://erased_by_github.none/libmdbx/issues/272) cursor reusing for read-only transactions.
|
||||
- Fixed copy&paste typo inside `mdbx::cursor::find_multivalue()`.
|
||||
|
||||
Minors:
|
||||
@ -73,7 +73,7 @@ Minors:
|
||||
## v0.11.5 at 2022-02-23
|
||||
|
||||
The release with the temporary hotfix for a flaw of Linux unified page/buffer cache.
|
||||
See [issue#269](https://github.com/erthink/libmdbx/issues/269) for more information.
|
||||
See [issue#269](https://erased_by_github.none/libmdbx/issues/269) for more information.
|
||||
|
||||
Acknowledgements:
|
||||
|
||||
@ -83,10 +83,10 @@ Acknowledgements:
|
||||
|
||||
Fixes:
|
||||
|
||||
- [Added hotfix](https://github.com/erthink/libmdbx/issues/269) for a flaw of Linux unified page/buffer cache.
|
||||
- [Fixed/Reworked](https://github.com/erthink/libmdbx/pull/270) move-assignment operators for "managed" classes of C++ API.
|
||||
- [Added hotfix](https://erased_by_github.none/libmdbx/issues/269) for a flaw of Linux unified page/buffer cache.
|
||||
- [Fixed/Reworked](https://erased_by_github.none/libmdbx/pull/270) move-assignment operators for "managed" classes of C++ API.
|
||||
- Fixed potential `SIGSEGV` while open DB with overrided non-default page size.
|
||||
- [Made](https://github.com/erthink/libmdbx/issues/267) `mdbx_env_open()` idempotence in failure cases.
|
||||
- [Made](https://erased_by_github.none/libmdbx/issues/267) `mdbx_env_open()` idempotence in failure cases.
|
||||
- Refined/Fixed pages reservation inside `mdbx_update_gc()` to avoid non-reclamation in a rare cases.
|
||||
- Fixed typo in a retained space calculation for the hsr-callback.
|
||||
|
||||
@ -119,15 +119,15 @@ New features, extensions and improvements:
|
||||
Fixes:
|
||||
|
||||
- Fixed handling `MDBX_opt_rp_augment_limit` for GC's records from huge transactions (Erigon/Akula/Ethereum).
|
||||
- [Fixed](https://github.com/erthink/libmdbx/issues/258) build on Android (avoid including `sys/sem.h`).
|
||||
- [Fixed](https://github.com/erthink/libmdbx/pull/261) missing copy assignment operator for `mdbx::move_result`.
|
||||
- [Fixed](https://erased_by_github.none/libmdbx/issues/258) build on Android (avoid including `sys/sem.h`).
|
||||
- [Fixed](https://erased_by_github.none/libmdbx/pull/261) missing copy assignment operator for `mdbx::move_result`.
|
||||
- Fixed missing `&` for `std::ostream &operator<<()` overloads.
|
||||
- Fixed unexpected `EXDEV` (Cross-device link) error from `mdbx_env_copy()`.
|
||||
- Fixed base64 encoding/decoding bugs in auxillary C++ API.
|
||||
- Fixed overflow of `pgno_t` during checking PNL on 64-bit platforms.
|
||||
- [Fixed](https://github.com/erthink/libmdbx/issues/260) excessive PNL checking after sort for spilling.
|
||||
- [Fixed](https://erased_by_github.none/libmdbx/issues/260) excessive PNL checking after sort for spilling.
|
||||
- Reworked checking `MAX_PAGENO` and DB upper-size geometry limit.
|
||||
- [Fixed](https://github.com/erthink/libmdbx/issues/265) build for some combinations of versions of MSVC and Windows SDK.
|
||||
- [Fixed](https://erased_by_github.none/libmdbx/issues/265) build for some combinations of versions of MSVC and Windows SDK.
|
||||
|
||||
Minors:
|
||||
|
||||
@ -154,10 +154,10 @@ Acknowledgements:
|
||||
|
||||
New features, extensions and improvements:
|
||||
|
||||
- [Added](https://github.com/erthink/libmdbx/issues/236) `mdbx_cursor_get_batch()`.
|
||||
- [Added](https://github.com/erthink/libmdbx/issues/250) `MDBX_SET_UPPERBOUND`.
|
||||
- [Added](https://erased_by_github.none/libmdbx/issues/236) `mdbx_cursor_get_batch()`.
|
||||
- [Added](https://erased_by_github.none/libmdbx/issues/250) `MDBX_SET_UPPERBOUND`.
|
||||
- C++ API is finalized now.
|
||||
- The GC update stage has been [significantly speeded](https://github.com/erthink/libmdbx/issues/254) when fixing huge Erigon's transactions (Ethereum ecosystem).
|
||||
- The GC update stage has been [significantly speeded](https://erased_by_github.none/libmdbx/issues/254) when fixing huge Erigon's transactions (Ethereum ecosystem).
|
||||
|
||||
Fixes:
|
||||
|
||||
@ -168,12 +168,12 @@ Minors:
|
||||
|
||||
- Fixed returning `MDBX_RESULT_TRUE` (unexpected -1) from `mdbx_env_set_option()`.
|
||||
- Added `mdbx_env_get_syncbytes()` and `mdbx_env_get_syncperiod()`.
|
||||
- [Clarified](https://github.com/erthink/libmdbx/pull/249) description of `MDBX_INTEGERKEY`.
|
||||
- [Clarified](https://erased_by_github.none/libmdbx/pull/249) description of `MDBX_INTEGERKEY`.
|
||||
- Reworked/simplified `mdbx_env_sync_internal()`.
|
||||
- [Fixed](https://github.com/erthink/libmdbx/issues/248) extra assertion inside `mdbx_cursor_put()` for `MDBX_DUPFIXED` cases.
|
||||
- [Fixed](https://erased_by_github.none/libmdbx/issues/248) extra assertion inside `mdbx_cursor_put()` for `MDBX_DUPFIXED` cases.
|
||||
- Avoiding extra looping inside `mdbx_env_info_ex()`.
|
||||
- Explicitly enabled core dumps from stochastic tests scripts on Linux.
|
||||
- [Fixed](https://github.com/erthink/libmdbx/issues/253) `mdbx_override_meta()` to avoid false-positive assertions.
|
||||
- [Fixed](https://erased_by_github.none/libmdbx/issues/253) `mdbx_override_meta()` to avoid false-positive assertions.
|
||||
- For compatibility reverted returning `MDBX_ENODATA`for some cases.
|
||||
|
||||
|
||||
@ -189,10 +189,10 @@ Acknowledgements:
|
||||
|
||||
Fixes:
|
||||
|
||||
- [Fixed compilation](https://github.com/erthink/libmdbx/pull/239) with `devtoolset-9` on CentOS/RHEL 7.
|
||||
- [Fixed unexpected `MDBX_PROBLEM` error](https://github.com/erthink/libmdbx/issues/242) because of update an obsolete meta-page.
|
||||
- [Fixed returning `MDBX_NOTFOUND` error](https://github.com/erthink/libmdbx/issues/243) in case an inexact value found for `MDBX_GET_BOTH` operation.
|
||||
- [Fixed compilation](https://github.com/erthink/libmdbx/issues/245) without kernel/libc-devel headers.
|
||||
- [Fixed compilation](https://erased_by_github.none/libmdbx/pull/239) with `devtoolset-9` on CentOS/RHEL 7.
|
||||
- [Fixed unexpected `MDBX_PROBLEM` error](https://erased_by_github.none/libmdbx/issues/242) because of update an obsolete meta-page.
|
||||
- [Fixed returning `MDBX_NOTFOUND` error](https://erased_by_github.none/libmdbx/issues/243) in case an inexact value found for `MDBX_GET_BOTH` operation.
|
||||
- [Fixed compilation](https://erased_by_github.none/libmdbx/issues/245) without kernel/libc-devel headers.
|
||||
|
||||
Minors:
|
||||
|
||||
@ -209,7 +209,7 @@ Minors:
|
||||
|
||||
The database format signature has been changed to prevent
|
||||
forward-interoperability with an previous releases, which may lead to a
|
||||
[false positive diagnosis of database corruption](https://github.com/erthink/libmdbx/issues/238)
|
||||
[false positive diagnosis of database corruption](https://erased_by_github.none/libmdbx/issues/238)
|
||||
due to flaws of an old library versions.
|
||||
|
||||
This change is mostly invisible:
|
||||
@ -258,7 +258,7 @@ Acknowledgements:
|
||||
Fixes:
|
||||
|
||||
- Fixed possibility of looping update GC during transaction commit (no public issue since the problem was discovered inside [Positive Technologies](https://www.ptsecurity.ru)).
|
||||
- Fixed `#pragma pack` to avoid provoking some compilers to generate code with [unaligned access](https://github.com/erthink/libmdbx/issues/235).
|
||||
- Fixed `#pragma pack` to avoid provoking some compilers to generate code with [unaligned access](https://erased_by_github.none/libmdbx/issues/235).
|
||||
- Fixed `noexcept` for potentially throwing `txn::put()` of C++ API.
|
||||
|
||||
Minors:
|
||||
@ -284,7 +284,7 @@ Extensions and improvements:
|
||||
|
||||
Fixes:
|
||||
|
||||
- Always setup `madvise` while opening DB (fixes https://github.com/erthink/libmdbx/issues/231).
|
||||
- Always setup `madvise` while opening DB (fixes https://erased_by_github.none/libmdbx/issues/231).
|
||||
- Fixed checking legacy `P_DIRTY` flag (`0x10`) for nested/sub-pages.
|
||||
|
||||
Minors:
|
||||
@ -305,11 +305,11 @@ Acknowledgements:
|
||||
- [Lionel Debroux](https://github.com/debrouxl) for fuzzing tests and reporting bugs.
|
||||
- [Sergey Fedotov](https://github.com/SergeyFromHell/) for [`node-mdbx` NodeJS bindings](https://www.npmjs.com/package/node-mdbx).
|
||||
- [Kris Zyp](https://github.com/kriszyp) for [`lmdbx-store` NodeJS bindings](https://github.com/kriszyp/lmdbx-store).
|
||||
- [Noel Kuntze](https://github.com/Thermi) for [draft Python bindings](https://github.com/erthink/libmdbx/commits/python-bindings).
|
||||
- [Noel Kuntze](https://github.com/Thermi) for [draft Python bindings](https://erased_by_github.none/libmdbx/commits/python-bindings).
|
||||
|
||||
New features, extensions and improvements:
|
||||
|
||||
- [Allow to predefine/override `MDBX_BUILD_TIMESTAMP` for builds reproducibility](https://github.com/erthink/libmdbx/issues/201).
|
||||
- [Allow to predefine/override `MDBX_BUILD_TIMESTAMP` for builds reproducibility](https://erased_by_github.none/libmdbx/issues/201).
|
||||
- Added options support for `long-stochastic` script.
|
||||
- Avoided `MDBX_TXN_FULL` error for large transactions when possible.
|
||||
- The `MDBX_READERS_LIMIT` increased to `32767`.
|
||||
@ -317,7 +317,7 @@ New features, extensions and improvements:
|
||||
- Minimized the size of poisoned/unpoisoned regions to avoid Valgrind/ASAN stuck.
|
||||
- Added more workarounds for QEMU for testing builds for 32-bit platforms, Alpha and Sparc architectures.
|
||||
- `mdbx_chk` now skips iteration & checking of DB' records if corresponding page-tree is corrupted (to avoid `SIGSEGV`, ASAN failures, etc).
|
||||
- Added more checks for [rare/fuzzing corruption cases](https://github.com/erthink/libmdbx/issues/217).
|
||||
- Added more checks for [rare/fuzzing corruption cases](https://erased_by_github.none/libmdbx/issues/217).
|
||||
|
||||
Backward compatibility break:
|
||||
|
||||
@ -329,18 +329,18 @@ Backward compatibility break:
|
||||
Fixes:
|
||||
|
||||
- Fixed excess meta-pages checks in case `mdbx_chk` is called to check the DB for a specific meta page and thus could prevent switching to the selected meta page, even if the check passed without errors.
|
||||
- Fixed [recursive use of SRW-lock on Windows cause by `MDBX_NOTLS` option](https://github.com/erthink/libmdbx/issues/203).
|
||||
- Fixed [log a warning during a new DB creation](https://github.com/erthink/libmdbx/issues/205).
|
||||
- Fixed [false-negative `mdbx_cursor_eof()` result](https://github.com/erthink/libmdbx/issues/207).
|
||||
- Fixed [`make install` with non-GNU `install` utility (OSX, BSD)](https://github.com/erthink/libmdbx/issues/208).
|
||||
- Fixed [installation by `CMake` in special cases by complete use `GNUInstallDirs`'s variables](https://github.com/erthink/libmdbx/issues/209).
|
||||
- Fixed [C++ Buffer issue with `std::string` and alignment](https://github.com/erthink/libmdbx/issues/191).
|
||||
- Fixed [recursive use of SRW-lock on Windows cause by `MDBX_NOTLS` option](https://erased_by_github.none/libmdbx/issues/203).
|
||||
- Fixed [log a warning during a new DB creation](https://erased_by_github.none/libmdbx/issues/205).
|
||||
- Fixed [false-negative `mdbx_cursor_eof()` result](https://erased_by_github.none/libmdbx/issues/207).
|
||||
- Fixed [`make install` with non-GNU `install` utility (OSX, BSD)](https://erased_by_github.none/libmdbx/issues/208).
|
||||
- Fixed [installation by `CMake` in special cases by complete use `GNUInstallDirs`'s variables](https://erased_by_github.none/libmdbx/issues/209).
|
||||
- Fixed [C++ Buffer issue with `std::string` and alignment](https://erased_by_github.none/libmdbx/issues/191).
|
||||
- Fixed `safe64_reset()` for platforms without atomic 64-bit compare-and-swap.
|
||||
- Fixed hang/shutdown on big-endian platforms without `__cxa_thread_atexit()`.
|
||||
- Fixed [using bad meta-pages if DB was partially/recoverable corrupted](https://github.com/erthink/libmdbx/issues/217).
|
||||
- Fixed [using bad meta-pages if DB was partially/recoverable corrupted](https://erased_by_github.none/libmdbx/issues/217).
|
||||
- Fixed extra `noexcept` for `buffer::&assign_reference()`.
|
||||
- Fixed `bootid` generation on Windows for case of change system' time.
|
||||
- Fixed [test framework keygen-related issue](https://github.com/erthink/libmdbx/issues/127).
|
||||
- Fixed [test framework keygen-related issue](https://erased_by_github.none/libmdbx/issues/127).
|
||||
|
||||
|
||||
## v0.10.1 at 2021-06-01
|
||||
@ -361,10 +361,10 @@ New features:
|
||||
Fixes:
|
||||
|
||||
- Fixed minor "foo not used" warnings from modern C++ compilers when building the C++ part of the library.
|
||||
- Fixed confusing/messy errors when build library from unfit github's archives (https://github.com/erthink/libmdbx/issues/197).
|
||||
- Fixed confusing/messy errors when build library from unfit github's archives (https://erased_by_github.none/libmdbx/issues/197).
|
||||
- Fixed `#elsif` typo.
|
||||
- Fixed rare unexpected `MDBX_PROBLEM` error during altering data in huge transactions due to wrong spilling/oust of dirty pages (https://github.com/erthink/libmdbx/issues/195).
|
||||
- Re-Fixed WSL1/WSL2 detection with distinguishing (https://github.com/erthink/libmdbx/issues/97).
|
||||
- Fixed rare unexpected `MDBX_PROBLEM` error during altering data in huge transactions due to wrong spilling/oust of dirty pages (https://erased_by_github.none/libmdbx/issues/195).
|
||||
- Re-Fixed WSL1/WSL2 detection with distinguishing (https://erased_by_github.none/libmdbx/issues/97).
|
||||
|
||||
|
||||
## v0.10.0 at 2021-05-09
|
||||
@ -387,7 +387,7 @@ New features:
|
||||
and conjointly with the `MDBX_ENV_CHECKPID=0` and `MDBX_TXN_CHECKOWNER=0` options can yield
|
||||
up to 30% more performance compared to LMDB.
|
||||
- Using float point (exponential quantized) representation for internal 16-bit values
|
||||
of grow step and shrink threshold when huge ones (https://github.com/erthink/libmdbx/issues/166).
|
||||
of grow step and shrink threshold when huge ones (https://erased_by_github.none/libmdbx/issues/166).
|
||||
To minimize the impact on compatibility, only the odd values inside the upper half
|
||||
of the range (i.e. 32769..65533) are used for the new representation.
|
||||
- Added the `mdbx_drop` similar to LMDB command-line tool to purge or delete (sub)database(s).
|
||||
@ -396,7 +396,7 @@ New features:
|
||||
- The internal node sizes were refined, resulting in a reduction in large/overflow pages in some use cases
|
||||
and a slight increase in limits for a keys size to ≈½ of page size.
|
||||
- Added to `mdbx_chk` output number of keys/items on pages.
|
||||
- Added explicit `install-strip` and `install-no-strip` targets to the `Makefile` (https://github.com/erthink/libmdbx/pull/180).
|
||||
- Added explicit `install-strip` and `install-no-strip` targets to the `Makefile` (https://erased_by_github.none/libmdbx/pull/180).
|
||||
- Major rework page splitting (af9b7b560505684249b76730997f9e00614b8113) for
|
||||
- An "auto-appending" feature upon insertion for both ascending and
|
||||
descending key sequences. As a result, the optimality of page filling
|
||||
@ -404,7 +404,7 @@ New features:
|
||||
inserting ordered sequences of keys,
|
||||
- A "splitting at middle" to make page tree more balanced on average.
|
||||
- Added `mdbx_get_sysraminfo()` to the API.
|
||||
- Added guessing a reasonable maximum DB size for the default upper limit of geometry (https://github.com/erthink/libmdbx/issues/183).
|
||||
- Added guessing a reasonable maximum DB size for the default upper limit of geometry (https://erased_by_github.none/libmdbx/issues/183).
|
||||
- Major rework internal labeling of a dirty pages (958fd5b9479f52f2124ab7e83c6b18b04b0e7dda) for
|
||||
a "transparent spilling" feature with the gist to make a dirty pages
|
||||
be ready to spilling (writing to a disk) without further altering ones.
|
||||
@ -420,7 +420,7 @@ New features:
|
||||
- Support `make help` to list available make targets.
|
||||
- Silently `make`'s build by default.
|
||||
- Preliminary [Python bindings](https://github.com/Thermi/libmdbx/tree/python-bindings) is available now
|
||||
by [Noel Kuntze](https://github.com/Thermi) (https://github.com/erthink/libmdbx/issues/147).
|
||||
by [Noel Kuntze](https://github.com/Thermi) (https://erased_by_github.none/libmdbx/issues/147).
|
||||
|
||||
Backward compatibility break:
|
||||
|
||||
@ -435,22 +435,22 @@ Backward compatibility break:
|
||||
|
||||
Fixes:
|
||||
|
||||
- Fixed performance regression due non-optimal C11 atomics usage (https://github.com/erthink/libmdbx/issues/160).
|
||||
- Fixed "reincarnation" of subDB after it deletion (https://github.com/erthink/libmdbx/issues/168).
|
||||
- Fixed performance regression due non-optimal C11 atomics usage (https://erased_by_github.none/libmdbx/issues/160).
|
||||
- Fixed "reincarnation" of subDB after it deletion (https://erased_by_github.none/libmdbx/issues/168).
|
||||
- Fixed (disallowing) implicit subDB deletion via operations on `@MAIN`'s DBI-handle.
|
||||
- Fixed a crash of `mdbx_env_info_ex()` in case of a call for a non-open environment (https://github.com/erthink/libmdbx/issues/171).
|
||||
- Fixed the selecting/adjustment values inside `mdbx_env_set_geometry()` for implicit out-of-range cases (https://github.com/erthink/libmdbx/issues/170).
|
||||
- Fixed `mdbx_env_set_option()` for set initial and limit size of dirty page list ((https://github.com/erthink/libmdbx/issues/179).
|
||||
- Fixed an unreasonably huge default upper limit for DB geometry (https://github.com/erthink/libmdbx/issues/183).
|
||||
- Fixed a crash of `mdbx_env_info_ex()` in case of a call for a non-open environment (https://erased_by_github.none/libmdbx/issues/171).
|
||||
- Fixed the selecting/adjustment values inside `mdbx_env_set_geometry()` for implicit out-of-range cases (https://erased_by_github.none/libmdbx/issues/170).
|
||||
- Fixed `mdbx_env_set_option()` for set initial and limit size of dirty page list ((https://erased_by_github.none/libmdbx/issues/179).
|
||||
- Fixed an unreasonably huge default upper limit for DB geometry (https://erased_by_github.none/libmdbx/issues/183).
|
||||
- Fixed `constexpr` specifier for the `slice::invalid()`.
|
||||
- Fixed (no)readahead auto-handling (https://github.com/erthink/libmdbx/issues/164).
|
||||
- Fixed (no)readahead auto-handling (https://erased_by_github.none/libmdbx/issues/164).
|
||||
- Fixed non-alloy build for Windows.
|
||||
- Switched to using Heap-functions instead of LocalAlloc/LocalFree on Windows.
|
||||
- Fixed `mdbx_env_stat_ex()` to returning statistics of the whole environment instead of MainDB only (https://github.com/erthink/libmdbx/issues/190).
|
||||
- Fixed `mdbx_env_stat_ex()` to returning statistics of the whole environment instead of MainDB only (https://erased_by_github.none/libmdbx/issues/190).
|
||||
- Fixed building by GCC 4.8.5 (added workaround for a preprocessor's bug).
|
||||
- Fixed building C++ part for iOS <= 13.0 (unavailability of `std::filesystem::path`).
|
||||
- Fixed building for Windows target versions prior to Windows Vista (`WIN32_WINNT < 0x0600`).
|
||||
- Fixed building by MinGW for Windows (https://github.com/erthink/libmdbx/issues/155).
|
||||
- Fixed building by MinGW for Windows (https://erased_by_github.none/libmdbx/issues/155).
|
||||
|
||||
|
||||
## v0.9.3 at 2021-02-02
|
||||
@ -470,7 +470,7 @@ Removed options and features:
|
||||
New features:
|
||||
|
||||
- Package for FreeBSD is available now by Mahlon E. Smith.
|
||||
- New API functions to get/set various options (https://github.com/erthink/libmdbx/issues/128):
|
||||
- New API functions to get/set various options (https://erased_by_github.none/libmdbx/issues/128):
|
||||
- the maximum number of named databases for the environment;
|
||||
- the maximum number of threads/reader slots;
|
||||
- threshold (since the last unsteady commit) to force flush the data buffers to disk;
|
||||
@ -483,7 +483,7 @@ New features:
|
||||
- maximal part of the dirty pages may be spilled when necessary;
|
||||
- minimal part of the dirty pages should be spilled when necessary;
|
||||
- how much of the parent transaction dirty pages will be spilled while start each child transaction;
|
||||
- Unlimited/Dynamic size of retired and dirty page lists (https://github.com/erthink/libmdbx/issues/123).
|
||||
- Unlimited/Dynamic size of retired and dirty page lists (https://erased_by_github.none/libmdbx/issues/123).
|
||||
- Added `-p` option (purge subDB before loading) to `mdbx_load` tool.
|
||||
- Reworked spilling of large transaction and committing of nested transactions:
|
||||
- page spilling code reworked to avoid the flaws and bugs inherited from LMDB;
|
||||
@ -493,22 +493,22 @@ New features:
|
||||
- Added `MDBX_ENABLE_REFUND` and `MDBX_PNL_ASCENDING` internal/advanced build options.
|
||||
- Added `mdbx_default_pagesize()` function.
|
||||
- Better support architectures with a weak/relaxed memory consistency model (ARM, AARCH64, PPC, MIPS, RISC-V, etc) by means [C11 atomics](https://en.cppreference.com/w/c/atomic).
|
||||
- Speed up page number lists and dirty page lists (https://github.com/erthink/libmdbx/issues/132).
|
||||
- Speed up page number lists and dirty page lists (https://erased_by_github.none/libmdbx/issues/132).
|
||||
- Added `LIBMDBX_NO_EXPORTS_LEGACY_API` build option.
|
||||
|
||||
Fixes:
|
||||
|
||||
- Fixed missing cleanup (null assigned) in the C++ commit/abort (https://github.com/erthink/libmdbx/pull/143).
|
||||
- Fixed missing cleanup (null assigned) in the C++ commit/abort (https://erased_by_github.none/libmdbx/pull/143).
|
||||
- Fixed `mdbx_realloc()` for case of nullptr and `MDBX_WITHOUT_MSVC_CRT=ON` for Windows.
|
||||
- Fixed the possibility to use invalid and renewed (closed & re-opened, dropped & re-created) DBI-handles (https://github.com/erthink/libmdbx/issues/146).
|
||||
- Fixed 4-byte aligned access to 64-bit integers, including access to the `bootid` meta-page's field (https://github.com/erthink/libmdbx/issues/153).
|
||||
- Fixed the possibility to use invalid and renewed (closed & re-opened, dropped & re-created) DBI-handles (https://erased_by_github.none/libmdbx/issues/146).
|
||||
- Fixed 4-byte aligned access to 64-bit integers, including access to the `bootid` meta-page's field (https://erased_by_github.none/libmdbx/issues/153).
|
||||
- Fixed minor/potential memory leak during page flushing and unspilling.
|
||||
- Fixed handling states of cursors's and subDBs's for nested transactions.
|
||||
- Fixed page leak in extra rare case the list of retired pages changed during update GC on transaction commit.
|
||||
- Fixed assertions to avoid false-positive UB detection by CLANG/LLVM (https://github.com/erthink/libmdbx/issues/153).
|
||||
- Fixed `MDBX_TXN_FULL` and regressive `MDBX_KEYEXIST` during large transaction commit with `MDBX_LIFORECLAIM` (https://github.com/erthink/libmdbx/issues/123).
|
||||
- Fixed assertions to avoid false-positive UB detection by CLANG/LLVM (https://erased_by_github.none/libmdbx/issues/153).
|
||||
- Fixed `MDBX_TXN_FULL` and regressive `MDBX_KEYEXIST` during large transaction commit with `MDBX_LIFORECLAIM` (https://erased_by_github.none/libmdbx/issues/123).
|
||||
- Fixed auto-recovery (`weak->steady` with the same boot-id) when Database size at last weak checkpoint is large than at last steady checkpoint.
|
||||
- Fixed operation on systems with unusual small/large page size, including PowerPC (https://github.com/erthink/libmdbx/issues/157).
|
||||
- Fixed operation on systems with unusual small/large page size, including PowerPC (https://erased_by_github.none/libmdbx/issues/157).
|
||||
|
||||
|
||||
## v0.9.2 at 2020-11-27
|
||||
@ -546,11 +546,11 @@ Fixes:
|
||||
- Fixed copy&paste typos.
|
||||
- Fixed minor false-positive GCC warning.
|
||||
- Added workaround for broken `DEFINE_ENUM_FLAG_OPERATORS` from Windows SDK.
|
||||
- Fixed cursor state after multimap/dupsort repeated deletes (https://github.com/erthink/libmdbx/issues/121).
|
||||
- Fixed cursor state after multimap/dupsort repeated deletes (https://erased_by_github.none/libmdbx/issues/121).
|
||||
- Added `SIGPIPE` suppression for internal thread during `mdbx_env_copy()`.
|
||||
- Fixed extra-rare `MDBX_KEY_EXIST` error during `mdbx_commit()` (https://github.com/erthink/libmdbx/issues/131).
|
||||
- Fixed spilled pages checking (https://github.com/erthink/libmdbx/issues/126).
|
||||
- Fixed `mdbx_load` for 'plain text' and without `-s name` cases (https://github.com/erthink/libmdbx/issues/136).
|
||||
- Fixed extra-rare `MDBX_KEY_EXIST` error during `mdbx_commit()` (https://erased_by_github.none/libmdbx/issues/131).
|
||||
- Fixed spilled pages checking (https://erased_by_github.none/libmdbx/issues/126).
|
||||
- Fixed `mdbx_load` for 'plain text' and without `-s name` cases (https://erased_by_github.none/libmdbx/issues/136).
|
||||
- Fixed save/restore/commit of cursors for nested transactions.
|
||||
- Fixed cursors state in rare/special cases (move next beyond end-of-data, after deletion and so on).
|
||||
- Added workaround for MSVC 19.28 (Visual Studio 16.8) (but may still hang during compilation).
|
||||
@ -566,7 +566,7 @@ Fixes:
|
||||
Added features:
|
||||
|
||||
- Preliminary C++ API with support for C++17 polymorphic allocators.
|
||||
- [Online C++ API reference](https://erthink.github.io/libmdbx/) by Doxygen.
|
||||
- [Online C++ API reference](https://erased_by_github_and_to_be_restored.todo/libmdbx/) by Doxygen.
|
||||
- Quick reference for Insert/Update/Delete operations.
|
||||
- Explicit `MDBX_SYNC_DURABLE` to sync modes for API clarity.
|
||||
- Explicit `MDBX_ALLDUPS` and `MDBX_UPSERT` for API clarity.
|
||||
@ -611,7 +611,7 @@ Fixes:
|
||||
|
||||
Added features:
|
||||
|
||||
- [Online C API reference](https://erthink.github.io/libmdbx/) by Doxygen.
|
||||
- [Online C API reference](https://erased_by_github_and_to_be_restored.todo/libmdbx/) by Doxygen.
|
||||
- Separated enums for environment, sub-databases, transactions, copying and data-update flags.
|
||||
|
||||
Deprecated functions and flags:
|
||||
|
26
README.md
26
README.md
@ -315,12 +315,12 @@ named mutexes are used.
|
||||
Historically, _libmdbx_ is a deeply revised and extended descendant of the
|
||||
[Lightning Memory-Mapped Database](https://en.wikipedia.org/wiki/Lightning_Memory-Mapped_Database).
|
||||
At first the development was carried out within the
|
||||
[ReOpenLDAP](https://github.com/erthink/ReOpenLDAP) project. About a
|
||||
[ReOpenLDAP](https://erased_by_github.none/ReOpenLDAP) project. About a
|
||||
year later _libmdbx_ was separated into a standalone project, which was
|
||||
[presented at Highload++ 2015
|
||||
conference](http://www.highload.ru/2015/abstracts/1831.html).
|
||||
|
||||
Since 2017 _libmdbx_ is used in [Fast Positive Tables](https://github.com/erthink/libfpta),
|
||||
Since 2017 _libmdbx_ is used in [Fast Positive Tables](https://erased_by_github.none/libfpta),
|
||||
and development is funded by [Positive Technologies](https://www.ptsecurity.com).
|
||||
|
||||
## Acknowledgments
|
||||
@ -396,10 +396,10 @@ unexpected or broken down.
|
||||
|
||||
### Testing
|
||||
The amalgamated source code does not contain any tests for or several reasons.
|
||||
Please read [the explanation](https://github.com/erthink/libmdbx/issues/214#issuecomment-870717981) and don't ask to alter this.
|
||||
Please read [the explanation](https://erased_by_github.none/libmdbx/issues/214#issuecomment-870717981) and don't ask to alter this.
|
||||
So for testing _libmdbx_ itself you need a full source code, i.e. the clone of a git repository, there is no option.
|
||||
|
||||
The full source code of _libmdbx_ has a [`test` subdirectory](https://github.com/erthink/libmdbx/tree/master/test) with minimalistic test "framework".
|
||||
The full source code of _libmdbx_ has a [`test` subdirectory](https://gitflic.ru/project/erthink/libmdbx/tree/master/test) with minimalistic test "framework".
|
||||
Actually yonder is a source code of the `mdbx_test` – console utility which has a set of command-line options that allow construct and run a reasonable enough test scenarios.
|
||||
This test utility is intended for _libmdbx_'s developers for testing library itself, but not for use by users.
|
||||
Therefore, only basic information is provided:
|
||||
@ -410,7 +410,7 @@ Therefore, only basic information is provided:
|
||||
- The `Makefile` provide several self-described targets for testing: `smoke`, `test`, `check`, `memcheck`, `test-valgrind`,
|
||||
`test-asan`, `test-leak`, `test-ubsan`, `cross-gcc`, `cross-qemu`, `gcc-analyzer`, `smoke-fault`, `smoke-singleprocess`,
|
||||
`test-singleprocess`, 'long-test'. Please run `make --help` if doubt.
|
||||
- In addition to the `mdbx_test` utility, there is the script [`long_stochastic.sh`](https://github.com/erthink/libmdbx/blob/master/test/long_stochastic.sh),
|
||||
- In addition to the `mdbx_test` utility, there is the script [`long_stochastic.sh`](https://gitflic.ru/project/erthink/libmdbx/blob/master/test/long_stochastic.sh),
|
||||
which calls `mdbx_test` by going through set of modes and options, with gradually increasing the number of operations and the size of transactions.
|
||||
This script is used for mostly of all automatic testing, including `Makefile` targets and Continuous Integration.
|
||||
- Brief information of available command-line options is available by `--help`.
|
||||
@ -558,7 +558,7 @@ from the [ios-cmake](https://github.com/leetal/ios-cmake) project.
|
||||
|
||||
## API description
|
||||
|
||||
Please refer to the online [_libmdbx_ API reference](https://erthink.github.io/libmdbx/)
|
||||
Please refer to the online [_libmdbx_ API reference](https://erased_by_github_and_to_be_restored.todo/libmdbx/)
|
||||
and/or see the [mdbx.h++](mdbx.h%2B%2B) and [mdbx.h](mdbx.h) headers.
|
||||
|
||||
<!-- section-begin bindings -->
|
||||
@ -578,7 +578,7 @@ Bindings
|
||||
| Rust | [libmdbx-rs](https://github.com/vorot93/libmdbx-rs) | [Artem Vorotnikov](https://github.com/vorot93) |
|
||||
| Rust | [mdbx](https://crates.io/crates/mdbx) | [gcxfd](https://github.com/gcxfd) |
|
||||
| Java | [mdbxjni](https://github.com/castortech/mdbxjni) | [Castor Technologies](https://castortech.com/) |
|
||||
| Python (draft) | [python-bindings](https://github.com/erthink/libmdbx/commits/python-bindings) branch | [Noel Kuntze](https://github.com/Thermi)
|
||||
| Python (draft) | [python-bindings](https://erased_by_github.none/libmdbx/commits/python-bindings) branch | [Noel Kuntze](https://github.com/Thermi)
|
||||
| .NET (obsolete) | [mdbx.NET](https://github.com/wangjia184/mdbx.NET) | [Jerry Wang](https://github.com/wangjia184) |
|
||||
|
||||
<!-- section-end -->
|
||||
@ -617,7 +617,7 @@ Here showed sum of performance metrics in 3 benchmarks:
|
||||
|
||||
2. Performance gap is too high to compare in any meaningful way.
|
||||
|
||||

|
||||

|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -626,7 +626,7 @@ Here showed sum of performance metrics in 3 benchmarks:
|
||||
Summary performance with concurrent read/search queries in 1-2-4-8
|
||||
threads on the machine with 4 logical CPUs in HyperThreading mode (i.e. actually 2 physical CPU cores).
|
||||
|
||||

|
||||

|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -648,7 +648,7 @@ In the benchmark each transaction contains combined CRUD operations (2
|
||||
inserts, 1 read, 1 update, 1 delete). Benchmark starts on an empty database
|
||||
and after full run the database contains 10,000 small key-value records.
|
||||
|
||||

|
||||

|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -675,7 +675,7 @@ and after full run the database contains 100,000 small key-value
|
||||
records.
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -699,7 +699,7 @@ In the benchmark each transaction contains combined CRUD operations (2
|
||||
inserts, 1 read, 1 update, 1 delete). Benchmark starts on an empty database
|
||||
and after full run the database contains 10,000 small key-value records.
|
||||
|
||||

|
||||

|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -723,6 +723,6 @@ All benchmark data is gathered by
|
||||
[getrusage()](http://man7.org/linux/man-pages/man2/getrusage.2.html)
|
||||
syscall and by scanning the data directory.
|
||||
|
||||

|
||||

|
||||
|
||||
<!-- section-end -->
|
||||
|
113
appveyor.yml
113
appveyor.yml
@ -1,113 +0,0 @@
|
||||
version: 0.11.6.{build}
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||
CMAKE_GENERATOR: Visual Studio 14 2015
|
||||
TOOLSET: 140
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
CMAKE_GENERATOR: Visual Studio 16 2019
|
||||
TOOLSET: 142
|
||||
MDBX_BUILD_SHARED_LIBRARY: OFF
|
||||
MDBX_WITHOUT_MSVC_CRT: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
CMAKE_GENERATOR: Visual Studio 16 2019
|
||||
TOOLSET: 142
|
||||
MDBX_BUILD_SHARED_LIBRARY: ON
|
||||
MDBX_WITHOUT_MSVC_CRT: ON
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
CMAKE_GENERATOR: Visual Studio 16 2019
|
||||
TOOLSET: 142
|
||||
MDBX_BUILD_SHARED_LIBRARY: OFF
|
||||
MDBX_WITHOUT_MSVC_CRT: ON
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
CMAKE_GENERATOR: Visual Studio 16 2019
|
||||
TOOLSET: 142
|
||||
MDBX_BUILD_SHARED_LIBRARY: ON
|
||||
MDBX_WITHOUT_MSVC_CRT: OFF
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
CMAKE_GENERATOR: Visual Studio 15 2017
|
||||
TOOLSET: 141
|
||||
|
||||
branches:
|
||||
except:
|
||||
- coverity_scan
|
||||
|
||||
configuration:
|
||||
- Debug
|
||||
# MSVC-2019 hangs during code generation/optimization due to its own internal errors.
|
||||
# I have found out that the problem occurs because of the /Ob2 option (see https://github.com/erthink/libmdbx/issues/116).
|
||||
# So the simplest workaround is to using RelWithDebiInfo configuration for testing (cmake will uses /Ob1 option), instead of Release.
|
||||
# - Release
|
||||
- RelWithDebInfo
|
||||
|
||||
platform:
|
||||
- Win32
|
||||
- x64
|
||||
|
||||
# MSVC-2019 may hang up during code generation/optimization due to its own internal errors.
|
||||
matrix:
|
||||
allow_failures:
|
||||
- image: Visual Studio 2019
|
||||
configuration: Release
|
||||
|
||||
# Enable RDP for troubleshooting
|
||||
#init:
|
||||
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
|
||||
before_build:
|
||||
- git clean -x -f -d
|
||||
- git submodule sync
|
||||
- git fetch --tags --prune --force
|
||||
- git submodule update --init --recursive
|
||||
- git submodule foreach --recursive git fetch --tags --prune --force
|
||||
- cmake --version
|
||||
|
||||
build_script:
|
||||
- ps: |
|
||||
Write-Output "*******************************************************************************"
|
||||
Write-Output "Configuration: $env:CONFIGURATION"
|
||||
Write-Output "Platform: $env:PLATFORM"
|
||||
Write-Output "Toolchain: $env:CMAKE_GENERATOR v$env:TOOLSET"
|
||||
Write-Output "Options: MDBX_WITHOUT_MSVC_CRT=$env:MDBX_WITHOUT_MSVC_CRT MDBX_BUILD_SHARED_LIBRARY=$env:MDBX_BUILD_SHARED_LIBRARY"
|
||||
Write-Output "*******************************************************************************"
|
||||
|
||||
md _build -Force | Out-Null
|
||||
cd _build
|
||||
|
||||
$generator = $env:CMAKE_GENERATOR
|
||||
if ($env:TOOLSET -lt 142) {
|
||||
if ($env:PLATFORM -eq "x64") {
|
||||
$generator = "$generator Win64"
|
||||
}
|
||||
& cmake -G "$generator" -D CMAKE_CONFIGURATION_TYPES="Debug;Release;RelWithDebInfo" -D MDBX_WITHOUT_MSVC_CRT:BOOL=$env:MDBX_WITHOUT_MSVC_CRT -D MDBX_BUILD_SHARED_LIBRARY:BOOL=$env:MDBX_BUILD_SHARED_LIBRARY ..
|
||||
} else {
|
||||
& cmake -G "$generator" -A $env:PLATFORM -D CMAKE_CONFIGURATION_TYPES="Debug;Release;RelWithDebInfo" -DMDBX_WITHOUT_MSVC_CRT:BOOL=$env:MDBX_WITHOUT_MSVC_CRT -D MDBX_BUILD_SHARED_LIBRARY:BOOL=$env:MDBX_BUILD_SHARED_LIBRARY ..
|
||||
}
|
||||
if ($LastExitCode -ne 0) {
|
||||
throw "Exec: $ErrorMessage"
|
||||
}
|
||||
Write-Output "*******************************************************************************"
|
||||
|
||||
& cmake --build . --config $env:CONFIGURATION
|
||||
if ($LastExitCode -ne 0) {
|
||||
throw "Exec: $ErrorMessage"
|
||||
}
|
||||
Write-Output "*******************************************************************************"
|
||||
|
||||
test_script:
|
||||
- ps: |
|
||||
if (($env:PLATFORM -ne "ARM") -and ($env:PLATFORM -ne "ARM64")) {
|
||||
& ./$env:CONFIGURATION/mdbx_test.exe --progress --console=no --pathname=test.db --dont-cleanup-after basic > test.log
|
||||
Get-Content test.log | Select-Object -last 42
|
||||
if ($LastExitCode -ne 0) {
|
||||
throw "Exec: $ErrorMessage"
|
||||
} else {
|
||||
& ./$env:CONFIGURATION/mdbx_chk.exe -nvv test.db | Tee-Object -file chk.log | Select-Object -last 42
|
||||
}
|
||||
}
|
||||
|
||||
on_failure:
|
||||
- ps: Push-AppveyorArtifact \projects\libmdbx\_build\test.log
|
||||
- ps: Push-AppveyorArtifact \projects\libmdbx\_build\test.db
|
||||
- ps: Push-AppveyorArtifact \projects\libmdbx\_build\chk.log
|
2
mdbx.h++
2
mdbx.h++
@ -256,7 +256,7 @@ namespace mdbx {
|
||||
// To enable all kinds of an compiler optimizations we use a byte-like type
|
||||
// that don't presumes aliases for pointers as does the `char` type and its
|
||||
// derivatives/typedefs.
|
||||
// Please see https://github.com/erthink/libmdbx/issues/263
|
||||
// Please see https://erased_by_github.none/libmdbx/issues/263
|
||||
// for reasoning of the use of `char8_t` type and switching to `__restrict__`.
|
||||
using byte = char8_t;
|
||||
#else
|
||||
|
@ -9,7 +9,7 @@ This patch adds libmdbx v0.11.1:
|
||||
focused on creating unique lightweight solutions.
|
||||
- libmdbx surpasses the legendary LMDB (Lightning Memory-Mapped Database)
|
||||
in terms of reliability, features and performance.
|
||||
- https://github.com/erthink/libmdbx
|
||||
- https://gitflic.ru/project/erthink/libmdbx
|
||||
|
||||
Signed-off-by: Leonid Yuriev <leo@yuriev.ru>
|
||||
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
|
||||
@ -71,7 +71,7 @@ index 0000000000..d13f73938f
|
||||
+ libmdbx surpasses the legendary LMDB in terms of
|
||||
+ reliability, features and performance.
|
||||
+
|
||||
+ https://github.com/erthink/libmdbx
|
||||
+ https://gitflic.ru/project/erthink/libmdbx
|
||||
+
|
||||
+if BR2_PACKAGE_LIBMDBX
|
||||
+
|
||||
@ -107,7 +107,7 @@ index 0000000000..c8b50f9ac3
|
||||
--- /dev/null
|
||||
+++ b/package/libmdbx/libmdbx.hash
|
||||
@@ -0,0 +1,5 @@
|
||||
+# Hashes from: https://github.com/erthink/libmdbx/releases/
|
||||
+# Hashes from: https://gitflic.ru/project/erthink/libmdbx/releases/
|
||||
+sha256 f954ba8c9768914a92c2b46aac0d66bec674dbb4d7b0f01e362ea2921746ddaa libmdbx-amalgamated-0.11.1.tar.gz
|
||||
+
|
||||
+# Locally calculated
|
||||
@ -126,7 +126,7 @@ index 0000000000..02d00b1a5a
|
||||
+
|
||||
+LIBMDBX_VERSION = 0.11.1
|
||||
+LIBMDBX_SOURCE = libmdbx-amalgamated-$(LIBMDBX_VERSION).tar.gz
|
||||
+LIBMDBX_SITE = https://github.com/erthink/libmdbx/releases/download/v$(LIBMDBX_VERSION)
|
||||
+LIBMDBX_SITE = https://gitflic.ru/project/erthink/libmdbx/releases/download/v$(LIBMDBX_VERSION)
|
||||
+LIBMDBX_SUPPORTS_IN_SOURCE_BUILD = NO
|
||||
+LIBMDBX_LICENSE = OLDAP-2.8
|
||||
+LIBMDBX_LICENSE_FILES = LICENSE
|
||||
|
20
src/core.c
20
src/core.c
@ -5058,7 +5058,7 @@ static int mdbx_iov_write(MDBX_txn *const txn, struct mdbx_iov_ctx *ctx) {
|
||||
MDBX_page *wp = (MDBX_page *)ctx->iov[i].iov_base;
|
||||
const MDBX_page *rp = pgno2page(txn->mt_env, wp->mp_pgno);
|
||||
/* check with timeout as the workaround
|
||||
* for https://github.com/erthink/libmdbx/issues/269 */
|
||||
* for https://erased_by_github.none/libmdbx/issues/269 */
|
||||
while (likely(rc == MDBX_SUCCESS) &&
|
||||
unlikely(memcmp(wp, rp, ctx->iov[i].iov_len) != 0)) {
|
||||
if (!timestamp) {
|
||||
@ -6400,7 +6400,7 @@ __hot static struct page_result mdbx_page_alloc(MDBX_cursor *mc,
|
||||
catch-up with itself by growing while trying to save it. */
|
||||
(mc->mc_flags & C_RECLAIMING) ||
|
||||
/* avoid (recursive) search inside empty tree and while tree is
|
||||
updating, https://github.com/erthink/libmdbx/issues/31 */
|
||||
updating, https://erased_by_github.none/libmdbx/issues/31 */
|
||||
txn->mt_dbs[FREE_DBI].md_entries == 0 ||
|
||||
/* If our dirty list is already full, we can't touch GC */
|
||||
(txn->tw.dirtyroom < txn->mt_dbs[FREE_DBI].md_depth &&
|
||||
@ -6613,7 +6613,7 @@ no_loose:
|
||||
MDBX_PGL_LIMIT)) {
|
||||
/* Stop reclaiming to avoid overflow the page list.
|
||||
* This is a rare case while search for a continuously multi-page region
|
||||
* in a large database. https://github.com/erthink/libmdbx/issues/123 */
|
||||
* in a large database. https://erased_by_github.none/libmdbx/issues/123 */
|
||||
mdbx_notice("stop reclaiming to avoid PNL overflow: %u (current) + %u "
|
||||
"(chunk) -> %u",
|
||||
MDBX_PNL_SIZE(txn->tw.reclaimed_pglist), gc_len,
|
||||
@ -7586,7 +7586,7 @@ __cold int mdbx_thread_unregister(const MDBX_env *env) {
|
||||
return MDBX_SUCCESS;
|
||||
}
|
||||
|
||||
/* check against https://github.com/erthink/libmdbx/issues/269 */
|
||||
/* check against https://erased_by_github.none/libmdbx/issues/269 */
|
||||
static bool meta_checktxnid(const MDBX_env *env, const MDBX_meta *meta,
|
||||
bool report) {
|
||||
const txnid_t meta_txnid = constmeta_txnid(env, meta);
|
||||
@ -7662,7 +7662,7 @@ static bool meta_checktxnid(const MDBX_env *env, const MDBX_meta *meta,
|
||||
}
|
||||
|
||||
/* check with timeout as the workaround
|
||||
* for https://github.com/erthink/libmdbx/issues/269 */
|
||||
* for https://erased_by_github.none/libmdbx/issues/269 */
|
||||
static int meta_waittxnid(const MDBX_env *env, const MDBX_meta *meta,
|
||||
uint64_t *timestamp) {
|
||||
if (likely(meta_checktxnid(env, (const MDBX_meta *)meta, !*timestamp)))
|
||||
@ -7807,7 +7807,7 @@ static int mdbx_txn_renew0(MDBX_txn *txn, const unsigned flags) {
|
||||
snap == meta_txnid(env, meta) &&
|
||||
snap >= atomic_load64(&env->me_lck->mti_oldest_reader,
|
||||
mo_AcquireRelease))) {
|
||||
/* workaround for https://github.com/erthink/libmdbx/issues/269 */
|
||||
/* workaround for https://erased_by_github.none/libmdbx/issues/269 */
|
||||
rc = meta_waittxnid(env, (const MDBX_meta *)meta, ×tamp);
|
||||
mdbx_jitter4testing(false);
|
||||
if (likely(rc == MDBX_SUCCESS))
|
||||
@ -7895,7 +7895,7 @@ static int mdbx_txn_renew0(MDBX_txn *txn, const unsigned flags) {
|
||||
mdbx_jitter4testing(false);
|
||||
const MDBX_meta *meta = constmeta_prefer_last(env);
|
||||
uint64_t timestamp = 0;
|
||||
while ("workaround for https://github.com/erthink/libmdbx/issues/269") {
|
||||
while ("workaround for https://erased_by_github.none/libmdbx/issues/269") {
|
||||
rc = meta_waittxnid(env, (const MDBX_meta *)meta, ×tamp);
|
||||
if (likely(rc == MDBX_SUCCESS))
|
||||
break;
|
||||
@ -11722,7 +11722,7 @@ mdbx_env_set_geometry(MDBX_env *env, intptr_t size_lower, intptr_t size_now,
|
||||
const MDBX_meta *head = constmeta_prefer_last(env);
|
||||
|
||||
uint64_t timestamp = 0;
|
||||
while ("workaround for https://github.com/erthink/libmdbx/issues/269") {
|
||||
while ("workaround for https://erased_by_github.none/libmdbx/issues/269") {
|
||||
meta = *head;
|
||||
rc = meta_waittxnid(env, &meta, ×tamp);
|
||||
if (likely(rc == MDBX_SUCCESS))
|
||||
@ -12985,7 +12985,7 @@ __cold int mdbx_env_open(MDBX_env *env, const char *pathname,
|
||||
} else {
|
||||
#if MDBX_MMAP_INCOHERENT_FILE_WRITE
|
||||
/* Temporary `workaround` for OpenBSD kernel's flaw.
|
||||
* See https://github.com/erthink/libmdbx/issues/67 */
|
||||
* See https://erased_by_github.none/libmdbx/issues/67 */
|
||||
if ((flags & MDBX_WRITEMAP) == 0) {
|
||||
if (flags & MDBX_ACCEDE)
|
||||
flags |= MDBX_WRITEMAP;
|
||||
@ -19944,7 +19944,7 @@ __cold static int fetch_envinfo_ex(const MDBX_env *env, const MDBX_txn *txn,
|
||||
const size_t size_before_bootid = offsetof(MDBX_envinfo, mi_bootid);
|
||||
const size_t size_before_pgop_stat = offsetof(MDBX_envinfo, mi_pgop_stat);
|
||||
|
||||
/* is the environment open? (https://github.com/erthink/libmdbx/issues/171) */
|
||||
/* is the environment open? (https://erased_by_github.none/libmdbx/issues/171) */
|
||||
if (unlikely(!env->me_map)) {
|
||||
/* environment not yet opened */
|
||||
#if 1
|
||||
|
@ -96,4 +96,4 @@ if no quiet mode was requested.
|
||||
.BR mdbx_load (1)
|
||||
.BR mdbx_drop (1)
|
||||
.SH AUTHOR
|
||||
Leonid Yuriev <https://github.com/erthink>
|
||||
Leonid Yuriev <https://gitflic.ru/user/erthink>
|
||||
|
@ -65,4 +65,4 @@ free during copying cannot be reused until the copy is done.
|
||||
.BR mdbx_drop (1)
|
||||
.SH AUTHOR
|
||||
Howard Chu of Symas Corporation <http://www.symas.com>,
|
||||
Leonid Yuriev <https://github.com/erthink>
|
||||
Leonid Yuriev <https://gitflic.ru/user/erthink>
|
||||
|
@ -91,4 +91,4 @@ utility to load the database using the correct comparison functions.
|
||||
.BR mdbx_drop (1)
|
||||
.SH AUTHOR
|
||||
Howard Chu of Symas Corporation <http://www.symas.com>,
|
||||
Leonid Yuriev <https://github.com/erthink>
|
||||
Leonid Yuriev <https://gitflic.ru/user/erthink>
|
||||
|
@ -102,4 +102,4 @@ a diagnostic message being written to standard error.
|
||||
.BR mdbx_drop (1)
|
||||
.SH AUTHOR
|
||||
Howard Chu of Symas Corporation <http://www.symas.com>,
|
||||
Leonid Yuriev <https://github.com/erthink>
|
||||
Leonid Yuriev <https://gitflic.ru/user/erthink>
|
||||
|
@ -83,4 +83,4 @@ a diagnostic message being written to standard error.
|
||||
.BR mdbx_drop (1)
|
||||
.SH AUTHOR
|
||||
Howard Chu of Symas Corporation <http://www.symas.com>,
|
||||
Leonid Yuriev <https://github.com/erthink>
|
||||
Leonid Yuriev <https://gitflic.ru/user/erthink>
|
||||
|
@ -1157,7 +1157,7 @@ int main(int argc, char *argv[]) {
|
||||
envflags &= ~MDBX_RDONLY;
|
||||
#if MDBX_MMAP_INCOHERENT_FILE_WRITE
|
||||
/* Temporary `workaround` for OpenBSD kernel's flaw.
|
||||
* See https://github.com/erthink/libmdbx/issues/67 */
|
||||
* See https://erased_by_github.none/libmdbx/issues/67 */
|
||||
envflags |= MDBX_WRITEMAP;
|
||||
#endif /* MDBX_MMAP_INCOHERENT_FILE_WRITE */
|
||||
break;
|
||||
|
12
src/osal.c
12
src/osal.c
@ -678,7 +678,7 @@ MDBX_INTERNAL_FUNC int mdbx_openfile(const enum mdbx_openfile_purpose purpose,
|
||||
flags |= O_CLOEXEC;
|
||||
#endif /* O_CLOEXEC */
|
||||
|
||||
/* Safeguard for https://github.com/erthink/libmdbx/issues/144 */
|
||||
/* Safeguard for https://erased_by_github.none/libmdbx/issues/144 */
|
||||
#if STDIN_FILENO == 0 && STDOUT_FILENO == 1 && STDERR_FILENO == 2
|
||||
int stub_fd0 = -1, stub_fd1 = -1, stub_fd2 = -1;
|
||||
static const char dev_null[] = "/dev/null";
|
||||
@ -710,7 +710,7 @@ MDBX_INTERNAL_FUNC int mdbx_openfile(const enum mdbx_openfile_purpose purpose,
|
||||
}
|
||||
#endif /* O_DIRECT */
|
||||
|
||||
/* Safeguard for https://github.com/erthink/libmdbx/issues/144 */
|
||||
/* Safeguard for https://erased_by_github.none/libmdbx/issues/144 */
|
||||
#if STDIN_FILENO == 0 && STDOUT_FILENO == 1 && STDERR_FILENO == 2
|
||||
if (*fd == STDIN_FILENO) {
|
||||
mdbx_warning("Got STD%s_FILENO/%d, avoid using it by dup(fd)", "IN",
|
||||
@ -1547,7 +1547,7 @@ MDBX_INTERNAL_FUNC int mdbx_munmap(mdbx_mmap_t *map) {
|
||||
VALGRIND_MAKE_MEM_NOACCESS(map->address, map->current);
|
||||
/* Unpoisoning is required for ASAN to avoid false-positive diagnostic
|
||||
* when this memory will re-used by malloc or another mmapping.
|
||||
* See https://github.com/erthink/libmdbx/pull/93#issuecomment-613687203 */
|
||||
* See https://erased_by_github.none/libmdbx/pull/93#issuecomment-613687203 */
|
||||
MDBX_ASAN_UNPOISON_MEMORY_REGION(map->address,
|
||||
(map->filesize && map->filesize < map->limit)
|
||||
? map->filesize
|
||||
@ -1623,7 +1623,7 @@ MDBX_INTERNAL_FUNC int mdbx_mresize(const int flags, mdbx_mmap_t *map,
|
||||
|
||||
/* Unpoisoning is required for ASAN to avoid false-positive diagnostic
|
||||
* when this memory will re-used by malloc or another mmapping.
|
||||
* See https://github.com/erthink/libmdbx/pull/93#issuecomment-613687203 */
|
||||
* See https://erased_by_github.none/libmdbx/pull/93#issuecomment-613687203 */
|
||||
MDBX_ASAN_UNPOISON_MEMORY_REGION(map->address, map->limit);
|
||||
status = NtUnmapViewOfSection(GetCurrentProcess(), map->address);
|
||||
if (!NT_SUCCESS(status))
|
||||
@ -1888,7 +1888,7 @@ retry_mapview:;
|
||||
VALGRIND_MAKE_MEM_NOACCESS(map->address, map->current);
|
||||
/* Unpoisoning is required for ASAN to avoid false-positive diagnostic
|
||||
* when this memory will re-used by malloc or another mmapping.
|
||||
* See https://github.com/erthink/libmdbx/pull/93#issuecomment-613687203
|
||||
* See https://erased_by_github.none/libmdbx/pull/93#issuecomment-613687203
|
||||
*/
|
||||
MDBX_ASAN_UNPOISON_MEMORY_REGION(
|
||||
map->address,
|
||||
@ -1908,7 +1908,7 @@ retry_mapview:;
|
||||
VALGRIND_MAKE_MEM_NOACCESS(map->address, map->current);
|
||||
/* Unpoisoning is required for ASAN to avoid false-positive diagnostic
|
||||
* when this memory will re-used by malloc or another mmapping.
|
||||
* See https://github.com/erthink/libmdbx/pull/93#issuecomment-613687203 */
|
||||
* See https://erased_by_github.none/libmdbx/pull/93#issuecomment-613687203 */
|
||||
MDBX_ASAN_UNPOISON_MEMORY_REGION(
|
||||
map->address, (map->current < map->limit) ? map->current : map->limit);
|
||||
|
||||
|
@ -31,7 +31,7 @@
|
||||
fun:mdbx_wipe_steady
|
||||
}
|
||||
|
||||
# memcmp() inside mdbx_iov_write() as workaround for https://github.com/erthink/libmdbx/issues/269
|
||||
# memcmp() inside mdbx_iov_write() as workaround for https://erased_by_github.none/libmdbx/issues/269
|
||||
{
|
||||
write-page-check-bcmp
|
||||
Memcheck:Cond
|
||||
|
Loading…
x
Reference in New Issue
Block a user