Documentation Source Text

Check-in [f3ea1f0a36]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Preparing for the 3.7.6.3 patch release.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | branch-3.7.6
Files: files | file ages | folders
SHA1: f3ea1f0a36cd35152c0f87d098e85aff4f23130a
User & Date: drh 2011-05-19 12:59:08.238
Context
2011-05-19
14:45
News updates for the 3.7.6.3 release. (Leaf check-in: ef14f9a3d4 user: drh tags: branch-3.7.6)
12:59
Preparing for the 3.7.6.3 patch release. (check-in: f3ea1f0a36 user: drh tags: branch-3.7.6)
2011-04-20
11:01
Add the "make fast" target on the makefile - for constructing documentation without the requirements matrix. Added notation to the windows DLL on the download page to mention that it is suitable for use with Ruby on Rails. (check-in: e84c9353ca user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to pages/changes.in.
37
38
39
40
41
42
43






44
45
46
47
48
49
50
      <a href="http://www.sqlite.org/src/timeline">
      http://www.sqlite.org/src/timeline</a>.</p>
    }
    hd_close_aux
    hd_enable_main 1
  }
}







chng {2011 April 17 (3.7.6.2)} {
<li> Fix the function prototype for the open(2) system call to agree with
     POSIX.  Without this fix, pthreads does not work correctly on NetBSD.
<li> SQLITE_SOURCE_ID:
     "2011-04-17 17:25:17 154ddbc17120be2915eb03edc52af1225eb7cb5e"
<li> SHA1 for sqlite3.c: 806577fd524dd5f3bfd8d4d27392ed2752bc9701







>
>
>
>
>
>







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
      <a href="http://www.sqlite.org/src/timeline">
      http://www.sqlite.org/src/timeline</a>.</p>
    }
    hd_close_aux
    hd_enable_main 1
  }
}

chng {2011 May 19 (3.7.6.3)} {
<li> Fix a problem with [WAL mode] which could cause transactions to
     silently rollback if the [cache_size] is set very small (less than 10)
     and SQLite comes under memory pressure.
}

