Documentation Source Text

Check-in [b189725f2c]
Login

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

Overview
Comment:Start the change log for 3.8.11.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: b189725f2c4b8d61453257c0b837c8441729dcbf
User & Date: drh 2015-05-23 02:44:28
Context
2015-05-23
17:48
Enhance the file-format document to show the page type header numbers on various charts, for ease of reference. check-in: 88dc8a8a7b user: drh tags: trunk
02:44
Start the change log for 3.8.11. check-in: b189725f2c user: drh tags: trunk
2015-05-20
18:24
Add the sha1sum and SQLITE_SOURCE_ID for version 3.8.10.2. check-in: f4e75764dd user: dan tags: branch-3.8.10
18:20
Update the list of reserved characters in fts5.html. check-in: d2210cd43b user: dan tags: trunk
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to pages/changes.in.

    14     14   set nChng 0
    15     15   proc chng {date desc {options {}}} {
    16     16     global nChng aChng
    17     17     set aChng($nChng) [list $date $desc $options]
    18     18     incr nChng
    19     19   }
    20     20   
           21  +chng {2015-00-00 (3.8.11)} {
           22  +<li>Added the [sqlite3_value_dup()] and [sqlite3_value_free()] interfaces.
           23  +<li>The [IS operator] is now able to drive indexes.
           24  +<p><b>Bug fixes:</b>
           25  +<li>Fix to CREATE TABLE AS so that columns of type TEXT never end up holding an INT
           26  +    value.  Ticket
           27  +    [https://www.sqlite.org/src/info/f2ad7de056ab1dc9200|f2ad7de056ab1dc9200]
           28  +}
           29  +
           30  +chng {2015-05-20 (3.8.10.2)} {
           31  +<li>Fix an index corruption issue introduced by [version 3.8.7].  An index
           32  +    with a TEXT key can be corrupted by an [INSERT] into the corresponding 
           33  +    table if the table has two nested triggers that convert the key value to INTEGER
           34  +    and back to TEXT again.
           35  +    Ticket [https://www.sqlite.org/src/info/34cd55d68e0e6e7c9a0711aab81a2ee3c354b4c0|34cd55d68e0]
           36  +
           37  +<li>SQLITE_SOURCE_ID: "2015-05-20 18:17:19 2ef4f3a5b1d1d0c4338f8243d40a2452cc1f7fe4"
           38  +<li>SHA1 for sqlite3.c: 638abb77965332c956dbbd2c8e4248e84da4eb63
           39  +} {patchagainst 1 patchagainst 2}
           40  +
    21     41   chng {2015-05-09 (3.8.10.1)} {
    22     42   <li>Make [sqlite3_compileoption_used()] responsive to the [SQLITE_ENABLE_DBSTAT_VTAB]
    23     43       compile-time option.
    24     44   <li>Fix a harmless warning in the [command-line shell] on some versions of MSVC.
    25     45   <li>Fix minor issues with the [dbstat virtual table].
    26     46   
    27     47   <li>SQLITE_SOURCE_ID: "2015-05-09 12:14:55 05b4b1f2a937c06c90db70c09890038f6c98ec40"

Changes to pages/index.in.

    68     68   
    69     69   </td>
    70     70   <td width="20"></td><td bgcolor="#044a64" width="1"></td><td width="20"></td>
    71     71   <td valign="top">
    72     72   <h3>Current Status</h3>
    73     73   
    74     74   <p><ul>
    75         -<li><a href="releaselog/3_8_10_1.html">Version 3.8.10.1</a>
           75  +<li><a href="releaselog/3_8_11.html">Version 3.8.11</a>
    76     76   of SQLite is recommended for all new development.
    77     77   </li>
    78     78   </ul></p>
    79     79   
    80     80   <h3>Common Links</h3>
    81     81   
    82     82   <p><ul>

Changes to pages/news.in.

    14     14     hd_puts "<h3>$date - $title</h3>"
    15     15     regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt
    16     16     regsub -all {[Tt]icket #(\d+)} $txt \
    17     17         {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} txt
    18     18     hd_resolve "<blockquote>$txt</blockquote>"
    19     19     hd_puts "<hr width=\"50%\">"
    20     20   }
           21  +
           22  +newsitem {2015-05-20} {Release 3.8.10.2} {
           23  +<p>Yikes!  Index corruption after a sequence of valid SQL statements!
           24  +<p>It has been many years since anything like 
           25  +   [https://www.sqlite.org/src/info/34cd55d6|this bug] has snuck into
           26  +   an official SQLite release.  But for the pasts seven months
           27  +   ([version 3.8.7] through [version 3.8.10.1])
           28  +   if you do an INSERT into a carefully
           29  +   crafted schema in which there are two nested triggers that convert
           30  +   an index key value from TEXT to INTEGER and then back
           31  +   to TEXT again, the INTEGER value might get inserted as the index
           32  +   key instead of the correct TEXT, resulting in index corruption.
           33  +   This patch release adds a single line of code to fix the problem.
           34  +<p>If you do actually encounter this problem, running [REINDEX] on the
           35  +   damaged indexes will clear it.
           36  +}
    21     37   
    22     38   newsitem {2015-05-09} {Release 3.8.10.1} {
    23     39   <p>The 3.8.10 release did not add the new [SQLITE_ENABLE_DBSTAT_VTAB]
    24     40      compile-time option to the [sqlite3_compileoption_used()] interface.
    25     41      This patch release fixes that omission.  And while we are at it,
    26     42      the associated [dbstat virtual table] was enhanced slightly and a
    27     43      harmless compiler warning was fixed.

Changes to pages/testing.in.

   668    668   "-g -fprofile-arcs -ftest-coverage" and then the test program is run.
   669    669   Then "gcov -b" is run to generate a coverage report.
   670    670   The coverage report is verbose and inconvenient to read, 
   671    671   so the gcov-generated report is processed using
   672    672   some simple scripts to put it into a more human-friendly format.
   673    673   This entire process is automated using scripts, of course.
   674    674   
   675         -<p>Note that running SQLite using gcov is not a test of SQLite &mdash;
          675  +<p>Note that running SQLite with gcov is not a test of SQLite &mdash;
   676    676   it is a test of the test suite.  The gcov run does not test SQLite because
   677    677   the -fprofile-args and -ftest-coverage options cause the compiler to 
   678    678   generate different code.  
   679    679   The gcov run merely verifies that the test suite provides 100% branch test
   680    680   coverage.  The gcov run is a test of the test - a meta-test.
   681    681   
   682    682   <p>After gcov has been run to verify 100% branch test coverage,
   683    683   then the test program is recompiled using delivery compiler options
   684    684   (without the special -fprofile-arcs and -ftest-coverage options)
   685    685   and the test program is rerun.
   686    686   This second run is the actual test of SQLite.
   687    687   
   688         -<p>It is important to verify that both the gcov test run 
          688  +<p>It is important to verify that the gcov test run 
   689    689   and the second real test run both give the same output.  Any
   690    690   differences in output indicate either the use of undefined or
   691    691   indeterminate behavior in the SQLite code (and hence a bug), 
   692    692   or a bug in the compiler.
   693    693   Note that SQLite has, over the previous decade, encountered bugs
   694    694   in each of GCC, Clang, and MSVC.  Compiler bugs, while rare, do happen,
   695    695   which is why it is so important to test the code in an as-delivered
   696    696   configuration.
   697    697   
   698    698   <tcl>hd_fragment thoughts1</tcl>
   699    699   <h3>7.6 Experience with full test coverage</h3>
   700    700   
   701    701   <p>The developers of SQLite have found that full coverage testing is an
   702         -extremely productive method for preventing the introduction of new bugs
   703         -as the system evolves.  Because every single branch
          702  +extremely effective method for locating and preventing bugs.
          703  +Because every single branch
   704    704   instruction in SQLite core code is covered by test cases, the developers
   705         -can be confident that changes they make in one part of the code
          705  +can be confident that changes made in one part of the code
   706    706   do not have unintended consequences in other parts of the code.
   707         -It would be extremely difficult maintain the quality of SQLite without such
   708         -assurances.</p>
          707  +The many new features and performance improvements that have been
          708  +added to SQLite in recent years would not have been possible without
          709  +the availability full-coverage testing.</p>
          710  +
          711  +<p>Maintaining 100% MC/DC is laborious and time-consuming.
          712  +The level of effort needed to maintain full-coverage testing
          713  +is probably not cost effective for a typical application.
          714  +However, we think that full-coverage testing is justified for a
          715  +[most widely deployed|very widely deployed] infrastructure library
          716  +like SQLite, and especially for a database library which by its very
          717  +nature "remembers" past mistakes.
          718  +
   709    719   
   710    720   <tcl>hd_fragment dynamicanalysis</tcl>
   711    721   <h2>8.0 Dynamic Analysis</h2>
   712    722   
   713    723   <p>Dynamic analysis refers to internal and external checks on the
   714    724   SQLite code which are performed while the code is live and running.
   715    725   Dynamic analysis has proven to be a great help in maintaining the