Name: sqlite
URL: http://sqlite.org/
Version: 3.7.6.3
Included In Release: Yes
Security Critical: Yes
License: Public domain

Instructions for importing a new release of SQLite from sqlite.org.

Note: our current base version is 3.7.6.3.

First, you need to be on Linux.

# Determine the versions of the release you want and the release we currently
# have. (See the VERSION file to determine which release we currently have.)
# You may wish to consult http://www.sqlite.org/changes.html to find out what
# changes have been made in each release.
# Note - this is just an example. Always refer to the version above for our
# real current version.
# Set some variables to remember the versions, e.g.:
BASE=3.7.6.3
LATEST=3.7.6.4

# Get to the src/third_party directory in your Chromium client:
cd src/third_party

# Download the .tar.gz files for the releases:
# (If the URL changes you might need to find the new one.)
# TODO(shess): Rewrite this to track the new naming format.  Meanwhile,
# manually navigate to www.sqlite.org and find downloads, use "legacy" version.
wget http://www.sqlite.org/sqlite-$BASE.tar.gz
wget http://www.sqlite.org/sqlite-$LATEST.tar.gz

# Extract the vanilla current and desired versions:
tar xzf sqlite-$BASE.tar.gz
tar xzf sqlite-$LATEST.tar.gz

# Use kdiff3 to merge the changes:
kdiff3 -m sqlite-$BASE sqlite-$LATEST sqlite

# Resolve any conflicts.  Figure out if we've got everything we should
# have (see below), or if we can omit any changes we no longer need.

# Change to the sqlite directory:
cd sqlite

# Run the google_generate_amalgamation.sh script:
./google_generate_amalgamation.sh

# Find a sucker.  Send review.
# TODO(shess) Describe an appropriate comment style.  Seems like it
# should at least include the SQLite version number.

--------------------------------------------

For reference, all of our local patches are also kept as .patch files in the
sqlite directory. Here is a list of the patches, in the order they should be
applied to a vanilla SQLite (of the version we currently have) to get, in
principle, exactly what is checked in:

misc.patch
preload-cache.patch
safe-tolower.patch
fts2.patch
fts3.patch
fts3_85522.patch
icu-regexp.patch
icu-shell.patch
attach-integer.patch
webdb.patch
test.patch
mac_time_machine.patch
system-sqlite.patch
sqlite-3.7.6.3-fix-out-of-scope-memory-reference.patch
misalignment.patch

So, e.g. you could do this to apply all our patches to vanilla SQLite:

cd sqlite-$LATEST
patch -p0 < ../sqlite/misc.patch
patch -p0 < ../sqlite/preload-cache.patch
patch -p0 < ../sqlite/fts2.patch
patch -p0 < ../sqlite/fts3.patch
patch -p0 < ../sqlite/fts3_85522.patch
patch -p0 < ../sqlite/icu-shell.patch
patch -p0 < ../sqlite/webdb.patch
patch -p0 < ../sqlite/test.patch
patch -p0 < ../sqlite/mac_time_machine.patch
patch -p0 < ../sqlite/system-sqlite.patch
patch -p0 < ../sqlite/sqlite-3.7.6.3-fix-out-of-scope-memory-reference.patch
patch -p0 < ../sqlite/misalignment.patch

This will only be the case if all changes we make also update the corresponding
patch files. Therefore please remember to do that whenever you make a change!

Descriptions of the changes we've made can be found at the bottom of this file.

--------------------------------------------

How to run the SQLite tests for the Chromium version of SQLite on Linux.

Prerequisties: On my corp Ubuntu 8.04 workstation, I needed to install the
following packages:
sudo apt-get install tcl8.4-dev libicu-dev

cd src/third_party/sqlite/src
mkdir build
cd build
make -f ../Makefile.linux-gcc testfixture
make -f ../Makefile.linux-gcc test > /tmp/test.log
egrep -v 'Ok$' /tmp/test.log
# For an ideal test run, you would see:
# 0 errors out of 57887 tests
# However, the current situation on my corp Linux Ubuntu 8.04 machine, with
# test run on a locally mounted directory, is the failure of:
# "rollback-2.3", "tkt3457-1.4"
# I do not know why, but it is not related to our fts2.c changes -- I backed
# them out to check.

Chris Evans <cevans@google.com>, Oct 1, 2009

--------------------------------------------

