From: drh <> Date: Fri, 3 Dec 2021 15:48:42 +0000 (+0000) Subject: Fix exprAnalyze() after recent performance enhancements so that it is able X-Git-Tag: version-3.38.0~198 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=60a8e1b43c982e9317e255cafa40702b27ab98f0;p=thirdparty%2Fsqlite.git Fix exprAnalyze() after recent performance enhancements so that it is able to handle IF_NULL_ROW opcode correctly, again. FossilOrigin-Name: 8029e6bab508bf0b8ec1df00a829c5d4de2a84d66dc56b9ff03da879ceef7788 --- diff --git a/manifest b/manifest index dc6fa42308..e2d4a70289 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sunreachable\sbranches\sresulting\sfrom\sprior\soptimizations. -D 2021-12-03T14:57:05.912 +C Fix\sexprAnalyze()\safter\srecent\sperformance\senhancements\sso\sthat\sit\sis\sable\nto\shandle\sIF_NULL_ROW\sopcode\scorrectly,\sagain. +D 2021-12-03T15:48:42.503 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -640,7 +640,7 @@ F src/walker.c f890a3298418d7cba3b69b8803594fdc484ea241206a8dfa99db6dd36f8cbb3b F src/where.c b50391df607937593596fbb8ea39f673d9a3715a65750567b442d22dd20720ca F src/whereInt.h 1630d9418512b080598e9a72b8af6b8bd1b9ab13fee1458f151762b6df206791 F src/wherecode.c 1f5b62f46d284c8886945eb7438415bc27e23e87bb60b9ee468fa6bd31268f33 -F src/whereexpr.c 779b3230a76510de63f5d45e47df931be05320a8f290c287130a30344c73ea1f +F src/whereexpr.c 19394cb463003e9cc9305730b1508b8817a22bb7247170d81234b691a7f05b89 F src/window.c 5d3b397b0c026d0ff5890244ac41359e524c01ae31e78782e1ff418c3e271a9e F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 F test/affinity2.test ce1aafc86e110685b324e9a763eab4f2a73f737842ec3b687bd965867de90627 @@ -1933,7 +1933,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 b9db5c5fc618a36d70ea2aced9c96094d665935b5c15a987013334f1bd79eb00 -R 62fc2562c9bdca584bc5f7af404e360c +P f3d6853ee80be2dc6d7236d98b850beb0e1931a624d4f5b194c8db742cde7ec5 +R f7c21b32b86d486ed00c79fd5643ce8f U drh -Z a47d8ad1f6786c210062821f95b3efde +Z 7b145c2e945c01598a45c251b2a2a878 diff --git a/manifest.uuid b/manifest.uuid index a6d9596b1b..2be18ad032 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -f3d6853ee80be2dc6d7236d98b850beb0e1931a624d4f5b194c8db742cde7ec5 \ No newline at end of file +8029e6bab508bf0b8ec1df00a829c5d4de2a84d66dc56b9ff03da879ceef7788 \ No newline at end of file diff --git a/src/whereexpr.c b/src/whereexpr.c index 852c56f385..eff7f4ab22 100644 --- a/src/whereexpr.c +++ b/src/whereexpr.c @@ -1090,7 +1090,10 @@ static void exprAnalyze( prereqAll = prereqLeft | pTerm->prereqRight; }else{ pTerm->prereqRight = sqlite3WhereExprUsage(pMaskSet, pExpr->pRight); - if( pExpr->pLeft==0 || NEVER(ExprUseXSelect(pExpr)) || pExpr->x.pList!=0 ){ + if( pExpr->pLeft==0 + || ExprHasProperty(pExpr, EP_xIsSelect|EP_IfNullRow) + || pExpr->x.pList!=0 + ){ prereqAll = sqlite3WhereExprUsageNN(pMaskSet, pExpr); }else{ prereqAll = prereqLeft | pTerm->prereqRight;