[arch-dev-public] [signoff] sqlite3 - 3.7.6.3-1
Minor upstream release. Please give signoffs. -Andy 2011-May-19 - Version 3.7.6.3 SQLite version 3.7.6.3 is a patch release that fixes a single bug associated with WAL mode. The bug has been in SQLite ever since WAL was added, but the problem is very obscure and so nobody has noticed before now. Nevertheless, all users are encouraged to upgrade to version 3.7.6.3 or later. The bug is this: If the cache_size is set very small (less than 10) and SQLite comes under memory pressure and if a multi-statement transaction is started in which the last statement prior to COMMIT is a SELECT statement and if a checkpoint occurs right after the transaction commit, then it might happen that the transaction will be silently rolled back instead of being committed. The default setting for cache_size is 2000. So in most situations, this bug will never appear. But sometimes programmers set cache_size to very small values on gadgets and other low-memory devices in order to save memory space. Such applications are vulnerable. Note that this bug does not cause database corruption. It is as if ROLLBACK were being run instead of COMMIT in some cases. Bug Details Transactions commit in WAL mode by adding a record onto the end of the WAL (the write-ahead log) that contains a "commit" flag. So to commit a transaction, SQLite takes all the pages that have changed during that transaction, appends them to the WAL, and sets the commit flag on the last page. Now, if SQLite comes under memory pressure, it might try to free up memory space by writing changed pages to the WAL prior to the commit. We call this "spilling" the cache to WAL. There is nothing wrong with spilling cache to WAL. But if the memory pressure is severe, it might be that by the time COMMIT is run, all changed pages for the transaction have already been spilled to WAL and there are no pages left to be written to WAL. And with no unwritten pages, there was nothing to put the commit flag on. And without a commit flag, the transaction would end up being rolled back. The fix to this problem was that if all changed pages has already been written to the WAL when the commit was started, then page 1 of the database will be written to the WAL again, so that there will always be a page available on which to set the commit flag. 2011-April-17 - Version 3.7.6.2 SQLite version 3.7.6.2 adds a one-line bug fix to 3.7.6.1 that enables pthreads to work correctly on NetBSD. The problem was a faulty function signature for the open system call. The problem does not appear to have any adverse impact on any system other than NetBSD. Upgrading from version 3.7.6.1 is only needed on NetBSD.
On 19 May 2011 22:37, Andreas Radke <a.radke@arcor.de> wrote:
Minor upstream release. Please give signoffs.
Signoff x86_64.
On 22/05/11 18:49, Andreas Radke wrote:
Am Fri, 20 May 2011 06:46:51 +0300 schrieb Evangelos Foutras<foutrelis@gmail.com>:
On 19 May 2011 22:37, Andreas Radke<a.radke@arcor.de> wrote:
Minor upstream release. Please give signoffs.
Signoff x86_64.
Anyone for i686?
Signoff i686, Allan
participants (3)
-
Allan McRae
-
Andreas Radke
-
Evangelos Foutras