Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: third_party/sqlite/patches/0006-Virtual-table-supporting-recovery-of-corrupted-datab.patch

Issue 1310533005: [sqlite] Annotate Chromium-specific exposed functions with SQLITE_API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 From 13a64d3c7fb541be8cb753c575837c1b84f5d9fd Mon Sep 17 00:00:00 2001 1 From ec588be0416fab3e957d0901eb6e638543b01229 Mon Sep 17 00:00:00 2001
2 From: Scott Hess <shess@chromium.org> 2 From: Scott Hess <shess@chromium.org>
3 Date: Sat, 20 Jul 2013 11:42:21 -0700 3 Date: Sat, 20 Jul 2013 11:42:21 -0700
4 Subject: [PATCH 06/16] Virtual table supporting recovery of corrupted 4 Subject: [PATCH 06/11] Virtual table supporting recovery of corrupted
5 databases. 5 databases.
6 6
7 "recover" implements a virtual table which uses the SQLite pager layer 7 "recover" implements a virtual table which uses the SQLite pager layer
8 to read table pages and pull out the data which is structurally sound 8 to read table pages and pull out the data which is structurally sound
9 (at least at the storage layer). 9 (at least at the storage layer).
10 10
11 BUG=109482 11 BUG=109482
12 12
13 Since this implements a new feature for SQLite, the review URLs aren't 13 Since this implements a new feature for SQLite, the review URLs aren't
14 listed. This patch and the top of recover.c should be considered 14 listed. This patch and the top of recover.c should be considered
15 authoritative. The history is mostly under 15 authoritative. The history is mostly under
16 third_party/sqlite/src/src/{recover,recover-alt}.c . 16 third_party/sqlite/src/src/{recover,recover-alt}.c .
17 --- 17 ---
18 third_party/sqlite/src/Makefile.in | 1 + 18 third_party/sqlite/src/Makefile.in | 1 +
19 third_party/sqlite/src/Makefile.linux-gcc | 4 + 19 third_party/sqlite/src/Makefile.linux-gcc | 4 +
20 third_party/sqlite/src/main.mk | 4 +- 20 third_party/sqlite/src/main.mk | 4 +-
21 third_party/sqlite/src/src/main.c | 8 + 21 third_party/sqlite/src/src/main.c | 8 +
22 third_party/sqlite/src/src/recover.c | 2164 ++++++++++++++++++++++++++++ 22 third_party/sqlite/src/src/recover.c | 2165 ++++++++++++++++++++++++++++
23 third_party/sqlite/src/src/sqlite.h.in | 11 + 23 third_party/sqlite/src/src/sqlite.h.in | 16 +
24 third_party/sqlite/src/test/recover.test | 147 ++ 24 third_party/sqlite/src/test/recover.test | 147 ++
25 third_party/sqlite/src/test/recover0.test | 532 +++++++ 25 third_party/sqlite/src/test/recover0.test | 532 +++++++
26 third_party/sqlite/src/test/recover1.test | 429 ++++++ 26 third_party/sqlite/src/test/recover1.test | 429 ++++++
27 third_party/sqlite/src/test/recover2.test | 157 ++ 27 third_party/sqlite/src/test/recover2.test | 157 ++
28 third_party/sqlite/src/tool/mksqlite3c.tcl | 2 + 28 third_party/sqlite/src/tool/mksqlite3c.tcl | 2 +
29 11 files changed, 3458 insertions(+), 1 deletion(-) 29 11 files changed, 3464 insertions(+), 1 deletion(-)
30 create mode 100644 third_party/sqlite/src/src/recover.c 30 create mode 100644 third_party/sqlite/src/src/recover.c
31 create mode 100644 third_party/sqlite/src/test/recover.test 31 create mode 100644 third_party/sqlite/src/test/recover.test
32 create mode 100644 third_party/sqlite/src/test/recover0.test 32 create mode 100644 third_party/sqlite/src/test/recover0.test
33 create mode 100644 third_party/sqlite/src/test/recover1.test 33 create mode 100644 third_party/sqlite/src/test/recover1.test
34 create mode 100644 third_party/sqlite/src/test/recover2.test 34 create mode 100644 third_party/sqlite/src/test/recover2.test
35 35
36 diff --git a/third_party/sqlite/src/Makefile.in b/third_party/sqlite/src/Makefil e.in 36 diff --git a/third_party/sqlite/src/Makefile.in b/third_party/sqlite/src/Makefil e.in
37 index a2213e8..1389486 100644 37 index a2213e8..1389486 100644
38 --- a/third_party/sqlite/src/Makefile.in 38 --- a/third_party/sqlite/src/Makefile.in
39 +++ b/third_party/sqlite/src/Makefile.in 39 +++ b/third_party/sqlite/src/Makefile.in
40 @@ -253,6 +253,7 @@ SRC = \ 40 @@ -253,6 +253,7 @@ SRC = \
41 $(TOP)/src/prepare.c \ 41 $(TOP)/src/prepare.c \
42 $(TOP)/src/printf.c \ 42 $(TOP)/src/printf.c \
43 $(TOP)/src/random.c \ 43 $(TOP)/src/random.c \
44 + $(TOP)/src/recover.c \ 44 + $(TOP)/src/recover.c \
45 $(TOP)/src/resolve.c \ 45 $(TOP)/src/resolve.c \
46 $(TOP)/src/rowset.c \ 46 $(TOP)/src/rowset.c \
47 $(TOP)/src/select.c \ 47 $(TOP)/src/select.c \
48 diff --git a/third_party/sqlite/src/Makefile.linux-gcc b/third_party/sqlite/src/ Makefile.linux-gcc 48 diff --git a/third_party/sqlite/src/Makefile.linux-gcc b/third_party/sqlite/src/ Makefile.linux-gcc
49 index 554bf56..e631816 100644 49 index 4f6cdf1..dd8f46d 100644
50 --- a/third_party/sqlite/src/Makefile.linux-gcc 50 --- a/third_party/sqlite/src/Makefile.linux-gcc
51 +++ b/third_party/sqlite/src/Makefile.linux-gcc 51 +++ b/third_party/sqlite/src/Makefile.linux-gcc
52 @@ -82,6 +82,10 @@ OPTS += -DSQLITE_MEMDEBUG=1 52 @@ -81,6 +81,10 @@ OPTS += -DSQLITE_MEMDEBUG=1
53 # TODO(shess) I can't see why I need this setting. 53 # TODO(shess) I can't see why I need this setting.
54 OPTS += -DOS_UNIX=1 54 OPTS += -DOS_UNIX=1
55 55
56 +# The recover virtual table is not generally enabled. Enable it for testing 56 +# The recover virtual table is not generally enabled. Enable it for testing
57 +# purposes. 57 +# purposes.
58 +OPTS += -DDEFAULT_ENABLE_RECOVER=1 58 +OPTS += -DDEFAULT_ENABLE_RECOVER=1
59 + 59 +
60 #### The suffix to add to executable files. ".exe" for windows. 60 #### The suffix to add to executable files. ".exe" for windows.
61 # Nothing for unix. 61 # Nothing for unix.
62 # 62 #
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 + if( !db->mallocFailed && rc==SQLITE_OK ){ 103 + if( !db->mallocFailed && rc==SQLITE_OK ){
104 + rc = recoverVtableInit(db); 104 + rc = recoverVtableInit(db);
105 + } 105 + }
106 +#endif 106 +#endif
107 + 107 +
108 #ifdef SQLITE_ENABLE_ICU 108 #ifdef SQLITE_ENABLE_ICU
109 if( !db->mallocFailed && rc==SQLITE_OK ){ 109 if( !db->mallocFailed && rc==SQLITE_OK ){
110 rc = sqlite3IcuInit(db); 110 rc = sqlite3IcuInit(db);
111 diff --git a/third_party/sqlite/src/src/recover.c b/third_party/sqlite/src/src/r ecover.c 111 diff --git a/third_party/sqlite/src/src/recover.c b/third_party/sqlite/src/src/r ecover.c
112 new file mode 100644 112 new file mode 100644
113 index 0000000..c996d53 113 index 0000000..6882d6f
114 --- /dev/null 114 --- /dev/null
115 +++ b/third_party/sqlite/src/src/recover.c 115 +++ b/third_party/sqlite/src/src/recover.c
116 @@ -0,0 +1,2164 @@ 116 @@ -0,0 +1,2165 @@
117 +/* 117 +/*
118 +** 2012 Jan 11 118 +** 2012 Jan 11
119 +** 119 +**
120 +** The author disclaims copyright to this source code. In place of 120 +** The author disclaims copyright to this source code. In place of
121 +** a legal notice, here is a blessing: 121 +** a legal notice, here is a blessing:
122 +** 122 +**
123 +** May you do good and not evil. 123 +** May you do good and not evil.
124 +** May you find forgiveness for yourself and forgive others. 124 +** May you find forgiveness for yourself and forgive others.
125 +** May you share freely, never taking more than you give. 125 +** May you share freely, never taking more than you give.
126 +*/ 126 +*/
(...skipping 1857 matching lines...) Expand 10 before | Expand all | Expand 10 after
1984 + recoverRowid, /* xRowid - read data */ 1984 + recoverRowid, /* xRowid - read data */
1985 + 0, /* xUpdate - write data */ 1985 + 0, /* xUpdate - write data */
1986 + 0, /* xBegin - begin transaction */ 1986 + 0, /* xBegin - begin transaction */
1987 + 0, /* xSync - sync transaction */ 1987 + 0, /* xSync - sync transaction */
1988 + 0, /* xCommit - commit transaction */ 1988 + 0, /* xCommit - commit transaction */
1989 + 0, /* xRollback - rollback transaction */ 1989 + 0, /* xRollback - rollback transaction */
1990 + 0, /* xFindFunction - function overloading */ 1990 + 0, /* xFindFunction - function overloading */
1991 + 0, /* xRename - rename the table */ 1991 + 0, /* xRename - rename the table */
1992 +}; 1992 +};
1993 + 1993 +
1994 +CHROMIUM_SQLITE_API
1994 +int recoverVtableInit(sqlite3 *db){ 1995 +int recoverVtableInit(sqlite3 *db){
1995 + return sqlite3_create_module_v2(db, "recover", &recoverModule, NULL, 0); 1996 + return sqlite3_create_module_v2(db, "recover", &recoverModule, NULL, 0);
1996 +} 1997 +}
1997 + 1998 +
1998 +/* This section of code is for parsing the create input and 1999 +/* This section of code is for parsing the create input and
1999 + * initializing the module. 2000 + * initializing the module.
2000 + */ 2001 + */
2001 + 2002 +
2002 +/* Find the next word in zText and place the endpoints in pzWord*. 2003 +/* Find the next word in zText and place the endpoints in pzWord*.
2003 + * Returns true if the word is non-empty. "Word" is defined as 2004 + * Returns true if the word is non-empty. "Word" is defined as
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
2272 + sqlite3_free(zCreateSql); 2273 + sqlite3_free(zCreateSql);
2273 + if( rc!=SQLITE_OK ){ 2274 + if( rc!=SQLITE_OK ){
2274 + recoverRelease(pRecover); 2275 + recoverRelease(pRecover);
2275 + return rc; 2276 + return rc;
2276 + } 2277 + }
2277 + 2278 +
2278 + *ppVtab = (sqlite3_vtab *)pRecover; 2279 + *ppVtab = (sqlite3_vtab *)pRecover;
2279 + return SQLITE_OK; 2280 + return SQLITE_OK;
2280 +} 2281 +}
2281 diff --git a/third_party/sqlite/src/src/sqlite.h.in b/third_party/sqlite/src/src /sqlite.h.in 2282 diff --git a/third_party/sqlite/src/src/sqlite.h.in b/third_party/sqlite/src/src /sqlite.h.in
2282 index f1d4e40..28b5ef1 100644 2283 index 36aa999..333adfe 100644
2283 --- a/third_party/sqlite/src/src/sqlite.h.in 2284 --- a/third_party/sqlite/src/src/sqlite.h.in
2284 +++ b/third_party/sqlite/src/src/sqlite.h.in 2285 +++ b/third_party/sqlite/src/src/sqlite.h.in
2285 @@ -7408,6 +7408,17 @@ int sqlite3_vtab_on_conflict(sqlite3 *); 2286 @@ -7408,6 +7408,22 @@ int sqlite3_vtab_on_conflict(sqlite3 *);
2286 2287
2287 2288
2288 2289
2289 +/* Begin recover.patch for Chromium */ 2290 +/* Begin recover virtual table patch for Chromium */
2291 +/* Our patches don't conform to SQLite's amalgamation processing. Hack it. */
2292 +#ifndef CHROMIUM_SQLITE_API
2293 +#define CHROMIUM_SQLITE_API SQLITE_API
2294 +#endif
2290 +/* 2295 +/*
2291 +** Call to initialize the recover virtual-table modules (see recover.c). 2296 +** Call to initialize the recover virtual-table modules (see recover.c).
2292 +** 2297 +**
2293 +** This could be loaded by default in main.c, but that would make the 2298 +** This could be loaded by default in main.c, but that would make the
2294 +** virtual table available to Web SQL. Breaking it out allows only 2299 +** virtual table available to Web SQL. Breaking it out allows only
2295 +** selected users to enable it (currently sql/recovery.cc). 2300 +** selected users to enable it (currently sql/recovery.cc).
2296 +*/ 2301 +*/
2302 +CHROMIUM_SQLITE_API
2297 +int recoverVtableInit(sqlite3 *db); 2303 +int recoverVtableInit(sqlite3 *db);
2298 +/* End recover.patch for Chromium */ 2304 +/* End recover virtual table patch for Chromium */
2299 + 2305 +
2300 /* 2306 /* Begin WebDatabase patch for Chromium */
2301 ** Undo the hack that converts floating point types to integer for 2307 /* Expose some SQLite internals for the WebDatabase vfs.
2302 ** builds on processors without floating point support. 2308 ** DO NOT EXTEND THE USE OF THIS.
2303 diff --git a/third_party/sqlite/src/test/recover.test b/third_party/sqlite/src/t est/recover.test 2309 diff --git a/third_party/sqlite/src/test/recover.test b/third_party/sqlite/src/t est/recover.test
2304 new file mode 100644 2310 new file mode 100644
2305 index 0000000..b5aa182 2311 index 0000000..b5aa182
2306 --- /dev/null 2312 --- /dev/null
2307 +++ b/third_party/sqlite/src/test/recover.test 2313 +++ b/third_party/sqlite/src/test/recover.test
2308 @@ -0,0 +1,147 @@ 2314 @@ -0,0 +1,147 @@
2309 +# 2012 January 11 {} 2315 +# 2012 January 11 {}
2310 +# 2316 +#
2311 +# The author disclaims copyright to this source code. In place of 2317 +# The author disclaims copyright to this source code. In place of
2312 +# a legal notice, here is a blessing: 2318 +# a legal notice, here is a blessing:
(...skipping 1283 matching lines...) Expand 10 before | Expand all | Expand 10 after
3596 @@ -316,6 +316,8 @@ foreach file { 3602 @@ -316,6 +316,8 @@ foreach file {
3597 main.c 3603 main.c
3598 notify.c 3604 notify.c
3599 3605
3600 + recover.c 3606 + recover.c
3601 + 3607 +
3602 fts3.c 3608 fts3.c
3603 fts3_aux.c 3609 fts3_aux.c
3604 fts3_expr.c 3610 fts3_expr.c
3605 -- 3611 --
3606 2.2.1 3612 2.4.5
3607 3613
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698