From 41422656450bed94abee2edf1df83660325afc5c Mon Sep 17 00:00:00 2001 From: drh Date: Fri, 10 May 2019 14:34:18 +0000 Subject: [PATCH] Ensure that the BtShared.nPage value is reset correctly on a SAVEPOINT ROLLBACK. FossilOrigin-Name: e6d5fee8cdbdce8515957e8288e4d1e7b06f417fd3f9deeeb636fbf5b995af51 --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/btree.c | 20 ++++++++++++++------ test/fuzzdata8.db | Bin 1105920 -> 1108992 bytes 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/manifest b/manifest index 5e85198239..0b1618cd64 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Treat\sinteger\svalues\sin\swindow\sdefinition\sORDER\sBY\sclauses\sas\sconstants,\snot\sas\sreferences\sto\sanother\sexpression. -D 2019-05-10T14:26:32.252 +C Ensure\sthat\sthe\sBtShared.nPage\svalue\sis\sreset\scorrectly\son\sa\sSAVEPOINT\s\nROLLBACK. +D 2019-05-10T14:34:18.772 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -462,7 +462,7 @@ F src/auth.c 0fac71038875693a937e506bceb492c5f136dd7b1249fbd4ae70b4e8da14f9df F src/backup.c b1d37f6f7f5913944583733ed0f9e182f3ece0d42c27f46701142141a6e6fd33 F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33 F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6 -F src/btree.c 0a276df3f912569bb8a5aac31af333dd238a72dc8e506f590555d68b2885f98e +F src/btree.c 5e15f903fd44b076b864a8d2449d63b44a546efabb66fca7dfed90f106f5c756 F src/btree.h c11446f07ec0e9dc85af8041cb0855c52f5359c8b2a43e47e02a685282504d89 F src/btreeInt.h 6111c15868b90669f79081039d19e7ea8674013f907710baa3c814dc3f8bfd3f F src/build.c 23e9332b260cd0e45f6cbfabe711957a0776ea3ff836746378868fdfa64d267b @@ -1002,7 +1002,7 @@ F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e4 F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5 F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7 F test/fuzzdata7.db 2b13f8d7a4e475f164c733e64c9ebc459424ec58d0876ef103de62c1a99e2fca -F test/fuzzdata8.db 7f1ad0a0cc9918529e7b16f48f2449ce6e7871babd71c79492bbe020fb3a63ae +F test/fuzzdata8.db 038627908808f88bad9c3ac90f3b7865766f92b2cfed585c7e083a792d554ade F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8 F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14 F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536 @@ -1825,7 +1825,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P e80b2d9fcbc82ae5dc8a1fc13196f9a30bdb504eb5a5c131d136a78bbd5bbe7b -R 5d10e80b168be165319a3925a198d45f -U dan -Z 3dc3f887bf15d65a8af6e96bb64729d0 +P 7e4809eadfe99ebfd797a7c63501421021a720bbeed9fba81bebf630c58bb791 +R 268b58938fd6d4d4d8851725d5098438 +U drh +Z 721183bcdc81f44fe0374ed072896b4f diff --git a/manifest.uuid b/manifest.uuid index b22fb68e87..2320774bf9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7e4809eadfe99ebfd797a7c63501421021a720bbeed9fba81bebf630c58bb791 \ No newline at end of file +e6d5fee8cdbdce8515957e8288e4d1e7b06f417fd3f9deeeb636fbf5b995af51 \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 2b322122a8..47c5dd9f70 100644 --- a/src/btree.c +++ b/src/btree.c @@ -4153,6 +4153,18 @@ int sqlite3BtreeTripAllCursors(Btree *pBtree, int errCode, int writeOnly){ return rc; } +/* +** Set the pBt->nPage field correctly, according to the current +** state of the database. Assume pBt->pPage1 is valid. +*/ +static void btreeSetNPage(BtShared *pBt, MemPage *pPage1){ + int nPage = get4byte(&pPage1->aData[28]); + testcase( nPage==0 ); + if( nPage==0 ) sqlite3PagerPagecount(pBt->pPager, &nPage); + testcase( pBt->nPage!=nPage ); + pBt->nPage = nPage; +} + /* ** Rollback the transaction in progress. ** @@ -4198,11 +4210,7 @@ int sqlite3BtreeRollback(Btree *p, int tripCode, int writeOnly){ ** call btreeGetPage() on page 1 again to make ** sure pPage1->aData is set correctly. */ if( btreeGetPage(pBt, 1, &pPage1, 0)==SQLITE_OK ){ - int nPage = get4byte(28+(u8*)pPage1->aData); - testcase( nPage==0 ); - if( nPage==0 ) sqlite3PagerPagecount(pBt->pPager, &nPage); - testcase( pBt->nPage!=nPage ); - pBt->nPage = nPage; + btreeSetNPage(pBt, pPage1); releasePageOne(pPage1); } assert( countValidCursors(pBt, 1)==0 ); @@ -4282,7 +4290,7 @@ int sqlite3BtreeSavepoint(Btree *p, int op, int iSavepoint){ pBt->nPage = 0; } rc = newDatabase(pBt); - pBt->nPage = get4byte(28 + pBt->pPage1->aData); + btreeSetNPage(pBt, pBt->pPage1); /* pBt->nPage might be zero if the database was corrupt when ** the transaction was started. Otherwise, it must be at least 1. */ diff --git a/test/fuzzdata8.db b/test/fuzzdata8.db index b6440aa3cc824cc787d3980cf9685d2c9ecc3dff..1a7ef8bb923d68c877a79962c2041ba1ddbe4362 100644 GIT binary patch delta 20085 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 delta 18137 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 MXCyk`wBHZ=e@LAjR{#J2