From 59f2b8b7c5e4e738702f8039de490a5dce134518 Mon Sep 17 00:00:00 2001 From: drh Date: Thu, 16 Jan 2020 13:02:26 +0000 Subject: [PATCH] Very small performance improvement by ensuring that the argument to sqlite3VdbeFreeCursor() is non-NULL. Hold for the next sprint. FossilOrigin-Name: f8801ffd946d288099bc3af20602c0d2794b4542ce77b8e15a3d57cac28066a6 --- manifest | 17 ++++++++++------- manifest.uuid | 2 +- src/vdbe.c | 6 ++++-- src/vdbeaux.c | 6 ++---- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/manifest b/manifest index ceb2dae77e..5d8f21d468 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index aa609bb64a..c30a18cc7b 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -86b5e5a20e967af7ac444ff0a40c2e8b93b7e5c505eebf6d3753a341b05503a8 \ No newline at end of file +f8801ffd946d288099bc3af20602c0d2794b4542ce77b8e15a3d57cac28066a6 \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index 14c83bd1f8..042e132199 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -4053,8 +4053,10 @@ case OP_OpenPseudo: { */ case OP_Close: { assert( pOp->p1>=0 && pOp->p1nCursor ); - 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; } diff --git a/src/vdbeaux.c b/src/vdbeaux.c index fab8b705c8..b0c1b25dcd 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -1911,7 +1911,7 @@ void sqlite3VdbeFrameDelete(VdbeFrame *p){ VdbeCursor **apCsr = (VdbeCursor **)&aMem[p->nChildMem]; assert( sqlite3VdbeFrameIsValid(p) ); for(i=0; inChildCsr; 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: { -- 2.39.5