SQLite

Release Checklist For SQLite 3.32.0
Login

  1. Test procedure review.
    1. Review the "test/wapptest.tcl" script for completeness and accuracy.
    2. Review "multitest.tcl" and "alignment*.rc" scripts in TH3 for completeness.
    3. Review this checklist for completeness and accuracy.

  2. Source code change review. fossil diff --from release --to trunk
    1. No stray changes.
    2. All significant changes are mentioned in the "changes" log of the documentation.
    3. New code complies with style guidelines.
    4. New code complies with design rules.
    5. Comments have been updated to reflect code changes.
    6. Variables and functions have been renamed to reflect changes in their use.
    7. Check all calls to sqlite3OsRead() and sqlite3OsWrite() to ensure that offset computations are 64-bit clean.
    8. Check all calls to memory allocation routines to ensure that size computations are 64-bit clean. Suggested regular expression for search: /(Re|M)alloc[FORZa-z]*(/
    9. Verify that source code contains no tabs and that surplus whitespace has been removed.
    10. Verify that the list of APIs exposed via the extension header is up-to-date (sqlite3ext.h).
    11. Significant compile-time options are recognized by the sqlite3_compileoption_used() interface.
    12. Compare sqlite3.c and sqlite3.h against the previous release.

  3. Documentation review:
    1. Latest release on the "index.html" page.
    2. Release announcement in "changes.in".
    3. Release accouncement in "news.html".
    4. No unresolved hyperlinks in the documentation build.
    5. Requirements marks are up-to-date in both documentation and source code.
    6. The compile-time options are all up-to-date (compile.html).
    7. Database footprint is up-to-date (features.html).
    8. Test metrics are up-to-date (testing.html).
    9. Check new/changed documentation for spelling and gramatical mistakes.

  4. Compiler warning checks.
    1. Linux GCC -Wall -Wextra (the "tool/warnings.sh" script)
    2. Mac OS X GCC -Wall -Wextra (the "tool/warnings.sh" script)

  5. OMIT, ENABLE, and DISABLE options:
    1. tclsh ../tool/omittest.tcl -skip_run -target libsqlite3.a

  6. Tests for platform Linux x86_64:
    1. tclsh multitest.tcl
    2. tclsh test/wapptest.tcl -noui
    3. tclsh multitest.tcl --scenario obscure
    4. tclsh multitest.tcl --scenario failures - all failures detected
    5. tclsh test/wapptest.tcl --platform Failure-Detection -noui - all failures detected
    6. sh tool/symbols.sh - no incorrect exports or dependencies
    7. CC=clang CFLAGS='-fsanitize=address,undefined' ./configure --enable-debug --enable-all && make test
    8. Test the reuse-schema branch with ./configure --enable-all && make "OPTS=-DSQLITE_ENABLE_SHARED_SCHEMA" test.

  7. Tests for platform Linux ARM (BeagleBoard or RaspberryPI)
    1. tclsh th3make min.rc
    2. Recompile and test Fossil.

  8. Tests for platform Mac OS X:
    1. tclsh test/wapptest.tcl -noui
    2. tclsh multitest.tcl
    3. tclsh multitest.tcl --scenario failures - all failures detected
    4. tclsh test/wapptest.tcl -platform Failure-Detection -noui - all failures detected

  9. Tests for platform Mac OS X 10.5 (PPC):
    1. .selftest checks (see below)
    2. Recompile and test Fossil.
    3. Verify that Fossil repositories are cross-platform with x86/x64.

  10. Tests for platform Windows:
    1. tclsh multitest.tcl --msvc
    2. tclsh multitest.tcl --msvc --quick on x86
    3. tclsh multitest.tcl --msvc --scenario failures - verify failures detected
    4. tclsh test/wapptest.tcl --msvc -noui
    5. tclsh test/wapptest.tcl --msvc --platform Failure-Detection -noui - all failures detected
    6. sh tool/symbols-mingw.sh - no incorrect exports or dependencies
    7. Verify that EXEs and DLLs generated using MSVC contain the correct version number, product name, description, and copyright as resources.

  11. Tests for platform OpenBSD (x86):
    1. make test
    2. th3make quick.rc

  12. On an F2FS filesystem with the F2FS_FEATURE_ATOMIC_WRITE feature, test with: $(TOP)/configure && make test OPTS="-DSQLITE_ENABLE_BATCH_ATOMIC_WRITE -DSQLITE_DEBUG -DSQLITE_NO_SYNC"
  13. Trunk changes merged and verified on active branches:
    1. begin-concurrent (from trunk)
    2. begin-concurrent-pnu (from trunk)
    3. wal2 (from trunk)
    4. begin-concurrent-pnu-wal2 (from wal2)
    5. reuse-schema (from trunk)

  14. Sqllogictest:
    1. Checked in latest SQLite amalgamation.
    2. No SQLite compiler warnings.
    3. tclsh run-all.tcl - on unix
    4. tclsh run-all.tcl - on windows

  15. Build using the configure/make in main source tree.
    1. Make sure that autoconf has been run to update the configure script.
    2. Verify the correct version numbers have been installed.

  16. Fossil updated to use the latest SQLite.
    1. No SQLite compiler warnings.
    2. Used on active websites with no issues.
    3. fossil all test-integrity -d

  17. CEROD tests in the "test/" subdirectory.
  18. SEE tests using TH3:
    1. see.c
    2. see-aes128-ofb.c
    3. see-aes256-ofb.c
    4. see-rc4.c
    5. see-aes128-ccm.c
    6. see-cccrypt.c
    7. see-aes256-openssl.c
    8. see-aes256-cryptoapi.c
    9. At least one of the above using "test.rc".
    10. At least one of the above using "memdebug.rc".
    11. At least one of the above with option -DSQLITE_DIRECT_OVERFLOW_READ.
    12. At least one of the above on Linux.
    13. At least one of the above on Mac OS X.
    14. At least one of the above on Windows.

  19. ZIPVFS tests:
    1. testfixture ../zipvfs/test/zipvfs.test (See test/README.txt for details)
    2. th3make zipvfs.rc test.rc
    3. th3make zipvfs.rc memdebug.rc
    4. th3make zipvfs.rc quick.rc -valgrind
    5. th3make zipvfs.rc quick.rc
    6. At least one of the above on Linux.
    7. At least one of the above on Mac OS X.
    8. At least one of the above on Windows.

  20. NDS-Devkit testing
    1. Merge all trunk enhancements into the reuse-schema branch and use that branch to update the devkit.
    2. Test using: tclsh th3make test.rc nds_devkit.rc
    3. Verify the "NDS DevKit" version number shown at the end of the test

  21. Amalgamation autoconf tarball.
    1. Builds.
    2. Works on Linux.
    3. Works on Mac OS X.
    4. Works on Windows MinGW
    5. Works on Windows MSVC

  22. TEA archive builds correctly and runs:
    1. Verify that the SQLite version number is correct in autoconf/tea/configure.ac
    2. Linux
    3. Mac OS X
    4. Windows MSVC

  23. Performance tests using speedtest1 compared against the previous release and a release from about one year ago.
    1. Linux
    2. Mac
    3. Windows

  24. Performance tests using speedtest1 --testset rtree
    1. Linux
    2. Windows

  25. Run make wordcount and do tests on current and prior versions:
    1. rm -f wc.db && ./wordcount wc.db $BIGTEXT --all
    2. rm -f wc.db && ./wordcount wc.db $BIGTEXT --all --cachesize 5 --nosync

  26. Compare performance to the previous release using kvtest.
    1. Linux
    2. Mac
    3. Windows

  27. Use the ".selftest" command of the shell to verify that legacy database files are readable and cross-platform
    1. iBook PPC
    2. Linux
    3. Mac
    4. Windows

  28. Verify that the performance and size measurement spreadsheet in the documentation (misc/speed-size-graph.ods) is up-to-date.
  29. Verify that the amalgamation builds are byte-for-byte identical on all workstation platforms.
    1. Linux
    2. Mac OS X
    3. Mac OS X (PPC)
    4. Windows using native MinGW.
    5. Windows using NMAKE.

  30. Verify that databases (including FTS3 and RTREE databases), rollback journals, and WAL files created by the release candidate are readable and writeable by historical versions of SQLite (as long as no unsupported features are used) and vice versa.
  31. Build and verify correct operation of sqlite3_analyzer on:
    1. Linux
    2. Mac OS X
    3. Windows

  32. Build and verify sqldiff
    1. Linux
    2. Mac
    3. Windows

  33. Build the "atrc" test program and run "./atrc $DB | ./sqlite3 $DB" against multiple databases, visually verify the result
  34. Run the rbu/run_rbu_tests.tcl script in the test-dbs project on Linux.
  35. Verify that the "sqlite3-all.c" build target works and that the resulting "sqlite3-all.c" file and its include files ("sqlite3-?.c") compile and run the same as the single-file amalgamation.
  36. Website built procedures
    1. Compile-time options for build products have been updated as necessary
    2. All build products work on their target platforms
Status: 
Comments: