From: drh <> Date: Sat, 16 May 2026 19:40:55 +0000 (+0000) Subject: When two tables are joined by USING, the affinity of the join column can X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=fc12461f5cda11f4dfb5b2301e2f187a0bff20fa;p=thirdparty%2Fsqlite.git When two tables are joined by USING, the affinity of the join column can be the affinity of the corresponding column in either table. But it must be one or the other. FossilOrigin-Name: 8cc0b52cca2d6b155b4b169e6f9de9e7d2dc61c40f89920c2b6bf86e549ab6f7 --- diff --git a/manifest b/manifest index 6c4cdeeffa..79c04c9634 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sfalse-negatives\sin\sthe\ssqlite3ExprCanReturnSubtype()\sroutine\shaving\nto\sdo\swith\sCASE,\sCAST,\sand\sCOLLATE\sexpressions\sand\sthe\s"+"\sno-op\soperator.\n[forum:/forumpost/1f0168a120:Forum\spost\s1f0168a120]. -D 2026-05-16T17:28:56.739 +C When\stwo\stables\sare\sjoined\sby\sUSING,\sthe\saffinity\sof\sthe\sjoin\scolumn\scan\nbe\sthe\saffinity\sof\sthe\scorresponding\scolumn\sin\seither\stable.\s\sBut\sit\smust\nbe\sone\sor\sthe\sother. +D 2026-05-16T19:40:55.080 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -734,7 +734,7 @@ F src/pragma.c 789ef67117b74b5be0a2db6681f7f0c55e6913791b9da309aefd280de2c8a74d F src/prepare.c 084a037fd3810cb7ffbfc001cd58c0ffac68ba36598a5084b55ea2a090014ebd F src/printf.c 7085e8504f519cf6cb23a84572f785b259769907fef94bbf90ef0a5a533ab89f F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c -F src/resolve.c c6a140e57b2453f010a7e9c4ae8c739d521a6da246542aa21a62624cc966db64 +F src/resolve.c 3383354aa86f2bfcc867da24efb0e3865cad436bded234c25a5e25183c45cb76 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97 F src/select.c 4c05cde130f26991b7411d8c6809e0630625e18078742c963a047b4b9cc01d49 F src/shell.c.in 9827c3a059dc5ffe17770e7f80d92988462f80a35486b84197cb4372dd9fd8c6 @@ -1348,7 +1348,7 @@ F test/joinD.test 2ce62e7353a0702ca5e70008faf319c1d4686aa19fba34275c6d1da0e960be F test/joinE.test d5d182f3812771e2c0d97c9dcf5dbe4c41c8e21c82560e59358731c4a3981d6b F test/joinF.test 53dd66158806823ea680dd7543b5406af151b5aafa5cd06a7f3231cd94938127 F test/joinH.test 1d2fc3190be68525fd9ce749b9468c40ba2930181e52fb5ee6f836051b38effb -F test/joinI.test a4d37143fcc39e915d9feb08e614a13f88dfe332d77152a3c526a2370ddb9a70 +F test/joinI.test dd429893102187e8df0bb30ad1e9f85732158055d96eee8a12587988417d3fe4 F test/journal1.test bc61a4228db11bffca118bd358ba4b868524bf080f3532749de6c539656e20fa F test/journal2.test 9dac6b4ba0ca79c3b21446bbae993a462c2397c4 F test/journal3.test e5aeff93a7776cf644dbc48dec277655cff80a1cd24689036abc87869b120ea6 @@ -2205,9 +2205,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P 614f8cbc374c7a2d39826706f16ab1c17e75abb420a70be356c7eefa95b271a5 b57d6b76b0f9f4f154997af83f14d545bf2b6b8f7194746835e4c34885db227a -R 2a2f348cdea2758e17a1878550fc52a0 -T +closed b57d6b76b0f9f4f154997af83f14d545bf2b6b8f7194746835e4c34885db227a +P 9be94e961457967408cbd0acf11877fbb323a48eee405fff53755770f1b3261a +R f4a5ff99991f6d9cbeccb11fa4c77652 U drh -Z 553bd5602d0d8a7a6c58fe9827c438c2 +Z 1ea79e268f102209d2e3b093c77b1a9e # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 7d64f9b535..64152e3260 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9be94e961457967408cbd0acf11877fbb323a48eee405fff53755770f1b3261a +8cc0b52cca2d6b155b4b169e6f9de9e7d2dc61c40f89920c2b6bf86e549ab6f7 diff --git a/src/resolve.c b/src/resolve.c index b76bf38c00..dce1744fa0 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -774,6 +774,7 @@ static int lookupName( pExpr->op = TK_FUNCTION; pExpr->u.zToken = "coalesce"; pExpr->x.pList = pFJMatch; + pExpr->affExpr = sqlite3ExprAffinity(pFJMatch->a[0].pExpr); cnt = 1; goto lookupname_end; }else{ diff --git a/test/joinI.test b/test/joinI.test index d0194579d8..8a5572caaa 100644 --- a/test/joinI.test +++ b/test/joinI.test @@ -211,5 +211,15 @@ do_execsql_test 7.3 { ); } {1} -finish_test +#-------------------------------------------------------------------------- +# Forum post 2026-05-15T11:23:01Z +# +reset_db +do_execsql_test 8.0 { + CREATE TABLE t1(x REAL); + CREATE TABLE t2(x REAL); + INSERT INTO t1 VALUES(1.0); + SELECT count(*) FROM t1 FULL JOIN t2 USING(x) WHERE x='1'; +} 1 +finish_test