On 3/7/18, Mark Wagner <m...@google.com> wrote:
> e.g. both are accepted
> CREATE TABLE foo(_id primary key, x, y, unique(x), unique(y));
> CREATE TABLE foo(_id primary key, x, y, unique(x) unique(y));
> Just curious if this is some historical artifact or if there's some
> difference between the two that I'm not aware of.

This appears to be an historical artifact.

A quick spot-check shows that both forms are accepted and appear to
work going back to SQLite version 3.0.0 (2004-06-18).  But this is not
something that has been part of our test suite, so you should strive
to use only the first (correct) form.

I would fix this parser problem, except there are literally over a
trillion SQLite database files in circulation, and even if only 0.001%
of those use the incorrect second form, that still means millions of
database files out there that would break if we "fix" it.  Hence, I
won't document the second form as valid syntax, but I will add test
cases to make sure the second form continues to be accepted, to ensure
future compatibility.

D. Richard Hipp
sqlite-users mailing list

Reply via email to