Hello,
With the latest version of sqlite 3.8.5 and above we have notice some
of our existing queries are failing. We noticed this with the iOS 8.2
release.
The schema example we are using for our test case
CREATE TABLE Table2
(
id INTEGER PRIMARY KEY,
name TEXT
);
CREATE TABLE Table3
(
id INTEGER,
foo_id INTEGER,
name TEXT,
PRIMARY KEY (id,foo_id)
);
Running the query below fails (using newer version of sqlite)
sqlite> select id from Table2 union select id from Table3 order by
Table2.id collate nocase asc;
Error: no such column: Table2.id
However changing the query to this works:
sqlite> select id table2_id from Table2 union select id from Table3
order by table2_id collate nocase asc;
And this works (removing the collate nocase):
sqlite> select id from Table2 union select id from Table3 order by Table2.id
Doing a fossil bisect between version 3.7.13 (good) and version 3.8.5 (bad)
$ fossil bisect log
1 BAD 2014-06-04 14:06:34 b1ed4f2a34ba66c2
2 GOOD 2012-06-11 02:05:22 f5b5a13f7394dc14
3 BAD 2013-08-29 23:36:49 30d38cc44904d935
4 GOOD 2013-03-05 01:46:26 8e0ced1af78d8c25
5 BAD 2013-06-03 12:47:43 3bd5ad095b23102d
6 GOOD 2013-04-19 12:32:52 514adbbd8cf3e296
7 BAD 2013-05-09 14:20:11 1128575d0ab24f70
8 GOOD 2013-04-29 07:01:23 e81e9ca11db09424
9 GOOD 2013-05-03 20:08:16 9314b08099e7ac99
10 GOOD 2013-05-07 12:16:48 0ba67b64de258883
11 BAD 2013-05-08 17:06:28 1fa8c457394c9486
12 BAD 2013-05-08 16:57:48 ce853a75068073d6
13 GOOD 2013-05-08 14:20:28 7227b61512a53464
14 CURRENT 2013-05-08 14:20:28 7227b61512a53464
The commit that broke the query was ce853a75068073d6:
$ fossil info ce853a75068073d6
uuid: ce853a75068073d6acc8bec0819505a22c4c7e69 2013-05-08 16:57:48 UTC
parent: 7227b61512a534645c73883c2e37b4e647592e5d 2013-05-08 14:20:28 UTC
merged-from: fc3630cdef6e2cdbfb4e7b373d1a094753e55016 2013-05-07 17:49:08 UTC
child: 1fa8c457394c94864f7584e4c893ec09e685fba4 2013-05-08 17:06:28 UTC
leaf: no
tags: trunk
comment: Make sure the ORDER BY collating sequences are
compatible with the comparison collations before using the merge
algorithm for compound SELECT statements. Fix for
ticket [6709574d2a8d8]. (user: drh)
So is my question is: Is it my query that is broken or is this a bug?
Thanks,
Jerry