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>