]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix exprAnalyze() after recent performance enhancements so that it is able
authordrh <>
Fri, 3 Dec 2021 15:48:42 +0000 (15:48 +0000)
committerdrh <>
Fri, 3 Dec 2021 15:48:42 +0000 (15:48 +0000)
to handle IF_NULL_ROW opcode correctly, again.

FossilOrigin-Name: 8029e6bab508bf0b8ec1df00a829c5d4de2a84d66dc56b9ff03da879ceef7788

manifest
manifest.uuid
src/whereexpr.c

index dc6fa4230815c86d00ed26270942ee3b1b4e8cb1..e2d4a7028988ab162b80e7348cae02c1d230441e 100644 (file)
--- 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
index a6d9596b1b801b38a0dd924e8ccea3c80d09e2cd..2be18ad032b94524b92d8af8a1965260588f6f39 100644 (file)
@@ -1 +1 @@
-f3d6853ee80be2dc6d7236d98b850beb0e1931a624d4f5b194c8db742cde7ec5
\ No newline at end of file
+8029e6bab508bf0b8ec1df00a829c5d4de2a84d66dc56b9ff03da879ceef7788
\ No newline at end of file
index 852c56f385563aa0ea4e4cc21c03967b53d085ee..eff7f4ab22b1528e7bb06c79c759753c10978cd4 100644 (file)
@@ -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;