mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
Fix an obscure problem allowing the propagate-constants optimization to improperly substitute a column of a sub-query with NONE affinity.
FossilOrigin-Name: d82725dcaec7437f37fc15dfb492b51a4f9dbbbcaea04e387d9471b7d291cde2
This commit is contained in:
19
manifest
19
manifest
@@ -1,5 +1,5 @@
|
||||
C Remove\sunnecessary\s"www."\sprefixes\son\sdomain\snames\sin\sURLs.
|
||||
D 2025-04-10T10:18:07.458
|
||||
C Fix\san\sobscure\sproblem\sallowing\sthe\spropagate-constants\soptimization\sto\simproperly\ssubstitute\sa\scolumn\sof\sa\ssub-query\swith\sNONE\saffinity.
|
||||
D 2025-04-10T14:53:32.965
|
||||
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
@@ -785,7 +785,7 @@ F src/printf.c 33fc0d7643c848a098afdcb6e1db6de12379d47084b1cd0912cfce1d09345e44
|
||||
F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
|
||||
F src/resolve.c 20e1fbe8f840ffc0cd835e33f68a802a22e34faa918d7a269f3de242fda02f99
|
||||
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
|
||||
F src/select.c effa93763d32664a665d18951fd0ec04de8fb1bcb120dd5a6802a6dc4857f54d
|
||||
F src/select.c 716a49f7f6348771442b8dae47863bad8ddbd8d5ae9a0d82d0eeb1852aea1cf7
|
||||
F src/shell.c.in 1e8b9bf369e80cdf9b029142e773038bc12bd38aea1c56df4af6bf7b46cae955
|
||||
F src/sqlite.h.in 22882ddd3a70751aa8864c81993ee4562ed54c2c508b6270f75e223ffee38e1b
|
||||
F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
|
||||
@@ -2060,7 +2060,7 @@ F test/whereH.test e4b07f7a3c2f5d31195cd33710054c78667573b2
|
||||
F test/whereI.test c4bb7e2ca56d49bd8ab5c7bd085b8b83e353922b46904d68aefb3c7468643581
|
||||
F test/whereJ.test fc05e374cc9f2dc204148d6c06822c380ad388895fe97a6d335b94a26a08aecf
|
||||
F test/whereK.test 0270ab7f04ba5436fb9156d31d642a1c82727f4c4bfe5ba90d435c78cf44684a
|
||||
F test/whereL.test 438a397fa883b77bb6361c08a8befa41b52e9cfbe15a2a43715d122f8cfa8649
|
||||
F test/whereL.test cb115604cc9bd61acbc99a1f1df0eb1ea7a7875a77fef25ba9282f01d10283e1
|
||||
F test/whereM.test 0dbc9998783458ddcf3cc078ca7c2951d8b2677d472ecf0028f449ed327c0250
|
||||
F test/whereN.test 63a3584b71acfb6963416de82f26c6b1644abc5ca6080c76546b9246734c8803
|
||||
F test/wherefault.test 6cf2a9c5712952d463d3f45ebee7f6caf400984df51a195d884cfb7eb0e837a7
|
||||
@@ -2216,8 +2216,11 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
|
||||
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
|
||||
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
|
||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||
P 394bef54411c81fd8ca3aafc13ec2a774e9ff56c7282d90b8425cc8f383aa74c
|
||||
R 5b336d04628266a31565711fa551eff8
|
||||
U drh
|
||||
Z d59719f0b5a7503b3051272d2a11d03f
|
||||
P 20acd630b91609725794ce84f9eda01d5f3c898407f0948264830851d25ccaa6
|
||||
R 47ed749e6cbdb9364e8a1ddc5a4d9530
|
||||
T *branch * forum-0109bca824
|
||||
T *sym-forum-0109bca824 *
|
||||
T -sym-trunk *
|
||||
U dan
|
||||
Z c2d2e2caf31431a29ac413ff9e101826
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
@@ -1 +1 @@
|
||||
20acd630b91609725794ce84f9eda01d5f3c898407f0948264830851d25ccaa6
|
||||
d82725dcaec7437f37fc15dfb492b51a4f9dbbbcaea04e387d9471b7d291cde2
|
||||
|
@@ -4858,7 +4858,8 @@ static void constInsert(
|
||||
return; /* Already present. Return without doing anything. */
|
||||
}
|
||||
}
|
||||
if( sqlite3ExprAffinity(pColumn)==SQLITE_AFF_BLOB ){
|
||||
assert( SQLITE_AFF_NONE<SQLITE_AFF_BLOB );
|
||||
if( sqlite3ExprAffinity(pColumn)<=SQLITE_AFF_BLOB ){
|
||||
pConst->bHasAffBlob = 1;
|
||||
}
|
||||
|
||||
@@ -4933,7 +4934,8 @@ static int propagateConstantExprRewriteOne(
|
||||
if( pColumn==pExpr ) continue;
|
||||
if( pColumn->iTable!=pExpr->iTable ) continue;
|
||||
if( pColumn->iColumn!=pExpr->iColumn ) continue;
|
||||
if( bIgnoreAffBlob && sqlite3ExprAffinity(pColumn)==SQLITE_AFF_BLOB ){
|
||||
assert( SQLITE_AFF_NONE<SQLITE_AFF_BLOB );
|
||||
if( bIgnoreAffBlob && sqlite3ExprAffinity(pColumn)<=SQLITE_AFF_BLOB ){
|
||||
break;
|
||||
}
|
||||
/* A match is found. Add the EP_FixedCol property */
|
||||
|
@@ -254,4 +254,44 @@ do_execsql_test 810 {
|
||||
SELECT * FROM v0 LEFT JOIN t0 ON c3<NULL LEFT JOIN t1 ON 1 WHERE c2/0.1;
|
||||
} {0.2 NULL NULL 0.2}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# 2025-04-10 https://sqlite.org/forum/forumpost/0109bca824
|
||||
reset_db
|
||||
|
||||
do_execsql_test 900 {
|
||||
SELECT * FROM (SELECT 1.0 AS abc) WHERE abc=1;
|
||||
} {1.0}
|
||||
do_execsql_test 910 {
|
||||
SELECT * FROM (SELECT 1.0 AS abc) WHERE abc LIKE '1.0';
|
||||
} {1.0}
|
||||
do_execsql_test 920 {
|
||||
SELECT * FROM (SELECT 1.0 AS abc) WHERE abc=1 AND abc LIKE '1.0';
|
||||
} {1.0}
|
||||
|
||||
do_execsql_test 930 {
|
||||
CREATE TABLE IF NOT EXISTS t0 (c0 BLOB);
|
||||
CREATE TABLE IF NOT EXISTS t1 (c0 INTEGER);
|
||||
|
||||
INSERT INTO t1 VALUES ('1');
|
||||
INSERT INTO t0 VALUES (''), (''), ('2');
|
||||
}
|
||||
|
||||
do_execsql_test 940 {
|
||||
SELECT *
|
||||
FROM (SELECT 0.0 AS col_0) as subQuery
|
||||
LEFT JOIN t0 ON ((CASE ''
|
||||
WHEN t0.c0 THEN subQuery.col_0
|
||||
ELSE (t0.c0) END) LIKE (((((subQuery.col_0))))))
|
||||
LEFT JOIN t1 ON ((subQuery.col_0) == (false));
|
||||
} {0.0 {} 1 0.0 {} 1}
|
||||
|
||||
do_execsql_test 950 {
|
||||
SELECT *
|
||||
FROM (SELECT 0.0 AS col_0) as subQuery
|
||||
LEFT JOIN t0 ON ((CASE ''
|
||||
WHEN t0.c0 THEN subQuery.col_0
|
||||
ELSE (t0.c0) END) LIKE (((((subQuery.col_0))))))
|
||||
LEFT JOIN t1 ON ((subQuery.col_0) == (false)) WHERE t1.c0;
|
||||
} {0.0 {} 1 0.0 {} 1}
|
||||
|
||||
finish_test
|
||||
|
Reference in New Issue
Block a user