From: drh <> Date: Thu, 28 Nov 2024 01:47:44 +0000 (+0000) Subject: The sqlite3ExprCompare() routine should always compare the same variables X-Git-Tag: major-relase~106^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3ff6aa6e3999a0e9fadbc80926e69e3f2b91ad68;p=thirdparty%2Fsqlite.git The sqlite3ExprCompare() routine should always compare the same variables as equal to one another, regardless of whether or not QPSG is set. FossilOrigin-Name: df95d5209a77c0302e08ea7b1f248646fb2a062ba5beca898678aee0a1d03a3a --- diff --git a/manifest b/manifest index 142c278cbf..24769f2a3d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\stwo\sNEVER()\sconditions. -D 2024-11-28T00:58:37.403 +C The\ssqlite3ExprCompare()\sroutine\sshould\salways\scompare\sthe\ssame\svariables\nas\sequal\sto\sone\sanother,\sregardless\sof\swhether\sor\snot\sQPSG\sis\sset. +D 2024-11-28T01:47:44.201 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -726,7 +726,7 @@ F src/date.c 89ce1ff20512a7fa5070ba6e7dd5c171148ca7d580955795bf97c79c2456144a F src/dbpage.c db1be8adaf1f839ad733c08baeac5c22aa912f7b535865c0c061382602081360 F src/dbstat.c 73362c0df0f40ad5523a6f5501224959d0976757b511299bf892313e79d14f5c F src/delete.c 03a77ba20e54f0f42ebd8eddf15411ed6bdb06a2c472ac4b6b336521bf7cea42 -F src/expr.c 9084ade243ef14259986230a5f3599459eaf7cf200b87b5fe8dc29187cdcde2c +F src/expr.c 4c63e54936581c817ae8016206d166d80984767dcbe8260335d30a3a949b46b8 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 928ed2517e8732113d2b9821aa37af639688d752f4ea9ac6e0e393d713eeb76f F src/func.c 49489dcce46d2d491cedb451e974264150c473e5f5bba448498a9aa4c1993537 @@ -2201,8 +2201,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P d96ecbee59b50eca25447456dfff2c168e8eade7a68e542932d5829f97debb31 -R c1720db3ecd4ced84ca8ae6628cd5f49 +P 4f358ad20dc8a45e7aaa1a1996b40abd39caf34be6556ed54e1e0c80572b7ac0 +R bf789819bbc729d8b5b556765482541d U drh -Z c947295bb77ac6e7f18a91b6b404684e +Z cce72d62fb16414e1a59b528ee955fa0 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 59b628059b..f688f406bf 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -4f358ad20dc8a45e7aaa1a1996b40abd39caf34be6556ed54e1e0c80572b7ac0 +df95d5209a77c0302e08ea7b1f248646fb2a062ba5beca898678aee0a1d03a3a diff --git a/src/expr.c b/src/expr.c index 6c7a93118e..709d90fad4 100644 --- a/src/expr.c +++ b/src/expr.c @@ -6193,6 +6193,15 @@ static SQLITE_NOINLINE int exprCompareVariable( int iVar; sqlite3_value *pL, *pR = 0; + if( pExpr->op==TK_VARIABLE ){ + assert( pVar->u.zToken!=0 ); + assert( pExpr->u.zToken!=0 ); + if( pVar->iColumn==pExpr->iColumn + && strcmp(pVar->u.zToken,pExpr->u.zToken)==0 + ){ + return 0; + } + } if( (pParse->db->flags & SQLITE_EnableQPSG)!=0 ) return 2; sqlite3ValueFromExpr(pParse->db, pExpr, SQLITE_UTF8, SQLITE_AFF_BLOB, &pR); if( pR ){