]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix things so that sqlite3_database_file_object() works with wal2 filenames.
authordan <dan@noemail.net>
Thu, 19 Nov 2020 16:08:08 +0000 (16:08 +0000)
committerdan <dan@noemail.net>
Thu, 19 Nov 2020 16:08:08 +0000 (16:08 +0000)
FossilOrigin-Name: c2426ae8a80d61e1ede2d065c10145ba31d4ac615803f48b7903f5f7daaa6f89

manifest
manifest.uuid
src/pager.c
src/wal.c

index 89f4cd017085646493e034b6de433e1f30b88b49..34d30c5eb293d01f01cc84268d810d1386c8a5d0 100644 (file)
--- 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
index 7bc87f2c5cd64c73f2e90e7787799de98c76775f..add304a4f18a19e622de71c885f03e0c54d232ab 100644 (file)
@@ -1 +1 @@
-91262e665755a1430f3b667867b9c4fa0cc3aa0388c21e8ba436485beefa9f4a
\ No newline at end of file
+c2426ae8a80d61e1ede2d065c10145ba31d4ac615803f48b7903f5f7daaa6f89
\ No newline at end of file
index 359c801870698846d66bb6ba158d16d82cc13879..9f837f615692fd9405aa094fbf1ecded40d55caf 100644 (file)
@@ -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;
   }
index 622264a15ff7863c74cb8aafd881878b19132795..47124992a83f6574cd1cd36f948dbd46b20081c5 100644 (file)
--- 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);