SQLite Forum

Unexpected output from the SELECT
Login
Hi guys!

We encounter the following query, which gives us an unexpected output. 

```SQL
CREATE TABLE v0 ( c1, c2, c3,  c4, c5 );
INSERT INTO v0 VALUES ( 1, NULL, 0,  100, 200 );
INSERT INTO v0 VALUES ( 0, 0, 165, NULL, 300 );
/* v1 is a direct copy of v0 */
CREATE TABLE v1 ( c6 UNIQUE, c7, c8,  c9, c10 );
INSERT INTO v1 SELECT * FROM v0 AS a28;
 
SELECT a67.c7 > a67.c9  FROM v1 AS a67, v0 as a66 WHERE a66.c3 = a67.c10 AND a66.c3 IS a67.c6;
/* The subquery, returns NULL */
 
SELECT * FROM v0 AS a66 WHERE EXISTS ( SELECT a67.c7 > a67.c9  FROM v1 AS a67 WHERE a66.c3 = a67.c10 AND a66.c3 IS a67.c6 );
/* Returns '1| |0|100|200' */
/* Unexpected. Since the WHERE clause returns FALSE, we expect empty output. */

```

Interestingly, either removing the constraints UNIQUE from column c6, or removing the condition 'AND a66.c3 IS a67.c6' in the subquery, can fix the unexpected result. (The second SELECT returns NULL as expected then)

Bisecting shows that this unexpected output is introduced by Fossil commit: e038ce8955e785af

Detailed bisecting log:
```
  1 BAD     2021-10-02 18:22:24 5906a0152deded61
  2 BAD     2021-01-01 01:44:06 e5d7209e118a8453
  3 BAD     2019-12-31 23:17:35 eca7ec9cda4606c4
  4 BAD     2018-12-31 21:43:55 b57c545a384ab5d6
  5 BAD     2017-12-30 18:32:27 01d4e866fb7b01ae
  7 BAD     2016-04-11 14:49:39 60ad80e3af4bae9f
  8 BAD     2015-09-09 19:27:10 89bfdbfe943adce8
 10 BAD     2015-07-03 14:34:25 2b7567229e3ba7e2
 11 BAD     2015-06-12 13:04:51 2e8ad2ead9d146e3
 12 BAD     2015-05-26 00:28:08 c415bb7bbfd531b1
 13 BAD     2015-05-22 12:37:37 a6eb2a39357c35dc
 14 BAD     2015-05-16 18:31:44 ee4b74250ad7a406
 16 BAD     2015-05-15 20:14:00 1a4628c66c632d2a
 17 BAD     2015-05-15 19:59:23 e038ce8955e785af
 18 GOOD    2015-05-15 04:13:15 56ef98a04765c34c CURRENT
 15 GOOD    2015-05-14 15:39:18 be438d049dd9d7aa
  9 GOOD    2015-05-12 12:24:50 07c7d3925cbcf44c
  6 GOOD    2014-12-31 20:35:11 ec264bdee5ab8047
```

Any insights to this query is welcome. Thank you.