From: drh <> Date: Mon, 15 Dec 2025 11:59:47 +0000 (+0000) Subject: Enable an ORDER BY clause to refer to columns in outer queries. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e2bb4cf41211f33cccaa5724f520e934e8349062;p=thirdparty%2Fsqlite.git Enable an ORDER BY clause to refer to columns in outer queries. FossilOrigin-Name: ef9b4b1e4690c889c48f4e725d42127c46f60c6bf2023ae79bf1e9c6c83368ec --- diff --git a/manifest b/manifest index 39f2571223..b72a5996e2 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Use\sthe\scorrect\swildcard\scharacter\sin\ssqlite3_strlike()\sin\sthe\sprevious\ncheck-in. -D 2025-12-13T23:18:04.144 +C Enable\san\sORDER\sBY\sclause\sto\srefer\sto\scolumns\sin\souter\squeries. +D 2025-12-15T11:59:47.350 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -734,7 +734,7 @@ F src/pragma.c ecec75795c1821520266e4f93fa8840cce48979af532db06f085e36a7813860f F src/prepare.c f6a6e28a281bd1d1da12f47d370a81af46159b40f73bf7fa0b276b664f9c8b7d F src/printf.c b1b29b5e58e1530d5daeee5963d3c318d8ab2d7e38437580e28755753e0c1ded F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c -F src/resolve.c 8d53771eb51a4ab5f970150c3a70969d8db79cd04a8774c2d296bbcf471a0dd0 +F src/resolve.c 47aa7fdc9ec4c19b103ac5e79d7887d30119b5675309facf5eed1118391c868b F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97 F src/select.c 344518c1bba9c4636bf651b7642304abd2e7075ba35feb4bae42a51e5efe991f F src/shell.c.in e584486e622dea388ea18e34e31bc873e24c6c24f337f012b4bb21260a735dee @@ -1303,7 +1303,7 @@ F test/insert.test 97cfb30b83ca1622b9422a1e4c4831b4cb767cf5d654660945036d1e72067 F test/insert2.test 4d14b8f1b810a41995f6286b64a6943215d52208 F test/insert3.test 1b7db95a03ad9c5013fdf7d6722b6cd66ee55e30 F test/insert4.test 2bf81535a990c969665d66db51fcf76c23499b39893b5109f413d1de4ad34cd3 -F test/insert5.test 394f96728d1258f406fe5f5aeb0aaf29487c39a6 +F test/insert5.test 79f6b6efd0d3db5f4e3ff442300b7d9e7185adb345b29aacc3ea5a9c58ab9beb F test/insertfault.test ac63d14ea3b49c573673a572f4014b9117383a03e497c58f308b5c776e4a7f74 F test/instr.test 67ba309e9697c24a304e98a7c8f372456177dd4e32237d2a305e1e05f7bb79c2 F test/instrfault.test 95e28efade652e6d51ae11b377088fe523a581a07ec428009e152a4dd0e0f44c @@ -2184,8 +2184,8 @@ F tool/version-info.c 33d0390ef484b3b1cb685d59362be891ea162123cea181cb8e6d2cf6dd F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 19cc0522e2255f21f6fb6af1442c2ba122fdd4deacd9ea2c181ce9e597b88770 -R 7a73b7f1bc5ed629cd68f0086c0f9453 +P 87bca1250c5e660debbb29c5fabb89082c2d2059fc8b5851e1b1a519c3be7fc1 +R f004c13af1a1be21bad8d4c7d8ba20e0 U drh -Z 52ad00c135771aee4324337abaa21212 +Z 5c74dbec152b78ca8dccf7f221dabb42 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 2dc554938a..5f3c7a224b 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -87bca1250c5e660debbb29c5fabb89082c2d2059fc8b5851e1b1a519c3be7fc1 +ef9b4b1e4690c889c48f4e725d42127c46f60c6bf2023ae79bf1e9c6c83368ec diff --git a/src/resolve.c b/src/resolve.c index 0b9000fb9b..6aa8d6653b 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -2011,10 +2011,6 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ } #endif - /* The ORDER BY and GROUP BY clauses may not refer to terms in - ** outer queries - */ - sNC.pNext = 0; sNC.ncFlags |= NC_AllowAgg|NC_AllowWin; /* If this is a converted compound query, move the ORDER BY clause from diff --git a/test/insert5.test b/test/insert5.test index 1e58902e07..3ae99a5d23 100644 --- a/test/insert5.test +++ b/test/insert5.test @@ -96,22 +96,19 @@ do_test insert5-2.8 { } } {1} -# UPDATE: Using a column from the outer query (main.id) in the GROUP BY -# or ORDER BY of a sub-query is no longer supported. -# -# do_test insert5-2.9 { -# uses_temp_table { -# INSERT INTO b -# SELECT * FROM main -# WHERE id > 10 AND (SELECT count(*) FROM v2 GROUP BY main.id) -# } -# } {} do_test insert5-2.9 { catchsql { INSERT INTO b SELECT * FROM main WHERE id > 10 AND (SELECT count(*) FROM v2 GROUP BY main.id) } -} {1 {no such column: main.id}} +} {0 {}} +do_execsql_test insert5-2.10 { + CREATE TABLE t1(a INT); + INSERT INTO t1 VALUES(2); + CREATE TABLE t2(c INT, d INT); + INSERT INTO t2 VALUES(3,4),(10,NULL); + SELECT (SELECT c FROM t2 ORDER BY coalesce(d,a) LIMIT 1) FROM t1; +} {10} finish_test