From: dan Date: Tue, 15 May 2018 11:28:36 +0000 (+0000) Subject: Instead of just the flags byte, include the first 8 bytes of the relevant page X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b7ee5667c29f08436370b2043a74e2608392f534;p=thirdparty%2Fsqlite.git Instead of just the flags byte, include the first 8 bytes of the relevant page in an on-commit conflict log message. FossilOrigin-Name: e7dc03e7439f224e4bec458f27fe364f2fb1ac637328657a578ada693ae22842 --- diff --git a/manifest b/manifest index b989d2b3f2..3cd10ab329 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Include\sthe\svalue\sof\sthe\s"flags"\sbyte\sof\sthe\srelevant\spage\sin\sthe\slog\smessage\nemitted\swhen\sa\sBEGIN\sCONCURRENT\scommit\sconflict\sis\sdetected. -D 2018-05-15T08:51:05.745 +C Instead\sof\sjust\sthe\sflags\sbyte,\sinclude\sthe\sfirst\s8\sbytes\sof\sthe\srelevant\spage\nin\san\son-commit\sconflict\slog\smessage. +D 2018-05-15T11:28:36.683 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in 5ce9343cba9c189046f1afe6d2bcc1f68079439febc05267b98aec6ecc752439 @@ -437,7 +437,7 @@ F src/auth.c 6277d63837357549fe14e723490d6dc1a38768d71c795c5eb5c0f8a99f918f73 F src/backup.c faf17e60b43233c214aae6a8179d24503a61e83b F src/bitvec.c 8433d9e98dd6f2ea3286e0d2fe5d65de1bfc18a706486eb2026b01be066b5806 F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6 -F src/btree.c 593a90431223ca1dcdd3ff6797e96d36147434431dbfaf213e866e400dd408df +F src/btree.c 78be543c894d6fb6e1be538251246ae6da35d63ab29bd65dbf27a62d73444358 F src/btree.h 0cd745755efd1f3df4c70544c54253920ea32fe6b179b97e9daeb786ba0de4ba F src/btreeInt.h 6c65e6c96f561596f6870c79a64d4706af81613881d7947e3f063e923f14115f F src/build.c 1ef8945748702f0069521bafe33df41647bea777fd2353c73530d522a9fedaf8 @@ -708,7 +708,7 @@ F test/concurrent.test 86661967a680670127a62a819e60dc93c2d3d49043ac95b26dfa70d3e F test/concurrent2.test 9dfbeb0a323733fe1d13443371734bb94a674dbf777f464365475903873111f8 F test/concurrent3.test 530671ac706f6a1d0f4992dbdd33a86408330d03cd90fb9e82ecb1b27f5fd081 F test/concurrent4.test e0b12cd467137e50259df3b4f837507e82aaa07c35941c88664dc8ed1d089c44 -F test/concurrent5.test ff73e642342f02133151c23b0eecab2ec1ea5bc9645c646861a9baa4263d8f50 +F test/concurrent5.test 0c16cbf7446af162a14e6def30445e94016064eb994e5aa4ebb2bebc59554176 F test/conflict.test 029faa2d81a0d1cafb5f88614beb663d972c01db F test/conflict2.test bb0b94cf7196c64a3cbd815c66d3ee98c2fecd9c F test/conflict3.test a83db76a6c3503b2fa057c7bfb08c318d8a422202d8bc5b86226e078e5b49ff9 @@ -1736,7 +1736,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 d8ae7ba083551f05b963f13c5164ff60257c7b615cd48d675027cb6289b463da -R b31f3045e7e18d43f49b3d4aef3b5822 +P fbfa547177ac7d57dcb0775d761a7f92fc1f2263cd83e2843cd109139a8c5121 +R fdff9a25ded182bc4a0b3f2b7933cc53 U dan -Z bf3fce17ea47da69e27674ff4f78c20a +Z acdbc76c6ad1bafb932ec798f2a5510e diff --git a/manifest.uuid b/manifest.uuid index 285075f650..0fdab1824d 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -fbfa547177ac7d57dcb0775d761a7f92fc1f2263cd83e2843cd109139a8c5121 \ No newline at end of file +e7dc03e7439f224e4bec458f27fe364f2fb1ac637328657a578ada693ae22842 \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 2f4d82e5a6..35602cec08 100644 --- a/src/btree.c +++ b/src/btree.c @@ -10433,19 +10433,29 @@ int sqlite3BtreeExclusiveLock(Btree *p){ PgHdr *pPg = 0; int rc2 = sqlite3PagerGet(pBt->pPager, pgno, &pPg, 0); if( rc2==SQLITE_OK ){ - u8 pageFlags = 0; int bWrite = -1; const char *zObj = 0; const char *zTab = 0; + char zContent[17]; if( pPg ){ Pgno pgnoRoot = 0; HashElem *pE; Schema *pSchema; + u8 *aData = (u8*)sqlite3PagerGetData(pPg); + int i; + for(i=0; i<8; i++){ + static const char hexdigits[] = { + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' + }; + zContent[i*2] = hexdigits[(aData[i] >> 4)]; + zContent[i*2+1] = hexdigits[(aData[i] & 0xF)]; + } + zContent[16] = '\0'; pgnoRoot = ((MemPage*)sqlite3PagerGetExtra(pPg))->pgnoRoot; bWrite = sqlite3PagerIswriteable(pPg); - pageFlags = ((u8*)sqlite3PagerGetData(pPg))[0]; sqlite3PagerUnref(pPg); pSchema = sqlite3SchemaGet(p->db, p); @@ -10471,12 +10481,12 @@ int sqlite3BtreeExclusiveLock(Btree *p){ sqlite3_log(SQLITE_OK, "cannot commit CONCURRENT transaction " "- conflict at page %d " - "(%s page; part of db %s %s%s%s; flags=0x%02x)", + "(%s page; part of db %s %s%s%s; content=%s...)", (int)pgno, (bWrite==0?"read-only":(bWrite>0?"read/write":"unknown")), (zTab ? "index" : "table"), (zTab ? zTab : ""), (zTab ? "." : ""), (zObj ? zObj : "UNKNOWN"), - pageFlags + zContent ); } } diff --git a/test/concurrent5.test b/test/concurrent5.test index 1747e2ed44..bc00232442 100644 --- a/test/concurrent5.test +++ b/test/concurrent5.test @@ -59,7 +59,7 @@ do_test 1.1.1 { catchsql COMMIT db2 } {1 {database is locked}} do_test_conflict_msg 1.1.2 { - conflict at page 2 (read-only page; part of db table t1; flags=0x05) + conflict at page 2 (read-only page; part of db table t1; content=0500000063021100...) } do_test 1.2.1 { @@ -78,7 +78,7 @@ do_test 1.2.1 { } {1 {database is locked}} do_test_conflict_msg 1.2.2 { - conflict at page 105 (read/write page; part of db table t1; flags=0x0d) + conflict at page 105 (read/write page; part of db table t1; content=0D00000002026100...) } do_test 1.3.1 { @@ -97,7 +97,7 @@ do_test 1.3.1 { } {1 {database is locked}} do_test_conflict_msg 1.3.2 { - conflict at page 3 (read/write page; part of db table t2; flags=0x0d) + conflict at page 3 (read/write page; part of db table t2; content=0D0000000103FB00...) } do_test 1.4.1 { @@ -121,7 +121,7 @@ do_test 1.4.1 { } {1 {database is locked}} do_test_conflict_msg 1.3.2 { - conflict at page 211 (read/write page; part of db index t3.i3; flags=0x0a) + conflict at page 211 (read/write page; part of db index t3.i3; content=0A0310006300D800...) } db close