From 9bf3da81a0ddd287e4128dc9a7742647d33a9de4 Mon Sep 17 00:00:00 2001 From: dan Date: Thu, 19 Nov 2020 16:08:08 +0000 Subject: [PATCH] Fix things so that sqlite3_database_file_object() works with wal2 filenames. FossilOrigin-Name: c2426ae8a80d61e1ede2d065c10145ba31d4ac615803f48b7903f5f7daaa6f89 --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/pager.c | 3 +++ src/wal.c | 10 ++-------- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/manifest b/manifest index 89f4cd0170..34d30c5eb2 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Merge\slatest\strunk\schanges\sinto\sthis\sbranch. -D 2020-08-11T11:34:00.038 +C Fix\sthings\sso\sthat\ssqlite3_database_file_object()\sworks\swith\swal2\sfilenames. +D 2020-11-19T16:08:08.155 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -524,7 +524,7 @@ F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586 F src/os_unix.c 9b1b860163fd2d4d7679b5260d384d1a9f88ef917a90f28963eca8acd472d8c8 F src/os_win.c a2149ff0a85c1c3f9cc102a46c673ce87e992396ba3411bfb53db66813b32f1d F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a -F src/pager.c 35fcb2d9400404d0d8f719461b411076bcd5597574b7a238f3a04f959842a88d +F src/pager.c aafa89d881c1d56b2dc212f99a6527ca3d4f7105a01e755871657981fc411005 F src/pager.h 9d38ac4b9f0e1361f7ddb6aa0675a54f5e4f085703108d3aafe7868872113f92 F src/parse.y 5bdb760a29c0b25caf7e80e82210b81cd2ea3066d5199ca29e6eac40b34bc184 F src/pcache.c 385ff064bca69789d199a98e2169445dc16e4291fa807babd61d4890c3b34177 @@ -621,7 +621,7 @@ F src/vdbetrace.c fa3bf238002f0bbbdfb66cc8afb0cea284ff9f148d6439bc1f6f2b4c3b7143 F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c F src/vtab.c 5f5fc793092f53bbdfde296c50f563fb7bda58cf48e9cf6a8bdfbc5abd409845 F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 -F src/wal.c dafdd709d1e01f77719a983f5b3071ccd82808d59a044f8ce48cd0bfa1c1fea5 +F src/wal.c 055328936bf2519e235adcb65b3e8d416f0835ac81d577d08fd34cd29432af88 F src/wal.h d01234e828943e002040c22a7e017642962f9fd9b2dc142fa599769ae4e459e9 F src/walker.c 3df26a33dc4f54e8771600fb7fdebe1ece0896c2ad68c30ab40b017aa4395049 F src/where.c 2ea911238674e9baaeddf105dddabed92692a01996073c4d4983f9a7efe481f9 @@ -1891,7 +1891,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 0c0d0a77bc8fa68ee584ca6d7a0408dcd00734a9b6b69d127ee8477c230a749c 5bbd4bddd3b9fa64d134ed62bce3eb4a09456bf24dec2474b5d764a3a3775964 -R 19eea2388f833c601e8554bc39b427c6 +P 91262e665755a1430f3b667867b9c4fa0cc3aa0388c21e8ba436485beefa9f4a +R 526f45cc6b30de9a0c02f320de6299a2 U dan -Z e3452c6286d56d7ce7f02a59585758e0 +Z 12962dd7c3e8bd2cbe9af67559b28702 diff --git a/manifest.uuid b/manifest.uuid index 7bc87f2c5c..add304a4f1 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -91262e665755a1430f3b667867b9c4fa0cc3aa0388c21e8ba436485beefa9f4a \ No newline at end of file +c2426ae8a80d61e1ede2d065c10145ba31d4ac615803f48b7903f5f7daaa6f89 \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index 359c801870..9f837f6156 100644 --- a/src/pager.c +++ b/src/pager.c @@ -4782,6 +4782,7 @@ int sqlite3PagerOpen( nPathname + 8 + 1 + /* Journal filename */ #ifndef SQLITE_OMIT_WAL nPathname + 4 + 1 + /* WAL filename */ + nPathname + 5 + 1 + /* Second WAL filename */ #endif 3 /* Terminator */ ); @@ -4834,6 +4835,8 @@ int sqlite3PagerOpen( sqlite3FileSuffix3(zFilename, pPager->zWal); pPtr = (u8*)(pPager->zWal + sqlite3Strlen30(pPager->zWal)+1); #endif + memcpy(pPtr, zPathname, nPathname); pPtr += nPathname; + memcpy(pPtr, "-wal2", 5); pPtr += 5 + 1; }else{ pPager->zWal = 0; } diff --git a/src/wal.c b/src/wal.c index 622264a15f..47124992a8 100644 --- a/src/wal.c +++ b/src/wal.c @@ -1887,7 +1887,6 @@ int sqlite3WalOpen( int rc; /* Return Code */ Wal *pRet; /* Object to allocate and return */ int flags; /* Flags passed to OsOpen() */ - int nWalName; /* Length of zWalName in bytes */ int nByte; /* Bytes of space to allocate */ assert( zWalName && zWalName[0] ); @@ -1908,8 +1907,7 @@ int sqlite3WalOpen( assert( UNIX_SHM_BASE==WALINDEX_LOCK_OFFSET ); #endif - nWalName = sqlite3Strlen30(zWalName); - nByte = sizeof(Wal) + pVfs->szOsFile*2 + nWalName+2; + nByte = sizeof(Wal) + pVfs->szOsFile*2; /* Allocate an instance of struct Wal to return. */ *ppWal = 0; @@ -1929,11 +1927,7 @@ int sqlite3WalOpen( pRet->padToSectorBoundary = 1; pRet->exclusiveMode = (bNoShm ? WAL_HEAPMEMORY_MODE: WAL_NORMAL_MODE); pRet->bWal2 = bWal2; - - pRet->zWalName2 = (char*)pRet + sizeof(Wal) + 2*pVfs->szOsFile; - memcpy(pRet->zWalName2, zWalName, nWalName); - pRet->zWalName2[nWalName] = '2'; - pRet->zWalName2[nWalName+1] = '\0'; + pRet->zWalName2 = &zWalName[sqlite3Strlen30(zWalName)+1]; /* Open a file handle on the first write-ahead log file. */ flags = (SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_WAL); -- 2.47.3