Ticket Hash: | 596d059af77f249314159d608e7449c899ea0764 | |||
Title: | Committing a transaction with a failed ALTER TABLE may subtly corrupt schema | |||
Status: | Closed | Type: | Code_Defect | |
Severity: | Critical | Priority: | Immediate | |
Subsystem: | Code_Generator | Resolution: | Fixed | |
Last Modified: | 2019-03-15 16:28:24 | |||
Version Found In: | ||||
User Comments: | ||||
dan added on 2019-03-15 15:43:08:
(text/x-fossil-wiki)
<verbatim> CREATE TABLE t1(a, b); CREATE TABLE t3(e, f); CREATE TRIGGER tr1 AFTER INSERT ON t1 BEGIN INSERT INTO t2 VALUES(new.a, new.b); END; BEGIN; ALTER TABLE t3 RENAME TO t4; COMMIT; SELECT * FROM sqlite_master WHERE type='table' AND name!='t1'; </verbatim> The output of the above script is: <verbatim> table|t3|t3|3|CREATE TABLE "t4"(e, f) </verbatim> The schema is now corrupt - as the table name in the SQL does not match the table names in the "name" and "tbl_name" columns. dan added on 2019-03-15 16:27:35: (text/x-fossil-wiki) Problem introduced along with the ALTER TABLE enhancements in version 3.25.0. dan added on 2019-03-15 16:28:07: (text/x-fossil-wiki) Fixed here [596d059a]. |