]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Improvements to sqlite3SelectCheckOnClauses() to be more accurate in
authordrh <>
Mon, 1 Jun 2026 12:19:30 +0000 (12:19 +0000)
committerdrh <>
Mon, 1 Jun 2026 12:19:30 +0000 (12:19 +0000)
identifying table-valued functions that references tables to the right.

FossilOrigin-Name: e5bae3687dbb470ead7e8d6bf428b1fbb1e9f10c214bc2a91e93e68fb2ae6ff7

manifest
manifest.uuid
src/select.c

index aa8075c3560543cf65111e706d5977c1942e527c..140a901757dd739c55e657c1ffd651c079faf9af 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Back\sout\sthe\srecent\schange\sto\scarray.\s\sThe\sintent\sis\sto\sfix\sthis\sproblem\nin\sa\sdifferent\sway\sso\sthat\sit\sworks\sfor\sall\stable-valued\sfunctions.
-D 2026-06-01T12:07:21.662
+C Improvements\sto\ssqlite3SelectCheckOnClauses()\sto\sbe\smore\saccurate\sin\nidentifying\stable-valued\sfunctions\sthat\sreferences\stables\sto\sthe\sright.
+D 2026-06-01T12:19:30.460
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -737,7 +737,7 @@ F src/printf.c 1b3d26ed8ea9a900317832625d5e83b833c7cf14640d7d98a2c235e172b6fefc
 F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 F src/resolve.c 7e936a09405cb59e2b3e51a3ad23753e4803afc5269c5171a54c9bdd70f4fc50
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
-F src/select.c 4c05cde130f26991b7411d8c6809e0630625e18078742c963a047b4b9cc01d49
+F src/select.c 5c3a5e3c1e6c3f8ccabeb414e18dce64e6f3e797de225ee93034f2c9e76f289c
 F src/shell.c.in 710fcfafabceccf7969d92848f44bc3e779aa889dfc501102aa19b5fece9848c
 F src/sqlite.h.in 749454ec71c875bc130d399ff9a7e47191d143d1b9d8b4af3839b6028df9eda9
 F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
@@ -2207,12 +2207,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
 F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
 F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P a8dac6af353c02aed8eaaba5921e036d3f3a6639367ae70e8c75d759c7b4ab52
-Q -3c0a277e6741c72281e12c44d85902aa6780890a7f59bacc3ac2b35ba27f7211
-R f18e0b69c03d4dfa250325f78c741c04
-T *branch * right-ref-cte
-T *sym-right-ref-cte *
-T -sym-trunk *
+P 43e02dbb0dbe7192304125cd3298b3f4bbac02395d4d03f7f8d5f96b465eb43e
+R 1aa6df702c9a3bafd416c0ab2cbf418f
 U drh
-Z 55f4eb42a0a1934257d59044d7e23ac1
+Z 980d33bdd2c6b1b1d249c4592eedfa4a
 # Remove this line to create a well-formed Fossil manifest.
index 87afbe87edffb8e2bb8498bd4a41d538fda69ef8..3f8a689155f2b8ebacd8e7ff3016c3d9a4ad66d2 100644 (file)
@@ -1 +1 @@
-43e02dbb0dbe7192304125cd3298b3f4bbac02395d4d03f7f8d5f96b465eb43e
+e5bae3687dbb470ead7e8d6bf428b1fbb1e9f10c214bc2a91e93e68fb2ae6ff7
index 41c14e91cdce2b3dc5c3e9554e88f19e10d9ff4e..2cdda672c3cfcab921d75b7ad359c686027f4d7d 100644 (file)
@@ -7432,8 +7432,11 @@ static int selectCheckOnClausesExpr(Walker *pWalker, Expr *pExpr){
     ** does not refer to a table to the right of CheckOnCtx.iJoin. */
     do {
       SrcList *pSrc = pCtx->pSrc;
+      int nSrc = pSrc->nSrc;
       int iTab = pExpr->iTable;
-      if( iTab>=pSrc->a[0].iCursor && iTab<=pSrc->a[pSrc->nSrc-1].iCursor ){
+      int ii;
+      for(ii=0; ii<nSrc && pSrc->a[ii].iCursor!=iTab; ii++){}
+      if( ii<nSrc ){
         if( pCtx->iJoin && iTab>pCtx->iJoin ){
           sqlite3ErrorMsg(pWalker->pParse, 
               "%s references tables to its right",