Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | New test case for ticket [ec32177c99ccac2b1] that works without the STAT4. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
5259d4847f2b73f26b2385f9d8cff8fe |
User & Date: | drh 2018-01-27 13:55:56.815 |
Context
2018-01-27
| ||
14:25 | Changes to avoid a harmless UB warning from clang. (check-in: 19f5c14000 user: drh tags: trunk) | |
13:55 | New test case for ticket [ec32177c99ccac2b1] that works without the STAT4. (check-in: 5259d4847f user: drh tags: trunk) | |
05:40 | Proposed fix for the query planner problem of ticket [ec32177c99ccac2b1]. (check-in: eef8cbef3c user: drh tags: trunk) | |
Changes
Changes to test/whereF.test.
︙ | |||
276 277 278 279 280 281 282 283 284 | 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + | WHERE ( t1.b IS NOT NULL AND t2.bb IS NULL ) OR ( t2.bb < t1.b ) OR ( t1.b IS t2.bb AND t2.aa > t1.a ) ) FROM t1; } {2} # The fix for ticket ec32177c99ccac2b180fd3ea2083 only makes a difference # in the output when there is a TERM_VNULL entry in the WhereClause array. # And TERM_VNULL entries are only generated when compiling with # SQLITE_ENABLE_STAT4. Nevertheless, it is correct that TERM_VIRTUAL terms # should not participate in the factoring optimization. In all cases other # than TERM_VNULL, participation is harmless, but it does consume a few # extra CPU cycles. # # The following test verifies that the TERM_VIRTUAL terms resulting from # a GLOB operator do not appear anywhere in the generated code. This # confirms that the problem is fixed, even on builds that omit STAT4. # do_execsql_test 7.3 { DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t2; CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT); INSERT INTO t1(a,b) VALUES(1,'abcxyz'); CREATE TABLE t2(aa INTEGER PRIMARY KEY, bb TEXT); INSERT INTO t2(aa,bb) VALUES(1,'abc'),(2,'wxyz'),(3,'xyz'); CREATE INDEX t2bb ON t2(bb); EXPLAIN SELECT ( SELECT COUNT(*) FROM t2 WHERE ( t1.b GLOB 'a*z' AND t2.bb='xyz' ) OR ( t2.bb = t1.b ) OR ( t2.aa = t1.a ) ) FROM t1; } {~/ (Lt|Ge) /} finish_test |