From 389f9caa75b67994741e4b64a39daf0c5758d339 Mon Sep 17 00:00:00 2001 From: Dan Kennedy Date: Sat, 16 Mar 2024 14:27:10 +0000 Subject: [PATCH] Fix exprNodeIsConstantFunction() so that it returns WRC_Continue, not WRC_Abort, if the function really is constant. --- src/expr.c | 3 ++- test/values.test | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/expr.c b/src/expr.c index 6050058e43..95567de799 100644 --- a/src/expr.c +++ b/src/expr.c @@ -2388,8 +2388,9 @@ static SQLITE_NOINLINE int exprNodeIsConstantFunction( || (pDef->funcFlags & (SQLITE_FUNC_CONSTANT|SQLITE_FUNC_SLOCHNG))==0 ){ pWalker->eCode = 0; + return WRC_Abort; } - return WRC_Abort; + return WRC_Continue; } diff --git a/test/values.test b/test/values.test index 3dba3dda94..b96c9e5d23 100644 --- a/test/values.test +++ b/test/values.test @@ -401,6 +401,19 @@ do_execsql_test 12.2 { SELECT * FROM t1 } {1 2 3 4 5 6} +#------------------------------------------------------------------------- +reset_db +do_execsql_test 13.0 { + CREATE TABLE t1(x); + INSERT INTO t1 VALUES('xyz'); + + SELECT ( + VALUES( (max(substr('abc', 1, 1), x)) ), + (123), + (456) + ) + FROM t1; +} {xyz} finish_test -- 2.11.4.GIT