Checklist For SQLite 3.8.4

  1. Compiler warning checks. (Warnings in the Porter stemmer code are allowed.)
    1. Linux GCC -Wall -Wextra (the tool/warnings.sh script)
    2. Mac GCC -Wall -Wextra (the tool/warnings.sh script)
    3. OpenBSD GCC using options -Wall
    4. Windows MSVC Win32 /W3
    5. Windows MSVC Win64 /W3
    6. sh tool/warnings-clang.sh

  2. Documentation checks:
    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

  3. 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 multiplications, and especially those involving the offset parameters to sqlite3OsRead() and sqlite3OsWrite() or having operands pageSize or szPage to make sure that 32x32-bit multiplicates that intend to yield a 64-bit result do not instead truncate to 32-bits.
    8. Verify that source code contains no tabs and that surplus whitespace has been removed.
    9. Verify that the list of APIs exposed via the extension header is up-to-date (sqlite3ext.h)

  4. OMIT, ENABLE, and DISABLE options:
    1. tclsh ../tool/omittest.tcl -skip_run

  5. Tests for platform Linux x86:
    1. tclsh releasetest.tcl
    2. tclsh th3make cov.rc (verify 100% branch test coverage)
    3. tclsh fulltest.tcl fast.rc test.rc
    4. tclsh th3make fast-ex.rc

  6. Tests for platform Linux x86_64:
    1. tclsh th3make cov.rc (verify 100% branch test coverage)
    2. tclsh th3make cov.rc -DHAVE_MALLOC_H -DHAVE_MALLOC_USABLE_SIZE (verify 100% branch test coverage)
    3. tclsh th3make cov.rc -DSQLITE_ENABLE_STAT4 (verify 100% branch test coverage)
    4. tclsh releasetest.tcl
    5. tclsh fulltest.tcl fast.rc test.rc
    6. tclsh th3make memdebug.rc
    7. tclsh th3make test-ex.rc
    8. tclsh th3make test.rc CC=clang
    9. tclsh th3make fast.rc CC=clang
    10. ./mptester x.db mptest/crash01.test
    11. ./mptester x.db mptest/multiwrite01.test

  7. Tests for platform Linux ARM (BeagleBoard)
    1. tclsh th3make min.rc

  8. Tests for platform Mac OS-X x86:
    1. tclsh releasetest.tcl
    2. tclsh fulltest.tcl fast.rc test.rc
    3. tclsh th3make fast.rc CC=clang
    4. ./mptester x.db mptest/crash01.test
    5. ./mptester x.db mptest/multiwrite01.test

  9. Tests for platform MacOS 10.2 PPC:
    1. tclsh th3make -Os min.rc
    2. Recompile and test Fossil
    3. Verify that Fossil repositories are cross-platform with x86/x64.

  10. Tests for platform Win32/64:
    1. make fulltestonly
    2. th3make test.rc
    3. th3make fast.rc
    4. At least one of the above using MinGW
    5. At least one of the above using MSVC-32
    6. At least one of the above using MSVC-64
    7. At least one of the above on WinRT (x86)
    8. At least one of the above on WinRT (ARM)
    9. At least one of the above on Windows Phone
    10. At least one of the above on Windows Embedded Compact 2013
    11. Verify that EXEs and DLLs generated using MSVC contain the correct version number, product name, description, and copyright as resources.
    12. th3make msvc.rc test.rc /RTC1
    13. mptester x.db mptest/crash01.test
    14. mptester x.db mptest/multiwrite01.test

  11. Tests for platform Android:
    1. th3make -Os min.rc

  12. Tests for platform OpenBSD x86:
    1. make test
    2. th3make -Os min.rc

  13. Tests for platform Solaris Sparc:
    1. make test
    2. th3make test.rc
    3. th3make fast.rc
    4. Recompile and test Fossil
    5. Verify that Fossil repositories are cross-platform with x86/x64

  14. Other test performed on any available platform:
    1. th3make alignment2.rc test.rc
    2. th3make test.rc -DHAVE_LOCALTIME_R
    3. th3make test.rc -DSQLITE_THREADSAFE=0
    4. th3make test.rc -ftrapv
    5. OPTS=-DSQLITE_SMALL_STACK make sqlite3.c; th3make test.rc -DSQLITE_SMALL_STACK
    6. th3make test.rc CC=clang -fsanitize=undefined
    7. th3make test.rc -DSQLITE_MAX_ATTACHED=62
    8. th3make min.rc -Os -DTH3_LOWMEM -DTH3_OMIT_MISUSE; valgrind ./th3
    9. th3make min.rc -Os -DTH3_LOWMEM -DTH3_OMIT_MISUSE -DSQLITE_ENABLE_STAT4; valgrind ./th3
    10. valgrind testfixture permutations.test valgrind
    11. th3make cov.rc -DSQLITE_TRACE_SIZE_LIMIT=15 (verify coverage)
    12. th3make min.rc -DSQLITE_TRACE_SIZE_LIMIT=15 -O6
    13. th3make min.rc -O6 -funsigned-char
    14. th3make min.rc -O6 -fsigned-char

  15. Sqllogictest:
    1. Checked in latest SQLite amalgamation
    2. No compiler warnings
    3. run-all.sh with no errors
    4. run-all.bat with no errors

  16. Build using the configure/make in main source tree.
    1. Make sure that autoconf has been run to update the configure script.
    2. Run "make test" to verify that the build works.
    3. Verify the correct version numbers have been installed.
    4. Verify that the --disable-amalgamation option to configure works.
    5. Works on Linux
    6. Works on Mac
    7. Works on OpenBSD
    8. Works on Solaris

  17. Exported symbol checks: tool/symbols.sh
    1. No private symbols exported. (This is also checked by releasetest.tcl)
    2. No undesirable library dependencies
    3. No private symbols exported in MinGW (check using tool/symbols-mingw.sh)
    4. No undesirable library dependencies on MinGW

  18. Fossil updated to use the latest SQLite.
    1. No compiler warnings
    2. Used on active websites with no issues

  19. Firefox recompiled using lastest SQLite.
    1. No SQLite compiler warnings
    2. Active use with no issues noted

  20. CEROD tests in the test/ subdirectory.
  21. 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. At least one of the above using test.rc
    7. At least one of the above using memdebug.rc
    8. At least one of the above on Linux
    9. At least one of the above on Mac
    10. At least one of the above on Windows

  22. ZIPVFS tests:
    1. testfixture ../zipvfs/test/zipvfs.test (See test/README.txt in the ZIPVFS source tree for details.)
    2. th3make zipvfs.rc test.rc
    3. th3make zipvfs.rc memdebug.rc
    4. th3make zipvfs.rc min.rc -DTH3_LOWMEM -DTH3_OMIT_MISUSE; valgrind ./th3
    5. th3make min.rc
    6. At least one of the above on Linux
    7. At least one of the above on Mac
    8. At least one of the above on Windows

  23. NX-Devkit compiles and runs "tclsh th3make test.rc nx_compress.o" without error.
  24. Amalgamation autoconf tarball.
    1. Builds
    2. Works on Linux
    3. Works on Mac

  25. TEA archive builds correctly and runs:
    1. Linux
    2. Mac

  26. Run performance tests comparing the new SQLite release against the previous release and a release from one year ago. Document and justify any performance decrease.
    1. The TCL speed*.test scripts
    2. The TH3 speed tests
    3. The speedtest1 program
    4. ./speedtest1 --nosync --size 25 --trace 2>x.txt
      time ./sqlite3 x.db <x.txt >/dev/null
    5. One or more of the above on linux
    6. One or more of the above on windows
    7. One or more of the above on mac

  27. Run "make wordcount; bash run-wordcount.bash $OPTIONS" with options:
    1. sqlite3.c
    2. sqlite3.c --cachesize 5 --nosync

  28. Compute the size of a standard build (gcc -Os -c sqlite3.c) and and record the size change in the comments
    1. Versus the previous release
    2. Versus the trunk from 12 months ago

  29. Verify that the amalgamation builds are byte-for-byte identical on all workstation platforms.
    1. linux
    2. mac
    3. openbsd
    4. windows native mingw
    5. windows nmake
    6. sparc solaris using autoconf

  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. Cross-platform tests. Verify the ability of databases, WAL files, and rollback journals to be copied and used between 32-bit and 64-bit systems and between big-endian and little-endian systems.
    1. 32-big to 64-little, database
    2. 32-big to 64-little, WAL
    3. 32-big to 64-little, rollback
    4. 64-little to 32-big, SEE database
    5. 64-little to 32-big, ZIPVFS database
    6. 64-little to 32-big, CEROD database

  32. Build and verify correct operation of sqlite3_analyzer on:
    1. Linux
    2. Mac
    3. Sparc Solaris
    4. Win32 (MinGW)
    5. Win32 (MSVC)
    6. A database containing WITHOUT ROWID tables

  33. Tests for the sessions branch with macros SQLITE_ENABLE_SESSION and SQLITE_ENABLE_PREUPDATE_HOOK
    1. tclsh th3make session.rc test.rc (on windows)
    2. tclsh th3make session.rc test.rc (on unix)
    3. tclsh th3make session.rc cov.rc
    4. tclsh th3make session.rc min.rc -norun -DTH3_LOWMEM -DTH3_OMIT_MISUSE; valgrind ./th3
    5. make test (on windows)
    6. make test (on unix)
    7. testfixture test/session.test

  34. 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.
  35. System.Data.SQLite builds and checks out using the SQLite core