From: drh Date: Wed, 7 Apr 2010 20:29:56 +0000 (+0000) Subject: When rolling back a savepoint to the beginning of the transaction, make sure X-Git-Tag: version-3.7.2~490 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d14133e3f4bd943b3c8d91ea1ddd1b060c51ca90;p=thirdparty%2Fsqlite.git When rolling back a savepoint to the beginning of the transaction, make sure to initialize the database size in the btree layer correctly even if the database size field of the header is zeroed. FossilOrigin-Name: a3540c6acf2bb6bdd44c101b63f17ca85e6b68ed --- diff --git a/manifest b/manifest index 46fde27af6..dc0a0e8fea 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,8 @@ -C Add\sfile\stest_demovfs.c,\scontaining\sa\ssimple\sVFS\simplementation\sthat\sdemonstrates\show\swrites\sto\sthe\sjournal\sfile\smay\sbe\ssafely\sbuffered\sby\sthe\sVFS\slayer\sto\simprove\sperformance\son\ssome\sembedded\ssystems. -D 2010-04-07T07:57:38 +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + +C When\srolling\sback\sa\ssavepoint\sto\sthe\sbeginning\sof\sthe\stransaction,\smake\ssure\nto\sinitialize\sthe\sdatabase\ssize\sin\sthe\sbtree\slayer\scorrectly\seven\sif\sthe\ndatabase\ssize\sfield\sof\sthe\sheader\sis\szeroed. +D 2010-04-07T20:29:56 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -109,7 +112,7 @@ F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34 F src/backup.c e86634da8c48357a759694c9c7c471125cd8d5a8 F src/bitvec.c 06ad2c36a9c3819c0b9cbffec7b15f58d5d834e0 F src/btmutex.c 96a12f50f7a17475155971a241d85ec5171573ff -F src/btree.c aa756431f712e4c30af0d0fd4df4d43897471a34 +F src/btree.c 01559397cbd4a5aa62a822e8ca9ac94b6db14743 F src/btree.h ad6cff92286f9b02ec32f0b97136e9a544249f37 F src/btreeInt.h 22447d259639271774a931cbf66aa55112846681 F src/build.c 11100b66fb97638d2d874c1d34d8db90650bb1d7 @@ -795,7 +798,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 8e1d7ef47f643503aa823d9986a931a83c63648b -R 51bcf35b7373f79d429efbdc98d47286 -U dan -Z 0d0fcce2f576d5ee2c7b69eff33a7bc0 +P af3b72d94a1b6513f02402af3ada5fb5dd390151 +R f78c9929d17e46d2aa7049123364c764 +U drh +Z 4bb39b0a9403860754323008ca41f9d2 +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +iD8DBQFLvOtHoxKgR168RlERAr6UAJ9fo0g92PB14exEgBW5OrP0Aot84wCfZZHy +n7PVWjhCjUBrl1g3CQG0QF4= +=WMyU +-----END PGP SIGNATURE----- diff --git a/manifest.uuid b/manifest.uuid index ad07ecd44f..2798865464 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -af3b72d94a1b6513f02402af3ada5fb5dd390151 \ No newline at end of file +a3540c6acf2bb6bdd44c101b63f17ca85e6b68ed \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 8ee1662695..c8810543a1 100644 --- a/src/btree.c +++ b/src/btree.c @@ -3280,6 +3280,9 @@ int sqlite3BtreeSavepoint(Btree *p, int op, int iSavepoint){ if( iSavepoint<0 && pBt->initiallyEmpty ) pBt->nPage = 0; rc = newDatabase(pBt); pBt->nPage = get4byte(28 + pBt->pPage1->aData); + if( pBt->nPage==0 ){ + sqlite3PagerPagecount(pBt->pPager, (int*)&pBt->nPage); + } } sqlite3BtreeLeave(p); }