From 615fc1f0831c2910aac4c943d0dc33e8ed108c6b Mon Sep 17 00:00:00 2001 From: drh <> Date: Fri, 5 Jul 2024 01:05:34 +0000 Subject: [PATCH] Small performance optimizations. FossilOrigin-Name: 99fd34b58a9b09af20f1f1a3c37137ae55159310c8af97806550eeee6adc4fc5 --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/expr.c | 4 +++- src/sqliteInt.h | 1 + 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index 50a6cde27e..f10a9394b1 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\stest\scases\sto\sin7.test. -D 2024-07-04T18:56:26.443 +C Small\sperformance\soptimizations. +D 2024-07-05T01:05:34.326 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -705,7 +705,7 @@ F src/date.c 13dd752847afb32ed70510ad7345a5b9c841f51ad904dba5d010f1fa3a6a324e F src/dbpage.c 80e46e1df623ec40486da7a5086cb723b0275a6e2a7b01d9f9b5da0f04ba2782 F src/dbstat.c 3b677254d512fcafd4d0b341bf267b38b235ccfddbef24f9154e19360fa22e43 F src/delete.c cb766727c78e715f9fb7ec8a7d03658ed2a3016343ca687acfcec9083cdca500 -F src/expr.c dd797fc96a5be012283ea1a42d8444dd97e12300769007c242fb5ed48f90d7e3 +F src/expr.c 4d76a31f37302d11c89dd5184a0e1a80a95bd3f8c97e72fa2a18b64cc8672603 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 852f93c0ef995e0c2b8983059a2b97151c194cc8259e21f5bc2b7ac508348c2a F src/func.c 1f61e32e7a357e615b5d2e774bee563761fce4f2fd97ecb0f72c33e62a2ada5f @@ -760,7 +760,7 @@ F src/shell.c.in b7d435c137eb323981adff814f172dbaabb9ba504fef17cb11d4681c1633ee1 F src/sqlite.h.in 6c884a87bbf8828562b49272025a1e66e3801a196a58b0bdec87edcd2c9c8fc1 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54 -F src/sqliteInt.h 039b5309b49399340f260ad3d1e6b6fa13e04a7b587b9daa1e694ce0f13a04a3 +F src/sqliteInt.h 5f940c22e14a7434b2fbefa53407372be2eed47b43cb9f4f98c5054c565d63b2 F src/sqliteLimit.h 6878ab64bdeb8c24a1d762d45635e34b96da21132179023338c93f820eee6728 F src/status.c cb11f8589a6912af2da3bb1ec509a94dd8ef27df4d4c1a97e0bcf2309ece972b F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1 @@ -2195,8 +2195,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 a81299be2ce203dcc28e7d0ba24791cbfba80e1ee3e1564469a226cac8adb17d -R a61b5910f9609e6e5a91fd0bf5827217 -U dan -Z 8485818c0bde0eca893245330444d4fb +P 07817efc10a6ab59dcb18ad218a3bb5a5d49a724c51296d5c8d7e386b0e0c789 +R c2554732fd5d00a4bc9161c1ecfc2ecd +U drh +Z 928bbdf1e85848abd4aedfefb3089955 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 68909b2521..52d551e6bd 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -07817efc10a6ab59dcb18ad218a3bb5a5d49a724c51296d5c8d7e386b0e0c789 +99fd34b58a9b09af20f1f1a3c37137ae55159310c8af97806550eeee6adc4fc5 diff --git a/src/expr.c b/src/expr.c index 636cbd0fed..d012c3d5e6 100644 --- a/src/expr.c +++ b/src/expr.c @@ -3436,6 +3436,7 @@ static int findCompatibleInRhsSubrtn( Vdbe *v; if( pNewSig==0 ) return 0; + if( pParse->bHasSubrtn==0 ) return 0; assert( pExpr->op==TK_IN ); assert( !ExprUseYSub(pExpr) ); assert( ExprUseXSelect(pExpr) ); @@ -3446,8 +3447,8 @@ static int findCompatibleInRhsSubrtn( pOp = sqlite3VdbeGetOp(v, 1); pEnd = sqlite3VdbeGetLastOp(v); for(; pOpopcode!=OP_BeginSubrtn ) continue; if( pOp->p4type!=P4_SUBRTNSIG ) continue; + assert( pOp->opcode==OP_BeginSubrtn ); pSig = pOp->p4.pSubrtnSig; assert( pSig!=0 ); if( pNewSig->selId!=pSig->selId ) continue; @@ -3563,6 +3564,7 @@ void sqlite3CodeRhsOfIN( pSig->regReturn = pExpr->y.sub.regReturn; pSig->iTable = iTab; sqlite3VdbeChangeP4(v, -1, (const char*)pSig, P4_SUBRTNSIG); + pParse->bHasSubrtn = 1; } addrOnce = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v); } diff --git a/src/sqliteInt.h b/src/sqliteInt.h index df6774aefd..323a257f6c 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -3834,6 +3834,7 @@ struct Parse { u8 prepFlags; /* SQLITE_PREPARE_* flags */ u8 withinRJSubrtn; /* Nesting level for RIGHT JOIN body subroutines */ u8 bHasWith; /* True if statement contains WITH */ + u8 bHasSubrtn; /* True if any P4_SUBRTNSIG has been set */ #if defined(SQLITE_DEBUG) || defined(SQLITE_COVERAGE_TEST) u8 earlyCleanup; /* OOM inside sqlite3ParserAddCleanup() */ #endif -- 2.39.5