As of May 07, 2010, these are our changes from sqlite_vendor:

 - A fix for a crash passing an integer expression to ATTACH / DETACH. See
 attach-integer.patch
 - A fix for a crash mis-calling the REGEXP() function of the ICU extension.
 See icu-regexp.patch
 - A large number of fts2 robustness fixes against corrupt data in its metadata
   tables.
 - fts2.c disables fts2_tokenizer().
 - fts3.c disables fts3_tokenizer().
 - Tweak to SQLITE_EXTENSION_INIT* in sqlite3ext.h.
   - That implied a change in src/test_autoext.c for testing.
 - Added fts.test in tests, modified quick.test.
 - Modifications to Makefile.linux-gcc and main.mk for compiling
   SQLite tests.
 - Compile warning (cast to void* for sqlite3_free) fixed in func.c.
 - Avoid using tolower() in fts code which causes problem in some locales, see:
   safe-tolower.patch
   http://crbug.com/15261
   http://www.sqlite.org/src/tktview/991789d9f3136a0460dc83a33e815c1aa9757c26
 - Check that the third argument to memset() is nonzero in expr.c to avoid
   a linker warning when the compiler can optimize it to a constant zero
   (e.g. see http://www.sqlite.org/cvstrac/tktview?tn=3765,39)

Changes from Chrome:
 - I marked all changes I made with "evanm", so you can find them with
   "grep evanm *".
 - Most files include sqlite3ext.h with SQLITE_CORE #defined, but two don't:
   fts2_tokenizer.c and icu.c.  Without this #define, the calls in
   fts2_tokenizer.c try to go through some pointer to the sqlite API instead
   of calling the functions directly (to work as a loadable module), but then
   crash (because the other files never initialize that loadable module
   support).  As a hack I #defined it in these files, but it'd be nice to
   figure out what really ought to happen here (perhaps this file is new and
   hasn't been tested to verify it works right).  Update: Seems this is an
   issue we get because we're using fts2 instead of fts3.
 - shell_icu_win.c and shell_icu_linux.c are Chrome-specific files used to load
   our ICU data.  shell.c has been modifed to call into these files.
 - fts2_icu.c and fts3_icu.c have a critical bug. U8_NEXT is used over
   a UTF-16 string. It's rep$ by U16_NEXT (jungshik)
 - Added a new function sqlite3_preload we use to prime the database cache. It
   allows much faster performance by reading the file in one contiguous
   operation rather than bringing it in organically, which involves a lot of
   seeking. This change also required sqlite3PcacheGetCachesize to be compiled
   even outside SQLITE_TEST.
 - Added a new function chromium_sqlite3_initialize_win_sqlite3_file()
   at the end of os_win.c. It allows the Windows-specific Chromium VFS
   to reuse most of the win32 SQLite VFS.
 - Added a new function
   chromium_sqlite3_initialize_unix_sqlite3_file() and made
   fillInUnixFile() non-static in os_unix.c. It allows the
   Linux-specific Chromium VFS to reuse most of the unix SQLite VFS.
 - Exposed three functions that deal with unused file descriptors in
   os_unix.c, to allow Chromium's Posix VFS implementation in
   WebKit/WebCore/platform/sql/chromium/SQLiteFileSystemChromiumPosix.cpp
   to correctly implement the "unused file descriptors" logic in the
   xDlOpen() method. The new functions are
   chromium_sqlite3_get_reusable_file_handle(),
   chromium_sqlite3_update_reusable_file_handle() and
   chromium_sqlite3_destroy_reusable_file_handle(). Also, added the
   chromium_sqlite3_fill_in_unix_sqlite3_file() function that calls
   fillInUnixFile(), which will be made static again as soon as a
   WebKit patch using the new function lands.
 - From mac_time_machine.patch:
   When __APPLE__ and when creating a -journal file with any unix-type vfs,
   determine if the database for which the journal is being created has been
   excluded from being backed up using Apple's Time Machine and if so then also
   exclude the journal. These changes were made in pager.c with includes of
   Apple interfaces being made in sqliteInt.h. In order to eliminate a symbol
   conflict with an Apple library after amalgamation it was also necessary to
   rename fts3_porter.c's 'cType' to 'vOrCType'.
 - fts3_85522.patch allows fts3 to work if PRAGMA is not authorized.
 - src/recover.c file implements a virtual table which can read
   through corruption.
 - Enable the macro 'SQLITE_TEMP_STORE=3' for Android.
