]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Very small performance improvement by ensuring that the argument to close-cursor-faster
authordrh <drh@noemail.net>
Thu, 16 Jan 2020 13:02:26 +0000 (13:02 +0000)
committerdrh <drh@noemail.net>
Thu, 16 Jan 2020 13:02:26 +0000 (13:02 +0000)
sqlite3VdbeFreeCursor() is non-NULL.  Hold for the next sprint.

FossilOrigin-Name: f8801ffd946d288099bc3af20602c0d2794b4542ce77b8e15a3d57cac28066a6

manifest
manifest.uuid
src/vdbe.c
src/vdbeaux.c

index ceb2dae77e793dd6c5b7fa485228c2ad025ab557..5d8f21d4682b489d51ff30e9e84ad7b1f455e4f0 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\san\sSQL\ssyntax\serror\sin\sthe\scomment\son\sthe\somit-left-join\soptimization.\nNo\schanges\sto\scode.
-D 2020-01-16T12:25:14.066
+C Very\ssmall\sperformance\simprovement\sby\sensuring\sthat\sthe\sargument\sto\nsqlite3VdbeFreeCursor()\sis\snon-NULL.\s\sHold\sfor\sthe\snext\ssprint.
+D 2020-01-16T13:02:26.518
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -603,11 +603,11 @@ F src/upsert.c 2920de71b20f04fe25eb00b655d086f0ba60ea133c59d7fa3325c49838818e78
 F src/utf.c 736ff76753236ffbc8b5b939f5e0607f28aeaa7c780b3a56b419228f0a81c87b
 F src/util.c e5f3971160154e5c9b660fd119b02ec4890e87cd18a5bc4d45ee60cddbb9e6a2
 F src/vacuum.c 82dcec9e7b1afa980288718ad11bc499651c722d7b9f32933c4d694d91cb6ebf
-F src/vdbe.c 35dcc7d43c2635853773d994b052061283a4e5b0e60e799cef83e410d90f3145
+F src/vdbe.c bd36fa3624bee54181a227c37d65bdbaeb5369dd1a5008c9d29005d4f087225a
 F src/vdbe.h defd693289c7bb8d325f109be9490c77138061211a116827da7244b6015a4934
 F src/vdbeInt.h 30d3e8b991547cdf39025e416a0a737b0416d46747af70ae058f60e2e0466fe7
 F src/vdbeapi.c 1252d80c548711e47a6d84dae88ed4e95d3fbb4e7bd0eaa1347299af7efddf02
-F src/vdbeaux.c ff690e6c9314ef281de7c06f8c8c33393f0afca80aabb1fe69836dcf2d60b0bf
+F src/vdbeaux.c 236b9c612b8ee802c2e65b8d27dda36c87d7e8bba17bede59ff1c4f343cf9839
 F src/vdbeblob.c 253ed82894924c362a7fa3079551d3554cd1cdace39aa833da77d3bc67e7c1b1
 F src/vdbemem.c ad9e6217635f2b04df98bc57b12c98cefc9c0a1745cca47f4e8109119213253d
 F src/vdbesort.c a3be032cc3fee0e3af31773af4a7a6f931b7230a34f53282ccf1d9a2a72343be
@@ -1857,7 +1857,10 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P af06f80a590e20f64fa2f630e85fa728c266ea4696b975cc5f2ab72a3b914379
-R 9a8c9df7f9259d9aaa9715d05b9ca046
+P 86b5e5a20e967af7ac444ff0a40c2e8b93b7e5c505eebf6d3753a341b05503a8
+R 47da7063528f28081fc2bb201dd0e23b
+T *branch * close-cursor-faster
+T *sym-close-cursor-faster *
+T -sym-trunk *
 U drh
-Z c83be37898e2cd5899ddcac01ce6852d
+Z 1ee70ee6e40038b3997c71f1bcb449bf
index aa609bb64a2e782374f4150d8f26a9d71955da73..c30a18cc7ba421c0b76ac3d45cb5a43e80fd29c5 100644 (file)
@@ -1 +1 @@
-86b5e5a20e967af7ac444ff0a40c2e8b93b7e5c505eebf6d3753a341b05503a8
\ No newline at end of file
+f8801ffd946d288099bc3af20602c0d2794b4542ce77b8e15a3d57cac28066a6
\ No newline at end of file
index 14c83bd1f8bb1d13944cd637a3e5c6258fd4b01c..042e13219984db61352b5de2437df6ef43befa30 100644 (file)
@@ -4053,8 +4053,10 @@ case OP_OpenPseudo: {
 */
 case OP_Close: {
   assert( pOp->p1>=0 && pOp->p1<p->nCursor );
-  sqlite3VdbeFreeCursor(p, p->apCsr[pOp->p1]);
-  p->apCsr[pOp->p1] = 0;
+  if( p->apCsr[pOp->p1] ){
+    sqlite3VdbeFreeCursor(p, p->apCsr[pOp->p1]);
+    p->apCsr[pOp->p1] = 0;
+  }
   break;
 }
 
index fab8b705c8cba0f826a2237c3b41902455412103..b0c1b25dcd61d1913f68dc174680ce3d3cf651ec 100644 (file)
@@ -1911,7 +1911,7 @@ void sqlite3VdbeFrameDelete(VdbeFrame *p){
   VdbeCursor **apCsr = (VdbeCursor **)&aMem[p->nChildMem];
   assert( sqlite3VdbeFrameIsValid(p) );
   for(i=0; i<p->nChildCsr; i++){
-    sqlite3VdbeFreeCursor(p->v, apCsr[i]);
+    if( apCsr[i] ) sqlite3VdbeFreeCursor(p->v, apCsr[i]);
   }
   releaseMemArray(aMem, p->nChildMem);
   sqlite3VdbeDeleteAuxData(p->v->db, &p->pAuxData, -1, 0);
@@ -2406,9 +2406,7 @@ void sqlite3VdbeMakeReady(
 ** happens to hold.
 */
 void sqlite3VdbeFreeCursor(Vdbe *p, VdbeCursor *pCx){
-  if( pCx==0 ){
-    return;
-  }
+  assert( pCx!=0 );
   assert( pCx->pBtx==0 || pCx->eCurType==CURTYPE_BTREE );
   switch( pCx->eCurType ){
     case CURTYPE_SORTER: {