Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | In sqlite3WhereBegin, do not proceed with coding the loop if an error is detected as part of WHERE expression analysis. For for the assertion-fault described by forum post c3496cf6b1. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
db5266dec601a9513bc8dd09a9f8bb4a |
User & Date: | dan 2022-06-24 11:05:36 |
Original Comment: | In sqlite3WhereBegin, do not proceed with coding the loop if an error is detected as part of WHERE expression analysis. |
Context
2022-06-24
| ||
12:56 | Fix a harmless UBSAN warning associated with PRAGMA schema_version found by OSSFuzz. (check-in: e93fd170 user: drh tags: trunk) | |
11:05 | In sqlite3WhereBegin, do not proceed with coding the loop if an error is detected as part of WHERE expression analysis. For for the assertion-fault described by forum post c3496cf6b1. (check-in: db5266de user: dan tags: trunk) | |
11:02 | A minor fix to test/fuzzinvariants.c so that it works even with column names that originally contain a ':' and that are disambiguated. (check-in: 8d9b1fff user: drh tags: trunk) | |
Changes
Changes to src/where.c.
︙ | ︙ | |||
5588 5589 5590 5591 5592 5593 5594 | } #endif } /* Analyze all of the subexpressions. */ sqlite3WhereExprAnalyze(pTabList, &pWInfo->sWC); sqlite3WhereAddLimit(&pWInfo->sWC, pLimit); | | | 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 | } #endif } /* Analyze all of the subexpressions. */ sqlite3WhereExprAnalyze(pTabList, &pWInfo->sWC); sqlite3WhereAddLimit(&pWInfo->sWC, pLimit); if( pParse->nErr ) goto whereBeginError; /* Special case: WHERE terms that do not refer to any tables in the join ** (constant expressions). Evaluate each such term, and jump over all the ** generated code if the result is not true. ** ** Do not do this if the expression contains non-deterministic functions ** that are not within a sub-select. This is not strictly required, but |
︙ | ︙ |
Changes to test/joinH.test.
︙ | ︙ | |||
48 49 50 51 52 53 54 55 56 57 | do_execsql_test 2.1 { SELECT 'value!' FROM r3 FULL JOIN r4 ON (y=x); } {value!} do_execsql_test 2.2 { SELECT 'value!' FROM r3 FULL JOIN r4 ON (y=x) WHERE +y=55; } {value!} finish_test | > > > > > > > > > > > > > > > | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | do_execsql_test 2.1 { SELECT 'value!' FROM r3 FULL JOIN r4 ON (y=x); } {value!} do_execsql_test 2.2 { SELECT 'value!' FROM r3 FULL JOIN r4 ON (y=x) WHERE +y=55; } {value!} #----------------------------------------------------------- reset_db do_execsql_test 3.1 { CREATE TABLE t0 (c0); CREATE TABLE t1 (c0); CREATE TABLE t2 (c0 , c1 , c2 , UNIQUE (c0), UNIQUE (c2 DESC)); INSERT INTO t2 VALUES ('x', 'y', 'z'); ANALYZE; CREATE VIEW v0(c0) AS SELECT FALSE; } do_catchsql_test 3.2 { SELECT * FROM t0 LEFT OUTER JOIN t1 ON v0.c0 INNER JOIN v0 INNER JOIN t2 ON (t2.c2 NOT NULL); } {1 {ON clause references tables to its right}} finish_test |