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

Unified Diff: third_party/sqlite/src/ext/rbu/rbu.c

Issue 2751253002: [sql] Import SQLite 3.17.0. (Closed)
Patch Set: also clang on Linux i386 Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/sqlite/src/ext/misc/vtshim.c ('k') | third_party/sqlite/src/ext/rbu/rbu1.test » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/sqlite/src/ext/rbu/rbu.c
diff --git a/third_party/sqlite/src/ext/rbu/rbu.c b/third_party/sqlite/src/ext/rbu/rbu.c
index dd46743def7e6526c593d43c6c6525d7dc18124b..a3efad0d44e5d30561df12dee565b6393fc7c233 100644
--- a/third_party/sqlite/src/ext/rbu/rbu.c
+++ b/third_party/sqlite/src/ext/rbu/rbu.c
@@ -24,12 +24,22 @@
*/
void usage(const char *zArgv0){
fprintf(stderr,
-"Usage: %s [-step NSTEP] TARGET-DB RBU-DB\n"
+"Usage: %s ?OPTIONS? TARGET-DB RBU-DB\n"
"\n"
-" Argument RBU-DB must be an RBU database containing an update suitable for\n"
-" target database TARGET-DB. If NSTEP is set to less than or equal to zero\n"
-" (the default value), this program attempts to apply the entire update to\n"
-" the target database.\n"
+"Where options are:\n"
+"\n"
+" -step NSTEP\n"
+" -vacuum\n"
+"\n"
+" If the -vacuum switch is not present, argument RBU-DB must be an RBU\n"
+" database containing an update suitable for target database TARGET-DB.\n"
+" Or, if -vacuum is specified, then TARGET-DB is a database to vacuum using\n"
+" RBU, and RBU-DB is used as the state database for the vacuum (refer to\n"
+" API documentation for details).\n"
+"\n"
+" If NSTEP is set to less than or equal to zero (the default value), this \n"
+" program attempts to perform the entire update or vacuum operation before\n"
+" exiting\n"
"\n"
" If NSTEP is greater than zero, then a maximum of NSTEP calls are made\n"
" to sqlite3rbu_step(). If the RBU update has not been completely applied\n"
@@ -69,29 +79,43 @@ int main(int argc, char **argv){
char *zErrmsg; /* Error message, if any */
sqlite3rbu *pRbu; /* RBU handle */
int nStep = 0; /* Maximum number of step() calls */
+ int bVacuum = 0;
int rc;
sqlite3_int64 nProgress = 0;
+ int nArg = argc-2;
- /* Process command line arguments. Following this block local variables
- ** zTarget, zRbu and nStep are all set. */
- if( argc==5 ){
- int nArg1 = strlen(argv[1]);
- if( nArg1>5 || nArg1<2 || memcmp("-step", argv[1], nArg1) ) usage(argv[0]);
- nStep = atoi(argv[2]);
- }else if( argc!=3 ){
- usage(argv[0]);
+ if( argc<3 ) usage(argv[0]);
+ for(i=1; i<nArg; i++){
+ const char *zArg = argv[i];
+ int nArg = strlen(zArg);
+ if( nArg>1 && nArg<=8 && 0==memcmp(zArg, "-vacuum", nArg) ){
+ bVacuum = 1;
+ }else if( nArg>1 && nArg<=5 && 0==memcmp(zArg, "-step", nArg) && i<nArg-1 ){
+ i++;
+ nStep = atoi(argv[i]);
+ }else{
+ usage(argv[0]);
+ }
}
+
zTarget = argv[argc-2];
zRbu = argv[argc-1];
report_default_vfs();
- /* Open an RBU handle. If nStep is less than or equal to zero, call
+ /* Open an RBU handle. A vacuum handle if -vacuum was specified, or a
+ ** regular RBU update handle otherwise. */
+ if( bVacuum ){
+ pRbu = sqlite3rbu_vacuum(zTarget, zRbu);
+ }else{
+ pRbu = sqlite3rbu_open(zTarget, zRbu, 0);
+ }
+ report_rbu_vfs(pRbu);
+
+ /* If nStep is less than or equal to zero, call
** sqlite3rbu_step() until either the RBU has been completely applied
** or an error occurs. Or, if nStep is greater than zero, call
** sqlite3rbu_step() a maximum of nStep times. */
- pRbu = sqlite3rbu_open(zTarget, zRbu, 0);
- report_rbu_vfs(pRbu);
for(i=0; (nStep<=0 || i<nStep) && sqlite3rbu_step(pRbu)==SQLITE_OK; i++);
nProgress = sqlite3rbu_progress(pRbu);
rc = sqlite3rbu_close(pRbu, &zErrmsg);
@@ -103,7 +127,7 @@ int main(int argc, char **argv){
"SQLITE_OK: rbu update incomplete (%lld operations so far)\n",
nProgress
);
- fprintf(stdout, zBuf);
+ fprintf(stdout, "%s", zBuf);
break;
case SQLITE_DONE:
@@ -111,7 +135,7 @@ int main(int argc, char **argv){
"SQLITE_DONE: rbu update completed (%lld operations)\n",
nProgress
);
- fprintf(stdout, zBuf);
+ fprintf(stdout, "%s", zBuf);
break;
default:
@@ -122,4 +146,3 @@ int main(int argc, char **argv){
sqlite3_free(zErrmsg);
return (rc==SQLITE_OK || rc==SQLITE_DONE) ? 0 : 1;
}
-
« no previous file with comments | « third_party/sqlite/src/ext/misc/vtshim.c ('k') | third_party/sqlite/src/ext/rbu/rbu1.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698