]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Bring the comments on sqlite3FindInIndex() into closer alignment with what
authordrh <>
Mon, 2 May 2022 11:24:21 +0000 (11:24 +0000)
committerdrh <>
Mon, 2 May 2022 11:24:21 +0000 (11:24 +0000)
that routine actually does.

FossilOrigin-Name: 40f3274745b53bb72933c1052d0e85bc74be56d3a1068e9d54dc28763a2cfef9

manifest
manifest.uuid
src/expr.c

index 73f80eb148b7421c83c877842de2c0dd77101eea..4b3f1993f6e098f1771e399fd499798e6621a4bd 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Defensive\scode\sin\ssqlite3TreeViewWindow()\sto\sfix\sa\scompiler\swarning.
-D 2022-04-30T19:55:28.101
+C Bring\sthe\scomments\son\ssqlite3FindInIndex()\sinto\scloser\salignment\swith\swhat\nthat\sroutine\sactually\sdoes.
+D 2022-05-02T11:24:21.557
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -504,7 +504,7 @@ F src/date.c 15082566229d4b1e5f24fdb490bf9bcc68824b911d70e3573ef075a1b9e2d26f
 F src/dbpage.c 90661a87e1db8bfbc8d2ebbdcd3749651ddb287c555c07a28fb17c7c591ffb68
 F src/dbstat.c 861e08690fcb0f2ee1165eff0060ea8d4f3e2ea10f80dab7d32ad70443a6ff2d
 F src/delete.c a8e844af211a48b13b5b358be77a12c860c6a557c21990ad51a548e2536500ce
-F src/expr.c d8c520edd0edf0b9c0ca467aa44c864ff17f265fd1cebbd224b6d5c625b638c3
+F src/expr.c 926dccca86a8d02bf2a8533ba07c9b0c576148915844a1c2217d94c718e9699b
 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
 F src/fkey.c d965ede15d8360c09ed59348940649ee647b192e784466837d7aefa836d1d91e
 F src/func.c a3407a6fbb0d4088d8d502e46f0ace63e0aeae7467ae23a9ca9815bbf9239761
@@ -1951,8 +1951,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 a193749730d6cfba617f2a64e7254c78f92bbf29b109c19055fc33f6cc643d4c
-R 1d2a81ecbf1d09fa752247278562e6d1
+P b250c218b4b6327a1cae3edbc037625ba998f89ee13a9bfbc2cefd1edfc4b768
+R b1223a28f05ca5a28b33b633588aeacf
 U drh
-Z 7657291be748b0693bb1bbfc76537229
+Z 2fc59ad1d223e831e71b6ddeee2728d5
 # Remove this line to create a well-formed Fossil manifest.
index 2ad4ff62c9805ddb463a7d042e451f4c1aa571e4..d90599d53d9aedcd8f6969184d71ceec1540805c 100644 (file)
@@ -1 +1 @@
-b250c218b4b6327a1cae3edbc037625ba998f89ee13a9bfbc2cefd1edfc4b768
\ No newline at end of file
+40f3274745b53bb72933c1052d0e85bc74be56d3a1068e9d54dc28763a2cfef9
\ No newline at end of file
index 13bacb90ca217d93e80692d7c13a7360a8487350..f8ee68dc2b146d1a0aafd63898cecc09b6d01d00 100644 (file)
@@ -2659,7 +2659,7 @@ static int sqlite3InRhsIsConstant(Expr *pIn){
 ** all members of the RHS set, skipping duplicates.
 **
 ** A cursor is opened on the b-tree object that is the RHS of the IN operator
-** and pX->iTable is set to the index of that cursor.
+** and the *piTab parameter is set to the index of that cursor.
 **
 ** The returned value of this function indicates the b-tree type, as follows:
 **
@@ -2679,7 +2679,10 @@ static int sqlite3InRhsIsConstant(Expr *pIn){
 ** If the RHS of the IN operator is a list or a more complex subquery, then
 ** an ephemeral table might need to be generated from the RHS and then
 ** pX->iTable made to point to the ephemeral table instead of an
-** existing table.
+** existing table.  In this case, the creation and initialization of the
+** ephmeral table might be put inside of a subroutine, the EP_Subrtn flag
+** will be set on pX and the pX->y.sub fields will be set to show where
+** the subroutine is coded.
 **
 ** The inFlags parameter must contain, at a minimum, one of the bits
 ** IN_INDEX_MEMBERSHIP or IN_INDEX_LOOP but not both.  If inFlags contains
@@ -2911,6 +2914,8 @@ int sqlite3FindInIndex(
    && ExprUseXList(pX)
    && (!sqlite3InRhsIsConstant(pX) || pX->x.pList->nExpr<=2)
   ){
+    pParse->nTab--;  /* Back out the allocation of the unused cursor */
+    iTab = -1;       /* Cursor is not allocated */
     eType = IN_INDEX_NOOP;
   }