2019-05-17
| ||
20:40 | • Closed ticket [f4ec2509]: Malformed image when using no journal mode, zero cache size, and failing when creating an index. plus 6 other changes (artifact: 90d3b35d user: drh) | |
20:37 | Disable PRAGMA journal_mode=OFF when SQLITE_DBCONFIG_DEFENSIVE is turned on. Ticket [f4ec250930342e0c]. (check-in: a0f5eb5c user: drh tags: trunk) | |
12:48 | • New ticket [f4ec2509] Malformed image when using no journal mode, zero cache size, and failing when creating an index.. (artifact: 7c739489 user: mrigger) | |
Ticket Hash: | f4ec250930342e0c146bade2571c10f43085be34 | |||
Title: | Malformed image when using no journal mode, zero cache size, and failing when creating an index. | |||
Status: | Closed | Type: | Code_Defect | |
Severity: | Minor | Priority: | Immediate | |
Subsystem: | Code_Generator | Resolution: | Works_As_Designed | |
Last Modified: | 2019-05-17 20:40:46 | |||
Version Found In: | 3.28 | |||
User Comments: | ||||
mrigger added on 2019-05-17 12:48:17:
Consider the following example: PRAGMA journal_mode=OFF; PRAGMA main.cache_size=0; CREATE TABLE IF NOT EXISTS t0 (c0); CREATE INDEX i0 ON t0(1); DROP INDEX "i0"; INSERT OR IGNORE INTO t0(c0) VALUES (1), (2); CREATE UNIQUE INDEX i0 ON t0(1); -- UNIQUE constraint failed: index 'i0' CREATE UNIQUE INDEX i0 ON t0(1); -- database disk image is malformed Is this expected? The documentation mentions that the ROLLBACK statement cannot be used with journal_mode=OFF, but it does not mention failed index creation. drh added on 2019-05-17 20:40:46: This is the expected behavior when there is no journal available to rollback a partially completed operation that fails due to a constraint. The documentation has been strengthened to try to make this clear. And PRAGMA journal_mode=OFF is now disallowed if SQLITE_DBCONFIG_DEFENSIVE is turned on. |