SQLite

Check-in [e33da6d5dc]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:New optimizations to detect early when queries return no rows due to tables being empty. This includes the EXISTS-to-JOIN optimization that tries to transform EXISTS constraints into additional terms of the FROM clause.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: e33da6d5dc964db817d1bc63c9083aecd93d49ee14d5198600b47eaf7c5b9331
User & Date: drh 2025-07-08 19:53:36.480
References
2025-07-23
12:48
Do not apply the [/info/e33da6d5dc964db8|EXISTS-to-JOIN optimization] if the subquery contains a LIMIT clause. [forum:/forumpost/2025-07-23T10:59:14z|forum post 2025-07-23T10:59:14z]. (check-in: 314c493f27 user: drh tags: trunk)
Context
2025-07-08
20:28
Adjustments to test/incrblob4.test so that it works on both Linux and Mac in spite of error message differences between those platforms. Minor change to termIsEquivalent() to provide 100% MC/DC. (check-in: 720387f860 user: drh tags: trunk)
19:53
New optimizations to detect early when queries return no rows due to tables being empty. This includes the EXISTS-to-JOIN optimization that tries to transform EXISTS constraints into additional terms of the FROM clause. (check-in: e33da6d5dc user: drh tags: trunk)
19:02
Fix a problem with the fix in [5cb8e342e1]. (check-in: 043ff54fb7 user: dan tags: trunk)
17:28
Enable the EXISTS-to-JOIN optimization if the outer query has no FROM clause. (Closed-Leaf check-in: 1b9b124f9a user: drh tags: empty-table-optimizations)
Changes
Unified Diff Side-by-Side Diff Patch
Changes to src/btree.c.
Changes to src/btree.h.
Changes to src/build.c.
Changes to src/resolve.c.
Changes to src/select.c.
Changes to src/shell.c.in.
Changes to src/sqliteInt.h.
Changes to src/vdbe.c.
Changes to src/where.c.
Changes to src/wherecode.c.
Changes to test/eqp.test.
Added test/existsexpr.test.
Added test/existsexpr2.test.
Added test/existsfault.test.
Changes to test/json101.test.
Changes to test/notnull2.test.