summaryrefslogtreecommitdiffstats
path: root/third_party/sqlite/README.google
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/sqlite/README.google')
-rw-r--r--third_party/sqlite/README.google164
1 files changed, 105 insertions, 59 deletions
diff --git a/third_party/sqlite/README.google b/third_party/sqlite/README.google
index abc7ee2..93cfdc2 100644
--- a/third_party/sqlite/README.google
+++ b/third_party/sqlite/README.google
@@ -1,59 +1,105 @@
-This directory contains a partial snapshot of the sqlite library from
-http://sqlite.org.
-
-Current version: 3.5.3, released 23-Nov-2007.
-
-(This was built as 3.4.2 [13-Aug-2007] as described below, with the four
-intervening patches 4315, 4427, 4546, and 4556 applied by hand.)
-
-To import a new snapshot of sqlite:
-
-- Visit http://sqlite.org/download.html and download the latest source
- distribution.
-- Unpack the source on a Linux machine.
-- Change to the source directory and run:
- $ ./configure --disable-tcl # build headers
- $ make # build some generated files
-- Copy the generated .c/.h files from the sqlite directory to this directory,
- as well as those in src/ and ext/fts2/. Omit files which have been omitted
- here. Here's an easy way to be sure you get everything:
- $ cp /path/to/source/*.[ch] . # don't forget subdirs, too
- $ gvn status | grep -v ^M # print the names of all new files
- $ mkdir new; mv each new file to new
- Then rebuild, and if any of the files in new/ are needed, move them
- back into this directory, add them to the project, and "gvn add" them.
-- Apply the preload-cache.diff (see below)
-- Update this README to reflect the new version number.
-
-Modifications for this release:
-- 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).
-- shell_icu.c is a Chrome-specific file used to load our ICU data. shell.c
- has been modifed to call into shell_icu.c.
-- fts2_icu.c has a critical bug. U8_NEXT is used over a UTF-16 string. It's replaced
- by U16_NEXT (jungshik)
-
-Patch
------
-The file preload-cache.diff patch must be applied to add a new function 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.
-
-FTS2 modification
------------------
-In fts2.c, we added an additional check from fts3 to try to catch some
-additional problems. In buildTerms on line 3807, we replaced
- if( iPosition<0 ){
-with:
- if( iPosition<0 || pToken == NULL || nTokenBytes == 0 ){
-It is from this change to sqlite:
- http://www.sqlite.org/cvstrac/chngview?cn=4514
+Instructions for importing a new release of sqlite from sqlite.org.
+
+First, you need to be on Linux.
+
+Find the release you want at:
+ http://www.sqlite.org/cvstrac/timeline
+
+Search for "Milestone", and find the appropriate release. Click
+through, and snag the "Date" for use in DATE line below.
+Unfortunately, the actual displayed date string on that page will not
+work, you have to make it YYYY/MM/DD. [TODO(shess) Determine if the
+fact that sqlite.org thinks it's running under UTC is relevant.]
+
+DATE='2007/01/24 09:54:56'
+
+# Get to the third_party/sqlite directory in your Chromium client.
+cd ../third_party/sqlite
+
+# Run the super awesome automatic merge tool (requires kdiff3).
+# NOTE(shess): The following (which runs google_generate_preprocessed.sh) will
+# produce different output on grhat versus goobuntu; I've been running it on
+# goobuntu.
+./google_update_sqlite.sh "$DATE"
+
+# 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.
+
+# TODO(shess) If we don't want the CVS dirs.
+# find sqlite_vendor -name CVS -execdir rm -rf {} + -prune
+
+# Find a sucker. Send review.
+# TODO(shess) Describe an appropriate comment style. Seems like it
+# should include the DATE line, and the sqlite version number.
+
+
+--------------------------------------------
+
+Why all this convolution? The problem being solved is that we want to
+harvest changes from the sqlite CVS tree, and merge them with any
+local changes we make. In CVS, you would do this using a "vendor
+import", which is essentially a branch dedictated to the vendor
+version which is merged with local changes.
+
+third_party/sqlite_vendor/... is the CVS checkout for a particular
+build from sqlite.org. third_party/sqlite_google/... is the local
+version, with our local modifications. So we update the sqlite_vendor
+tree, then use perforce to downintegrate changes into our
+locally-modified tree. The downintegrate will call out any
+conflicting changes, but will otherwise just merge things together.
+Basically, sqlite_vendor is a gateway between CVS and perforce.
+
+Scott Hess <shess@google.com>, April 9, 2007.
+
+--------------------------------------------
+
+How to run the SQLite tests for the Gears version of SQLite on Linux.
+
+cd ../third_party/sqlite_google/
+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
+# When run on a locally-mounted disk, my output ends with:
+# 0 errors out of 57887 tests
+
+Scott Hess <shess@google.com>, December 11, 2007
+
+--------------------------------------------
+
+As of September 12, 2008, these are our changes from sqlite_vendor:
+
+ - fts2.c disables fts2_tokenizer().
+ - sqlite3Poison() in src/btree.c.
+ - BEGIN defaults to BEGIN IMMEDIATE in parse.y.
+ - Tweak to SQLITE_EXTENSION_INIT* in sqlite3ext.h.
+ - That implied a change in src/test_autoext.c for testing.
+ - Added fts.test and fts1.test in tests, modified quick.test.
+ - src/os_symbian.cc.
+ - Modifications to Makefile.linux-gcc and main.mk for compiling
+ SQLite tests.
+ - Compile warning fixed in func.c (check if this is still needed)
+ - Fixed a typo bug in fts2_icu.c: "strlen(nInput)" (filed upstream as
+ http://www.sqlite.org/cvstrac/tktview?tn=3543)
+
+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.c is a Chrome-specific file used to load our ICU data. shell.c
+ has been modifed to call into shell_icu.c.
+ - fts2_icu.c has a critical bug. U8_NEXT is used over a UTF-16 string. It's
+ rep$ by U16_NEXT (jungshik)
+ - Added a new function sqlite3Preload 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.