1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

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
This commit is contained in:
drh
2010-04-07 20:29:56 +00:00
parent 0a7a9155a4
commit d14133e3f4
3 changed files with 21 additions and 8 deletions

View File

@@ -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. -----BEGIN PGP SIGNED MESSAGE-----
D 2010-04-07T07:57:38 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.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -109,7 +112,7 @@ F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34
F src/backup.c e86634da8c48357a759694c9c7c471125cd8d5a8 F src/backup.c e86634da8c48357a759694c9c7c471125cd8d5a8
F src/bitvec.c 06ad2c36a9c3819c0b9cbffec7b15f58d5d834e0 F src/bitvec.c 06ad2c36a9c3819c0b9cbffec7b15f58d5d834e0
F src/btmutex.c 96a12f50f7a17475155971a241d85ec5171573ff F src/btmutex.c 96a12f50f7a17475155971a241d85ec5171573ff
F src/btree.c aa756431f712e4c30af0d0fd4df4d43897471a34 F src/btree.c 01559397cbd4a5aa62a822e8ca9ac94b6db14743
F src/btree.h ad6cff92286f9b02ec32f0b97136e9a544249f37 F src/btree.h ad6cff92286f9b02ec32f0b97136e9a544249f37
F src/btreeInt.h 22447d259639271774a931cbf66aa55112846681 F src/btreeInt.h 22447d259639271774a931cbf66aa55112846681
F src/build.c 11100b66fb97638d2d874c1d34d8db90650bb1d7 F src/build.c 11100b66fb97638d2d874c1d34d8db90650bb1d7
@@ -795,7 +798,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
P 8e1d7ef47f643503aa823d9986a931a83c63648b P af3b72d94a1b6513f02402af3ada5fb5dd390151
R 51bcf35b7373f79d429efbdc98d47286 R f78c9929d17e46d2aa7049123364c764
U dan U drh
Z 0d0fcce2f576d5ee2c7b69eff33a7bc0 Z 4bb39b0a9403860754323008ca41f9d2
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFLvOtHoxKgR168RlERAr6UAJ9fo0g92PB14exEgBW5OrP0Aot84wCfZZHy
n7PVWjhCjUBrl1g3CQG0QF4=
=WMyU
-----END PGP SIGNATURE-----

View File

@@ -1 +1 @@
af3b72d94a1b6513f02402af3ada5fb5dd390151 a3540c6acf2bb6bdd44c101b63f17ca85e6b68ed

View File

@@ -3280,6 +3280,9 @@ int sqlite3BtreeSavepoint(Btree *p, int op, int iSavepoint){
if( iSavepoint<0 && pBt->initiallyEmpty ) pBt->nPage = 0; if( iSavepoint<0 && pBt->initiallyEmpty ) pBt->nPage = 0;
rc = newDatabase(pBt); rc = newDatabase(pBt);
pBt->nPage = get4byte(28 + pBt->pPage1->aData); pBt->nPage = get4byte(28 + pBt->pPage1->aData);
if( pBt->nPage==0 ){
sqlite3PagerPagecount(pBt->pPager, (int*)&pBt->nPage);
}
} }
sqlite3BtreeLeave(p); sqlite3BtreeLeave(p);
} }