From: drh <> Date: Mon, 20 Jul 2026 19:17:30 +0000 (+0000) Subject: Remove an incorrect ALWAYS() macro from the implementation of the X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=782a6a42e1f17ddd4158531664faca6d6895a220;p=thirdparty%2Fsqlite.git Remove an incorrect ALWAYS() macro from the implementation of the internal exprNodeCanReturnSubtype() routine so that it works with zero-argument deterministic functions like pi(). FossilOrigin-Name: a2511c6223a08033a2c5c66faee3afa50b992dc18de7a8498c8e3d24ce1376cc --- diff --git a/manifest b/manifest index 6c041784a7..c0733f28fe 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Ensure\sthat\sa\swrite\swith\sREPLACE\sconflict\sresolution\son\san\sinteger\sprimary\skey\scolumn\sis\shandled\safter\sany\sIGNORE\sor\sFAIL\sconflicts,\seven\sif\sthere\sis\salso\san\sexplicit\s"ON\sCONFLICT"\sclause\sunrelated\sto\sthe\sIPK.\sForum\spost\s[forum:info/2026-07-17T09:30:42Z\s|\s2026-07--17T09:30:42Z].\sAlso\sfix\sa\sproblem\swhereby\sa\strigger\sfired\sby\sREPLACE\sconflict\sresolution\smight\scause\sa\sUNIQUE\sconflict\sviolation\sto\sbe\scommitted\sto\sthe\sdatabase.\sForum\spost\s[forum:/info/2026-07-18T09:45:24Z\s|\s2026-07-18T09:45:24Z]. -D 2026-07-20T17:53:36.913 +C Remove\san\sincorrect\sALWAYS()\smacro\sfrom\sthe\simplementation\sof\sthe\ninternal\sexprNodeCanReturnSubtype()\sroutine\sso\sthat\sit\sworks\swith\nzero-argument\sdeterministic\sfunctions\slike\spi(). +D 2026-07-20T19:17:30.846 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -693,7 +693,7 @@ F src/date.c e1a002a4199bfa85e8778c0f72182c679580b131147d8e46d9221cfceffb8500 F src/dbpage.c c6a9de13b0a01f0bc94a41e16213ab1ecd15ccfe86df7255ced40fda9446257d F src/dbstat.c 73362c0df0f40ad5523a6f5501224959d0976757b511299bf892313e79d14f5c F src/delete.c 59eeca3fb88c29329afc41bb803ee568b120d9dd7470b5f38ab55cc38390b451 -F src/expr.c db0f3e084f4bb2b249a5890dc9a0d3614d503cda009357bfdeb040f96322ccfe +F src/expr.c 15033331b4a3d90c9dedd97706e70224fbf8f6f6f9150265362e82ceb4dc84be F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 931f74cec1dc8038a0217ef340c91ce147dd1bbed08dc40c47ee0ec6edfffb08 F src/func.c 208b4d073a1e823df8d0e19d0529093c09a9984851dcfda9808445541cefe6d0 @@ -1250,7 +1250,7 @@ F test/func3.test 6b22dfada95b778d01dba75aa00fa8e6a1fb90d30b859241638e7540edcfb3 F test/func4.test a02e695f62beb31cb092dccf6873ff97543407fff97a5f3ec4da70b5b337bc84 F test/func5.test 863e6d1bd0013d09c17236f8a13ea34008dd857d87d85a13a673960e4c25d82a F test/func6.test 3bc89ec0f2605736d3a118f43d25ef58115a7db4dba8ae939a363917d815c0bb -F test/func7.test 7e009275f52c52954c8c028fdb62f8bc16cc47276fcc8753c1d2b22c6e074598 +F test/func7.test c7a866fba2f7c0a49b25b783d36c1e47cd606981c1f016d2cbb9d4d8a99fc533 F test/func8.test c4e2ecacf9f16e47a245e7a25fbabcc7e78f9c7c41a80f158527cdfdc6dd299d F test/func9.test 32c7d53b9bc99ddd45fad29457add438f2aca43d24920793773a96b13610f552 F test/fuzz-oss1.test 514dcabb24687818ea949fa6760229eaacad74ca70157743ef36d35bbe01ffb0 @@ -2216,9 +2216,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P 4ad701b085ce1b9ada41441f560e55580f0dd33e8145857afce6c665aa974ad0 3ae4f953de5349c7e90ad245a0c21e513d4ef23d636fd786842619aff12c2d27 -R 97577b931e28fb4c4ab0611531033643 -T +closed 3ae4f953de5349c7e90ad245a0c21e513d4ef23d636fd786842619aff12c2d27 -U dan -Z 60f1f493e6cd861986e8b37e4f51bc19 +P 8f0ad8f33f5e040eb70b0b77d730c2e785827621bb0ad21afd9ce2efe4dad921 +R af279e7d50cb31f2ea35455a662fcf66 +U drh +Z 3128c0a312fc4ccc65b7c5dc80669919 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index a505b938da..cf9739ffe5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8f0ad8f33f5e040eb70b0b77d730c2e785827621bb0ad21afd9ce2efe4dad921 +a2511c6223a08033a2c5c66faee3afa50b992dc18de7a8498c8e3d24ce1376cc diff --git a/src/expr.c b/src/expr.c index 3b9a0170c8..c9402081c4 100644 --- a/src/expr.c +++ b/src/expr.c @@ -4735,7 +4735,7 @@ static int exprNodeCanReturnSubtype(Walker *pWalker, Expr *pExpr){ } assert( ExprUseXList(pExpr) ); db = pWalker->pParse->db; - n = ALWAYS(pExpr->x.pList) ? pExpr->x.pList->nExpr : 0; + n = pExpr->x.pList ? pExpr->x.pList->nExpr : 0; pDef = sqlite3FindFunction(db, pExpr->u.zToken, n, ENC(db), 0); if( NEVER(pDef==0) || (pDef->funcFlags & SQLITE_RESULT_SUBTYPE)!=0 ){ pWalker->eCode = 1; diff --git a/test/func7.test b/test/func7.test index 6026b557f5..7d06a87440 100644 --- a/test/func7.test +++ b/test/func7.test @@ -247,5 +247,12 @@ do_execsql_test func7-mysql-331 { SELECT round(tan(pi()+1),7); } {1.5574077} +do_execsql_test func7-400 { + DROP TABLE IF EXISTS t1; + CREATE TABLE t1(x); + INSERT INTO t1 VALUES(NULL); + CREATE INDEX t1x ON t1(coalesce(x,pi())); + SELECT json_quote(coalesce(x,pi())) FROM t1 INDEXED BY t1x; +} 3.1415926535897931 finish_test