From: drh Date: Thu, 13 Oct 2011 13:34:04 +0000 (+0000) Subject: Do the ".dump" command inside of a transaction to prevent other processes X-Git-Tag: version-3.7.9~40 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=58c803b7f06f74ad7f7303fb36fe480d64ed86b7;p=thirdparty%2Fsqlite.git Do the ".dump" command inside of a transaction to prevent other processes from modifying the database while the dump is underway. Ticket [2466653295e65] FossilOrigin-Name: 1c00d5454c85dfddb6c628c3742b4ddeaad6423a --- diff --git a/manifest b/manifest index c9af67b067..cea56f1741 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sharmless\scompiler\swarning\sintroduced\sinto\sos_unix.c\sby\sone\sof\sthe\s\nrecent\schanges. -D 2011-10-13T01:01:14.183 +C Do\sthe\s".dump"\scommand\sinside\sof\sa\stransaction\sto\sprevent\sother\sprocesses\nfrom\smodifying\sthe\sdatabase\swhile\sthe\sdump\sis\sunderway.\nTicket\s[2466653295e65] +D 2011-10-13T13:34:04.111 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in a162fe39e249b8ed4a65ee947c30152786cfe897 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -180,7 +180,7 @@ F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50 F src/resolve.c 36368f44569208fa074e61f4dd0b6c4fb60ca2b4 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697 F src/select.c 94b375306bfb4590fdfd76581ae663f57e94808f -F src/shell.c bef48bc4fa2e42535aee14c1e0ca34b0a43f27e4 +F src/shell.c 2a44834246f0b55fe4673cda749fa0efe4d078e2 F src/sqlite.h.in 821027573c481e45ba276b078a3ae9ebaeb9bb92 F src/sqlite3ext.h 1a1a4f784aa9c3b00edd287940197de52487cd93 F src/sqliteInt.h 6f8e592fc28d16160d017684966b3528833a46c1 @@ -966,7 +966,7 @@ F tool/symbols.sh caaf6ccc7300fd43353318b44524853e222557d5 F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 -P 8a8dcd6bd043d82dc04b6ad0614c64d20ace8e5f -R 427d2c24706186abc37fd5c28f6e528a +P 4bf4d5ebfbf5d157a8bf3a3817e2ce350f25af0e +R c828aecf4dc802851bfe4e4621a41639 U drh -Z 31d3119f9b55f979f35bd3ee2d4fe1ba +Z 1d222bf3e883f519ea46d7f751e5c97d diff --git a/manifest.uuid b/manifest.uuid index 2d0f866d9f..dd97cc88b9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -4bf4d5ebfbf5d157a8bf3a3817e2ce350f25af0e \ No newline at end of file +1c00d5454c85dfddb6c628c3742b4ddeaad6423a \ No newline at end of file diff --git a/src/shell.c b/src/shell.c index e8aa3fdb7a..db9295c6ef 100644 --- a/src/shell.c +++ b/src/shell.c @@ -1580,7 +1580,7 @@ static int do_meta_command(char *zLine, struct callback_data *p){ fprintf(p->out, "PRAGMA foreign_keys=OFF;\n"); fprintf(p->out, "BEGIN TRANSACTION;\n"); p->writableSchema = 0; - sqlite3_exec(p->db, "PRAGMA writable_schema=ON", 0, 0, 0); + sqlite3_exec(p->db, "BEGIN; PRAGMA writable_schema=ON", 0, 0, 0); p->nErr = 0; if( nArg==1 ){ run_schema_dump_query(p, @@ -1613,7 +1613,7 @@ static int do_meta_command(char *zLine, struct callback_data *p){ } } if( p->writableSchema ){ - fprintf(p->out, "PRAGMA writable_schema=OFF;\n"); + fprintf(p->out, "PRAGMA writable_schema=OFF; COMMIT;\n"); p->writableSchema = 0; } sqlite3_exec(p->db, "PRAGMA writable_schema=OFF", 0, 0, 0);