]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Reinstate the releaseMemArray() performance optimization of
authordrh <>
Wed, 2 Mar 2022 13:45:22 +0000 (13:45 +0000)
committerdrh <>
Wed, 2 Mar 2022 13:45:22 +0000 (13:45 +0000)
[bb520293d8c11518] with corrections.

FossilOrigin-Name: 1291080d118c678072289a2e57a56b73657e9256ae47eafa7853716c8d47392f

manifest
manifest.uuid
src/vdbeaux.c

index c33545bdf8046c782fef986ef9c0a1b8bf8df484..8b54b28a116503526c2e7907dcb62f2d30cf7946 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C The\soptimization\sat\s[ece326db50201937]\sis\snot\squite\sright,\sso\sback\sit\sout\nfor\snow.
-D 2022-03-02T11:39:11.573
+C Reinstate\sthe\sreleaseMemArray()\sperformance\soptimization\sof\n[bb520293d8c11518]\swith\scorrections.
+D 2022-03-02T13:45:22.786
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -628,7 +628,7 @@ F src/vdbe.c 4b969ebe6b61f87a90aebf817bc6ebda5075fe56987591091a9bf22556262484
 F src/vdbe.h a1d0e3b934e835e73edd146f2e7c4eadb711b5c9875c18159a57483fd78e550e
 F src/vdbeInt.h 958066f0448930dac697a7d1fc345d1b5fd1bb2d93685860967b94c901a7b244
 F src/vdbeapi.c 1c80efbe51118bbecc7279023e75d18edcfa4b3dc441287e1718ee70ad594f58
-F src/vdbeaux.c ab8c90419e78021b70b3a76a02b6f6dcc8f80d4208f065e916066968909020bf
+F src/vdbeaux.c 219aef2bb6dc46f6ede76de18e7c388c30bd359ec094e178c362e1b412c56213
 F src/vdbeblob.c 5e61ce31aca17db8fb60395407457a8c1c7fb471dde405e0cd675974611dcfcd
 F src/vdbemem.c 7737f0b1c480a32b057849c804d2f21d5389649bb8be80f77ad75df700adc9a1
 F src/vdbesort.c 43756031ca7430f7aec3ef904824a7883c4ede783e51f280d99b9b65c0796e35
@@ -1944,9 +1944,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 6497997aa80419688890ed5dbbb7d6acc26bf3732305ff4a728cba1fe4d1626b
-Q -ece326db50201937eb688809df39edc7fb97413b4614d2e2e783418192f7b02a
-R 6e3d2a70dcfbb60b44acaa137825df92
+P b218a4b9fe44ffc5cb8d2a2491a5aad217d37b26ccc6b04caf8f28b71bcfe809
+R 5f0e4af1c896fc134e4b58b7139e0944
 U drh
-Z 2c1c2df4762c35de9490f72bfde9d5c8
+Z 49bdd6bb7b5e60b4733d0aedae5472b4
 # Remove this line to create a well-formed Fossil manifest.
index 8f223b6ba7e8268c4ffced99301af0a13bf8226f..5b5f56c2b5f1aea075a5c972479d5beadf9e4b81 100644 (file)
@@ -1 +1 @@
-b218a4b9fe44ffc5cb8d2a2491a5aad217d37b26ccc6b04caf8f28b71bcfe809
\ No newline at end of file
+1291080d118c678072289a2e57a56b73657e9256ae47eafa7853716c8d47392f
\ No newline at end of file
index b12094410abf46b8703a4d1ea5a7da0568720f46..3a110dd28f8f39edb650416cd6358e013b7809f5 100644 (file)
@@ -1866,7 +1866,12 @@ static void initMemArray(Mem *p, int N, sqlite3 *db, u16 flags){
 }
 
 /*
-** Release an array of N Mem elements
+** Release auxiliary memory held in an array of N Mem elements.
+**
+** After this routine returns, all Mem elements in the array will still
+** be valid.  Those Mem elements that were not holding auxiliary resources
+** will be unchanged.  Mem elements which had something freed will be
+** set to MEM_Undefined.
 */
 static void releaseMemArray(Mem *p, int N){
   if( p && N ){
@@ -1899,12 +1904,17 @@ static void releaseMemArray(Mem *p, int N){
       if( p->flags&(MEM_Agg|MEM_Dyn) ){
         testcase( (p->flags & MEM_Dyn)!=0 && p->xDel==sqlite3VdbeFrameMemDel );
         sqlite3VdbeMemRelease(p);
+        p->flags = MEM_Undefined;
       }else if( p->szMalloc ){
         sqlite3DbFreeNN(db, p->zMalloc);
         p->szMalloc = 0;
+        p->flags = MEM_Undefined;
       }
-
-      p->flags = MEM_Undefined;
+#ifdef SQLITE_DEBUG
+      else{
+        p->flags = MEM_Undefined;
+      }
+#endif
     }while( (++p)<pEnd );
   }
 }