SQLite

View Ticket
Login
Ticket Hash: 7d7525cb01b68712495d3aa4a788ff71c45e5077
Title: Compatibility break on INTEGER PRIMARY KEY columns.
Status: Fixed Type: Code_Defect
Severity: Critical Priority: Immediate
Subsystem: Unknown Resolution: Fixed
Last Modified: 2016-04-18 15:58:37
Version Found In:
User Comments:
drh added on 2016-04-18 15:24:18:

SQLite as always allowed the datatype of a column to be quoted. For example:

CREATE TABLE t1(
  a "INTEGER" PRIMARY KEY,
  b "TEXT"
);

But beginning with version 3.12.0, quoting the "INTEGER" datatype causes SQLite to fail to recognize that the column is the INTEGER PRIMARY KEY that has special properties. This means that legacy database files that were created using INTEGER PRIMARY KEYs where the "INTEGER" keywords was quoted become unreadable.

The fact that legacy versions of SQLite allowed datatype names to be quoted is undocumented and untested, and was a fact unknown to the developers, which is how this problem managed to slip through testing.