mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Fix an affinity problem caused by a USING or NATURAL JOIN on the LHS of a FULL JOIN. [forum:/forumpost/5028c785b6|Forum post 5028c785b6].
FossilOrigin-Name: 8d393ca07fe09f48d77adb517e2e4baaa58a9251422de62a0504999205d3ea1d
This commit is contained in:
16
manifest
16
manifest
@ -1,5 +1,5 @@
|
|||||||
C Relax\squery\sflattener\sconstraint\s(3b)\sand\sthereby\sallow\sflattening\sthe\sRHS\sof\na\sLEFT\sJOIN\seven\sif\sthe\sRHS\scontains\sa\svirtual\stable.\s\sThis\swas\spreviously\ndisallowed\sby\s[9dbae1df75219e2a]\sas\sa\sperformance\soptimization.\s\sIt\nturns\sout\sthat\sthe\sconstraint\scauses\sperformance\sissues,\sand\swe\sdo\snot\shave\na\srecord\sof\sany\sperformance\sissue\sthat\sit\ssolves.
|
C Fix\san\saffinity\sproblem\scaused\sby\sa\sUSING\sor\sNATURAL\sJOIN\son\sthe\sLHS\sof\sa\sFULL\sJOIN.\s[forum:/forumpost/5028c785b6|Forum\spost\s5028c785b6].
|
||||||
D 2025-05-31T16:17:14.990
|
D 2025-05-31T18:16:21.946
|
||||||
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
|
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
@ -785,7 +785,7 @@ F src/printf.c 3b91c334f528359145f4dde0dedd945bbb21044d0825ea064934d7222d61662c
|
|||||||
F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
|
F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
|
||||||
F src/resolve.c d40fe18d7c2fd0339f5846ffcf7d6809866e380acdf14c76fb2af87e9fe13f64
|
F src/resolve.c d40fe18d7c2fd0339f5846ffcf7d6809866e380acdf14c76fb2af87e9fe13f64
|
||||||
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
|
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
|
||||||
F src/select.c d0dfddf0ded00913570263ed6ef46878efd2a7c824233fd3904c81e4d05bc923
|
F src/select.c 9929e56e78f958657bfbb8234916473468243f90af359cc646d97c3ee809c79c
|
||||||
F src/shell.c.in ba53a52dafb167ac6320703da741386c34fbcabe8c078a188bb9f89808e3ef8f
|
F src/shell.c.in ba53a52dafb167ac6320703da741386c34fbcabe8c078a188bb9f89808e3ef8f
|
||||||
F src/sqlite.h.in 22882ddd3a70751aa8864c81993ee4562ed54c2c508b6270f75e223ffee38e1b
|
F src/sqlite.h.in 22882ddd3a70751aa8864c81993ee4562ed54c2c508b6270f75e223ffee38e1b
|
||||||
F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
|
F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
|
||||||
@ -1376,7 +1376,7 @@ F test/joinC.test 1f1a602c2127f55f136e2cbd3bf2d26546614bf8cffe5902ec1ac9c07f87f2
|
|||||||
F test/joinD.test 2ce62e7353a0702ca5e70008faf319c1d4686aa19fba34275c6d1da0e960be28
|
F test/joinD.test 2ce62e7353a0702ca5e70008faf319c1d4686aa19fba34275c6d1da0e960be28
|
||||||
F test/joinE.test d5d182f3812771e2c0d97c9dcf5dbe4c41c8e21c82560e59358731c4a3981d6b
|
F test/joinE.test d5d182f3812771e2c0d97c9dcf5dbe4c41c8e21c82560e59358731c4a3981d6b
|
||||||
F test/joinF.test 53dd66158806823ea680dd7543b5406af151b5aafa5cd06a7f3231cd94938127
|
F test/joinF.test 53dd66158806823ea680dd7543b5406af151b5aafa5cd06a7f3231cd94938127
|
||||||
F test/joinH.test 55f69e64da74d4eca2235237f3acb657aef181e22e45daa228e35bba865e0255
|
F test/joinH.test 29a25ea2c6323c6dd1ee7f2da906f24efbd467d60a9531e6704b8e2c88de9b9a
|
||||||
F test/journal1.test bc61a4228db11bffca118bd358ba4b868524bf080f3532749de6c539656e20fa
|
F test/journal1.test bc61a4228db11bffca118bd358ba4b868524bf080f3532749de6c539656e20fa
|
||||||
F test/journal2.test 9dac6b4ba0ca79c3b21446bbae993a462c2397c4
|
F test/journal2.test 9dac6b4ba0ca79c3b21446bbae993a462c2397c4
|
||||||
F test/journal3.test e5aeff93a7776cf644dbc48dec277655cff80a1cd24689036abc87869b120ea6
|
F test/journal3.test e5aeff93a7776cf644dbc48dec277655cff80a1cd24689036abc87869b120ea6
|
||||||
@ -2207,8 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
|
|||||||
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
|
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
|
||||||
F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
|
F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
|
||||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||||
P 7d884386bec11f47c2c18002dd8c573c9b5cb6f7cdf2307a96cccead05b6abf2
|
P 1ddaa92057e550ea281d45d9860eafe69399224725548a93dd91c47a34e52152
|
||||||
R 52b5e04212112150fc1a41026d6d393f
|
R 89af89664e25dccfda8f6cb0f81b4128
|
||||||
U drh
|
U dan
|
||||||
Z e8f3cf7347e28213896d8a300a9e60bd
|
Z bd82500cd206375faf72e64feca43230
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
1ddaa92057e550ea281d45d9860eafe69399224725548a93dd91c47a34e52152
|
8d393ca07fe09f48d77adb517e2e4baaa58a9251422de62a0504999205d3ea1d
|
||||||
|
@ -630,6 +630,9 @@ static int sqlite3ProcessJoin(Parse *pParse, Select *p){
|
|||||||
if( pFuncArgs ){
|
if( pFuncArgs ){
|
||||||
pFuncArgs = sqlite3ExprListAppend(pParse, pFuncArgs, pE1);
|
pFuncArgs = sqlite3ExprListAppend(pParse, pFuncArgs, pE1);
|
||||||
pE1 = sqlite3ExprFunction(pParse, pFuncArgs, &tkCoalesce, 0);
|
pE1 = sqlite3ExprFunction(pParse, pFuncArgs, &tkCoalesce, 0);
|
||||||
|
if( pE1 ){
|
||||||
|
pE1->affExpr = sqlite3ExprAffinity(pFuncArgs->a[0].pExpr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}else if( (pSrc->a[i+1].fg.jointype & JT_LEFT)!=0 && pParse->nErr==0 ){
|
}else if( (pSrc->a[i+1].fg.jointype & JT_LEFT)!=0 && pParse->nErr==0 ){
|
||||||
assert( pE1!=0 );
|
assert( pE1!=0 );
|
||||||
|
@ -341,4 +341,53 @@ do_execsql_test 13.4 {
|
|||||||
GROUP BY a1.a ORDER BY 1;
|
GROUP BY a1.a ORDER BY 1;
|
||||||
} {-1480 240 480}
|
} {-1480 240 480}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# 2025-05-30
|
||||||
|
# https://sqlite.org/forum/forumpost/5028c785b6
|
||||||
|
#
|
||||||
|
reset_db
|
||||||
|
|
||||||
|
do_execsql_test 14.0 {
|
||||||
|
CREATE TABLE t1(c0 INT);
|
||||||
|
CREATE TABLE t2(c0 BLOB);
|
||||||
|
CREATE TABLE t3(c0 BLOB);
|
||||||
|
CREATE TABLE t4(c4 BLOB);
|
||||||
|
INSERT INTO t1(c0) VALUES(0);
|
||||||
|
INSERT INTO t3(c0) VALUES('0');
|
||||||
|
}
|
||||||
|
|
||||||
|
do_execsql_test 14.1.1 {
|
||||||
|
SELECT * FROM t1 NATURAL LEFT JOIN t2 NATURAL JOIN t3;
|
||||||
|
} {0}
|
||||||
|
|
||||||
|
do_execsql_test 14.1.2 {
|
||||||
|
SELECT * FROM t1 NATURAL LEFT JOIN t2 NATURAL JOIN t3 FULL JOIN t4 ON true;
|
||||||
|
} {0 {}}
|
||||||
|
|
||||||
|
do_execsql_test 14.1.3 {
|
||||||
|
SELECT * FROM (t1 NATURAL LEFT JOIN t2 NATURAL JOIN t3) FULL JOIN t4 ON true;
|
||||||
|
} {0 {}}
|
||||||
|
|
||||||
|
do_execsql_test 14.1.4 {
|
||||||
|
SELECT *
|
||||||
|
FROM (t1 NATURAL LEFT JOIN t2 NATURAL JOIN t3) AS qq FULL JOIN t4 ON true;
|
||||||
|
} {0 {}}
|
||||||
|
|
||||||
|
do_execsql_test 14.2.1 {
|
||||||
|
SELECT * FROM t3 NATURAL LEFT JOIN t2 NATURAL JOIN t1;
|
||||||
|
} {0}
|
||||||
|
|
||||||
|
do_execsql_test 14.2.2 {
|
||||||
|
SELECT * FROM t3 NATURAL LEFT JOIN t2 NATURAL JOIN t1 FULL JOIN t4 ON true;
|
||||||
|
} {0 {}}
|
||||||
|
|
||||||
|
do_execsql_test 14.2.3 {
|
||||||
|
SELECT * FROM (t3 NATURAL LEFT JOIN t2 NATURAL JOIN t1) FULL JOIN t4 ON true;
|
||||||
|
} {0 {}}
|
||||||
|
|
||||||
|
do_execsql_test 14.2.4 {
|
||||||
|
SELECT *
|
||||||
|
FROM (t3 NATURAL LEFT JOIN t2 NATURAL JOIN t1) AS qq FULL JOIN t4 ON true;
|
||||||
|
} {0 {}}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
Reference in New Issue
Block a user