SQLite Forum

COUNT statement returns inconsistent values when used with UNION ALL
Login
The final count(*) returns 2 in both 3.33 and 3.35
However SELECT * FROM v2 NATURAL JOIN v2 returns 2 rows of 0 in 3.33 and returns four rows of zero in 3.35 (on Windows 64-bit)

SQLite version 3.33.0 2020-08-14 13:23:32
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> CREATE VIEW v0 ( v1 ) AS SELECT CAST ( 0 AS VARCHAR(1) );
sqlite> CREATE VIEW v2 ( v3 ) AS SELECT * FROM v0 UNION ALL SELECT ( v1 IN ( 10) ) from v0;
sqlite> SELECT * FROM v2 NATURAL JOIN v2;
0
0
sqlite> SELECT COUNT(*) FROM v2 NATURAL JOIN v2;
2


SQLite version 3.35.4 2021-04-02 15:20:15
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> CREATE VIEW v0 ( v1 ) AS SELECT CAST ( 0 AS VARCHAR(1) );
sqlite> CREATE VIEW v2 ( v3 ) AS SELECT * FROM v0 UNION ALL SELECT ( v1 IN ( 10) ) from v0;
sqlite> SELECT * FROM v2 NATURAL JOIN v2;
0
0
0
0
sqlite> SELECT COUNT(*) FROM v2 NATURAL JOIN v2;
2
sqlite>