Documentation Source Text

Check-in [eb679e3242]
Login

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

Overview
Comment:Tweaks to the 3.6.10 release documentation.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: eb679e3242198a5fe2fc1783f9e76f170d971a58
User & Date: drh 2009-01-15 15:58:27
Context
2009-01-15
17:29
Fix typos in the news.html document. check-in: d70562dba0 user: drh tags: trunk
15:58
Tweaks to the 3.6.10 release documentation. check-in: eb679e3242 user: drh tags: trunk
14:45
Preparation for the 3.6.10 release. check-in: fa09fac9b0 user: drh tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to pages/news.in.

43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  is available available to you at all times.

  It has been suggested that "beta" releases might find these kinds of bugs
  prior to a major release.  But our experience indicates otherwise. 
  The two issues that prompted releases 3.6.9 and 3.6.10 were both
  discovered by internal testing and review - not by external users.
  And, indeed, most the problems found in SQLite these days are discovered
  by our rigorous <a href="testing.html">internal testing regimen</a>,
  not bug reports from the field.

  It has also been argued that we should withhold releases "until testing
  is finished."  The falacy there is that we never finish testing.  We
  are constantly writing new test cases for SQLite and thinking of new
  ways to stress and potentially break the code.  This is a continuous,
  never-ending, and on-going process.  All existing tests pass before each







|







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  is available available to you at all times.

  It has been suggested that "beta" releases might find these kinds of bugs
  prior to a major release.  But our experience indicates otherwise. 
  The two issues that prompted releases 3.6.9 and 3.6.10 were both
  discovered by internal testing and review - not by external users.
  And, indeed, most the problems found in SQLite these days are discovered
  by our rigorous <a href="testing.html">internal testing protocol</a>,
  not bug reports from the field.

  It has also been argued that we should withhold releases "until testing
  is finished."  The falacy there is that we never finish testing.  We
  are constantly writing new test cases for SQLite and thinking of new
  ways to stress and potentially break the code.  This is a continuous,
  never-ending, and on-going process.  All existing tests pass before each

Changes to pages/testing.in.

5
6
7
8
9
10
11
12
13
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
..
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
...
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# that change frequently.  We want the document to be up-to-date.  To
# facilitate that, all the size values are defined by variables here
# which are then used as needed through the document.
#
# NOTE:  Also update the version number in the text!!!
#

set stat(coreSLOC)    61750  ;# Non-comment lines of amalgamation code 
set stat(tclcSLOC)    15382  ;# Non-comment lines of test C code
set stat(tclcNfile)      30  ;# Number of files of TCL C testcode + tclsqlite.c
set stat(tclcNByte)  726036  ;# Number of bytes of TCL C testcode + tclsqlite.c
set stat(tclsSLOC)   182090  ;# Non-comment lines of TCL test script
set stat(tclsNFile)     445  ;# Number of files of TCL test script
set stat(tclsNByte) 7790085  ;# Number of bytes of TCL test script
set stat(tclNTest)    23491  ;# Number of test cases in the TCL test suite
set stat(tclNEval)   999092  ;# Number of test case evaluations
set stat(nSqlFuzz)    35034  ;# Number of SQL fuzz tests
set stat(vqNEval)     39161  ;# Number of test evaluations for veryquick.test
set stat(vqStmtCov)   95.85  ;# veryquick statement coverage
set stat(allStmtCov)  99.38  ;# all.test statement coverage
set stat(allCDCov)    94.97  ;# all.test condition/decision coverage
set stat(th3SLOC)    141308  ;# Non-comment lines of TH3 script
set stat(th3NByte)  9603718  ;# Number of bytes of TH3 test script
set stat(th3NTest)     2270  ;# Number of test cases
set stat(th3NEval)  8030189  ;# Number of test case evaluations
set stat(sltsSLOC)   23277414 ;# Non-comment lines of SLT test script
set stat(sltsNByte) 439908426 ;# Bytes of SLT test script
set stat(sltsNFile)       276 ;# Files of SLT test script
set stat(sltcSLOC)       1293 ;# Non-comment lines of SLT C code
set stat(sltNTest)    3417446 ;# Number of test cases in SLT
set stat(nAssert)        2445 ;# Number of assert statements


set stat(totalSLOC) [expr {$stat(tclcSLOC)+$stat(tclsSLOC)+
                           $stat(th3SLOC)+$stat(sltcSLOC)+$stat(sltsSLOC)}]





