SQLite

View Ticket
Login
Ticket Hash: 1c24a659e6d7f3a1b2289bf229ff8e9a1e463f90
Title: DROP COLUMN leaves behind an index
Status: Fixed Type: Code_Defect
Severity: Important Priority: High
Subsystem: Code_Generator Resolution: Fixed
Last Modified: 2021-03-15 14:58:51
Version Found In: 3.35.0
User Comments:
drh added on 2021-03-14 01:20:48: (text/x-markdown)
The DROP COLUMN statement below works, even though the column is indexed:

> ~~~
CREATE TABLE t1(a,b);
INSERT INTO t1 VALUES(1,2);
CREATE INDEX x1 on t1("b");
ALTER TABLE t1 DROP COLUMN b;
~~~

Subsequently reopening the database and running "PRAGMA integrity_check"
reports index corruption.  The "index corruption" problem can be resolved
by dropping the (now superfluous) index, so this is perhaps not a serious
concern, but it does need to be fixed.

The problem was reported by [Forum post e37dcf456a](https://sqlite.org/forum/forumpost/e37dcf456a).
It is perhaps related to ticket [](9b78184be266fd70).

drh added on 2021-03-14 12:01:09: (text/x-markdown)
A slightly different example of this problem that is not resolved
by check-in [](7c8aa3812599d58a).


> ~~~
CREATE TABLE t1(a, b, c);
CREATE UNIQUE INDEX x1 ON t1("a"||"b");
INSERT INTO t1 VALUES(1,2,3),(1,4,5);
ALTER TABLE t1 DROP COLUMN b;
PRAGMA integrity_check;
~~~