chng {2011 April 17 (3.7.6.2)} {
<li> Fix the function prototype for the open(2) system call to agree with
     POSIX.  Without this fix, pthreads does not work correctly on NetBSD.
<li> SQLITE_SOURCE_ID:
     "2011-04-17 17:25:17 154ddbc17120be2915eb03edc52af1225eb7cb5e"
<li> SHA1 for sqlite3.c: 806577fd524dd5f3bfd8d4d27392ed2752bc9701
Changes to pages/download.in.
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288

<p>Note that a unix-like development environment, including a recent
version of <a href="http://www.tcl.tk/">Tcl</a>, is required in order to
build from the canonical sources.</p>

<blockquote>
<a href="http://www.sqlite.org/cgi/src">http://www.sqlite.org/cgi/src</a> (Dallas)<br>
<a href="http://www2.sqlite.org/cgi/src">http://www2.sqlite.org/cgi/src</a> (Atlanta)<br>
<a href="http://www3.sqlite.org/cgi/src">http://www3.sqlite.org/cgi/src</a> (Fremont)<br>
</blockquote>

<p>The documentation is maintained in separate
[http://www.fossil-scm.org/ | Fossil] repositories located
at:</p>

<blockquote>
<a href="http://www.sqlite.org/cgi/docsrc">http://www.sqlite.org/cgi/docsrc</a> (Dallas)<br>
<a href="http://www2.sqlite.org/cgi/docsrc">http://www2.sqlite.org/cgi/docsrc</a> (Atlanta)<br>
<a href="http://www3.sqlite.org/cgi/docsrc">http://www3.sqlite.org/cgi/docsrc</a> (Fremont)<br>

</blockquote>







|









|



268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288

<p>Note that a unix-like development environment, including a recent
version of <a href="http://www.tcl.tk/">Tcl</a>, is required in order to
build from the canonical sources.</p>

<blockquote>
<a href="http://www.sqlite.org/cgi/src">http://www.sqlite.org/cgi/src</a> (Dallas)<br>
<a href="http://www2.sqlite.org/cgi/src">http://www2.sqlite.org/cgi/src</a> (Newark)<br>
<a href="http://www3.sqlite.org/cgi/src">http://www3.sqlite.org/cgi/src</a> (Fremont)<br>
</blockquote>

<p>The documentation is maintained in separate
[http://www.fossil-scm.org/ | Fossil] repositories located
at:</p>

<blockquote>
<a href="http://www.sqlite.org/cgi/docsrc">http://www.sqlite.org/cgi/docsrc</a> (Dallas)<br>
<a href="http://www2.sqlite.org/cgi/docsrc">http://www2.sqlite.org/cgi/docsrc</a> (Newark)<br>
<a href="http://www3.sqlite.org/cgi/docsrc">http://www3.sqlite.org/cgi/docsrc</a> (Fremont)<br>

</blockquote>
Changes to pages/index.in.
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

</td>
<td width="20"></td><td bgcolor="#044a64" width="1"></td><td width="20"></td>
<td valign="top">
<h3>Current Status</h3>

<p><ul>
<li><a href="releaselog/3_7_6_2.html">Version 3.7.6.2</a>
of SQLite is recommended for all new development.
Upgrading from version 3.7.5 is optional.
Upgrading from all SQLite versions prior to 3.7.5 is recommended.</li>
</ul></p>

<h3>Common Links</h3>

<p><ul>
<li> <a href="features.html">Features</a> </li>
<li> <a href="faq.html">Frequently Asked Questions</a> </li>







|

<
|







83
84
85
86
87
88
89
90
91

92
93
94
95
96
97
98
99

</td>
<td width="20"></td><td bgcolor="#044a64" width="1"></td><td width="20"></td>
<td valign="top">
<h3>Current Status</h3>

<p><ul>
<li><a href="releaselog/3_7_6_3.html">Version 3.7.6.3</a>
of SQLite is recommended for all new development.

Upgrading from all SQLite versions is recommended.</li>
</ul></p>

<h3>Common Links</h3>

<p><ul>
<li> <a href="features.html">Features</a> </li>
<li> <a href="faq.html">Frequently Asked Questions</a> </li>
Changes to pages/news.in.
14
15
16
17
18
19
20













































21
22
23
24
25
26
27
  hd_puts "<h3>$date - $title</h3>"
  regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt
  regsub -all {[Tt]icket #(\d+)} $txt \
      {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} txt
  hd_resolve "<p>$txt</p>"
  hd_puts "<hr width=\"50%\">"
}














































newsitem {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.








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
  hd_puts "<h3>$date - $title</h3>"
  regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt
  regsub -all {[Tt]icket #(\d+)} $txt \
      {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} txt
  hd_resolve "<p>$txt</p>"
  hd_puts "<hr width=\"50%\">"
}

newsitem {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 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 the bug does <u>not</u> cause database corruption.  It is
  as if [ROLLBACK] were being run instead of [COMMIT] in some cases.

  Here is a detailed description of the bug:
  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,
  every changed page for the transaction has 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.
}

newsitem {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.

Changes to pages/wal.in.
1
2
3
4
5
6
7
8
9
<title>Write-Ahead Logging</title>
<tcl>hd_keywords {WAL} {write-ahead log}</tcl>

<h1 align="center">Write-Ahead Logging</h1>

<p>The default method by which SQLite implements
[atomic commit | atomic commit and rollback] is a [rollback journal].
Beginning with [version 3.7.0], a new "Write-Ahead Log" option
(hereafter referred to as "WAL") is available.</p>

|







1
2
3
4
5
6
7
8
9
<title>Write-Ahead Logging</title>
<tcl>hd_keywords {WAL} {write-ahead log} {WAL mode}</tcl>

<h1 align="center">Write-Ahead Logging</h1>

<p>The default method by which SQLite implements
[atomic commit | atomic commit and rollback] is a [rollback journal].
Beginning with [version 3.7.0], a new "Write-Ahead Log" option
(hereafter referred to as "WAL") is available.</p>
Changes to remove_carets.sh.
11
12
13
14
15
16
17
18
19
20
#     ^(
#     )^
#     ^
#
echo 'Removing ^ characters '
find $1 -name '*.html' -print | grep -v matrix | while read file
do
  mv $file x.html
  sed -e 's/\^(//g' -e 's/)^//g' -e 's/\^//g' x.html >$file
done







|
|

11
12
13
14
15
16
17
18
19
20
#     ^(
#     )^
#     ^
#
echo 'Removing ^ characters '
find $1 -name '*.html' -print | grep -v matrix | while read file
do
  mv "$file" x.html
  sed -e 's/\^(//g' -e 's/)^//g' -e 's/\^//g' x.html >"$file"
done