proc MiB {expr} {
  set n [uplevel #0 expr $expr]
  hd_puts [format %.1f [expr {$n/(1024.0*1024.0)}]]
}  
proc MB {expr} {
  set n [uplevel #0 expr $expr]
  hd_puts [format %.1f [expr {$n/(1000.0*1000.0)}]]
................................................................................
<h1 align="center">How SQLite Is Tested</h1>

<h2>1.0 Introduction</h2>

<p>The reliability and robustness of SQLite is achieved in large part
by thorough and careful testing.</p>

<p>As of [version 3.6.8] (all statistics in the report are against that
release of SQLite),
the SQLite library consists of approximately
<tcl>KB {$stat(coreSLOC)}</tcl> KSLOC of C code.
(KSLOC means thousands of "Source Lines Of Code" or, in other words,
lines of code excluding blank lines and comments.)
By comparison, the project has
<tcl>
................................................................................

<li><p>
The <b>SQL Logic Test</b> or SLT test harness is used to run huge numbers
of SQL statements against both SQLite and several other SQL database engines
and verify that they all get the same answers.  SLT currently compares
SQLite against PostgreSQL, MySQL, and Microsoft SQL Server.
SLT runs <tcl>MB {$stat(sltNTest)}</tcl> million queries comprising
<tcl>MB {$stat(sltsNByte)}</tcl>MB of test data.
</p></li>
</ol>

<p>All of the tests above must run successfully, on multiple platforms
and under multiple compile-time configurations,
before each release of SQLite.</p>








|
|

|
|
|
|
|
|

|



|
|
|

|
|
|
|
|
|





>
>
>
>







 







|







 







|







5
6
7
8
9
10
11
12
13
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
..
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
...
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# that change frequently.  We want the document to be up-to-date.  To
# facilitate that, all the size values are defined by variables here
# which are then used as needed through the document.
#
# NOTE:  Also update the version number in the text!!!
#

set stat(coreSLOC)    61885  ;# Non-comment lines of amalgamation code 
set stat(tclcSLOC)    15489  ;# Non-comment lines of test C code
set stat(tclcNfile)      30  ;# Number of files of TCL C testcode + tclsqlite.c
set stat(tclcNByte)  735632  ;# Number of bytes of TCL C testcode + tclsqlite.c
set stat(tclsSLOC)   183913  ;# Non-comment lines of TCL test script
set stat(tclsNFile)     449  ;# Number of files of TCL test script
set stat(tclsNByte) 7856401  ;# Number of bytes of TCL test script
set stat(tclNTest)    23602  ;# Number of test cases in the TCL test suite
set stat(tclNEval)  1057281  ;# Number of test case evaluations
set stat(nSqlFuzz)    35034  ;# Number of SQL fuzz tests
set stat(vqNEval)     39609  ;# Number of test evaluations for veryquick.test
set stat(vqStmtCov)   95.85  ;# veryquick statement coverage
set stat(allStmtCov)  99.38  ;# all.test statement coverage
set stat(allCDCov)    94.97  ;# all.test condition/decision coverage
set stat(th3SLOC)    141815  ;# Non-comment lines of TH3 script + mkth3.tcl
set stat(th3NByte)  9626908  ;# Number of bytes of TH3 test script + mkth3.tcl
set stat(th3NTest)     2137  ;# Number of test cases
set stat(th3NEval)  8030189  ;# Number of test case evaluations
set stat(sltsSLOC)    23277414 ;# Non-comment lines of SLT test script
set stat(sltsNByte) 1015905899 ;# Bytes of SLT test script
set stat(sltsNFile)        546 ;# Files of SLT test script
set stat(sltcSLOC)        1293 ;# Non-comment lines of SLT C code
set stat(sltNTest)     5331384 ;# Number of test cases in SLT
set stat(nAssert)         2450 ;# Number of assert statements


set stat(totalSLOC) [expr {$stat(tclcSLOC)+$stat(tclsSLOC)+
                           $stat(th3SLOC)+$stat(sltcSLOC)+$stat(sltsSLOC)}]

proc GB {expr} {
  set n [uplevel #0 expr $expr]
  hd_puts [format %.2f [expr {$n/(1000.0*1000.0*1000.0)}]]
}  
proc MiB {expr} {
  set n [uplevel #0 expr $expr]
  hd_puts [format %.1f [expr {$n/(1024.0*1024.0)}]]
}  
proc MB {expr} {
  set n [uplevel #0 expr $expr]
  hd_puts [format %.1f [expr {$n/(1000.0*1000.0)}]]
................................................................................
<h1 align="center">How SQLite Is Tested</h1>

<h2>1.0 Introduction</h2>

<p>The reliability and robustness of SQLite is achieved in large part
by thorough and careful testing.</p>

<p>As of [version 3.6.10] (all statistics in the report are against that
release of SQLite),
the SQLite library consists of approximately
<tcl>KB {$stat(coreSLOC)}</tcl> KSLOC of C code.
(KSLOC means thousands of "Source Lines Of Code" or, in other words,
lines of code excluding blank lines and comments.)
By comparison, the project has
<tcl>
................................................................................

<li><p>
The <b>SQL Logic Test</b> or SLT test harness is used to run huge numbers
of SQL statements against both SQLite and several other SQL database engines
and verify that they all get the same answers.  SLT currently compares
SQLite against PostgreSQL, MySQL, and Microsoft SQL Server.
SLT runs <tcl>MB {$stat(sltNTest)}</tcl> million queries comprising
<tcl>GB {$stat(sltsNByte)}</tcl>GB of test data.
</p></li>
</ol>

<p>All of the tests above must run successfully, on multiple platforms
and under multiple compile-time configurations,
before each release of SQLite.</p>