CREATE TABLE t1(a COLLATE nocase);
  INSERT INTO t1 VALUES('one');
  INSERT INTO t1 VALUES('ONE');


  SELECT count(*) FROM t1 WHERE a COLLATE BINARY IN (SELECT DISTINCT a FROM t1)


  CREATE TABLE t3(a, b);
  INSERT INTO t3 VALUES(1, 1);
  INSERT INTO t3 VALUES(1, 2);
  INSERT INTO t3 VALUES(1, 3);
  INSERT INTO t3 VALUES(2, 4);
  INSERT INTO t3 VALUES(2, 5);
  INSERT INTO t3 VALUES(2, 6);
  INSERT INTO t3 VALUES(3, 7);
  INSERT INTO t3 VALUES(3, 8);
  INSERT INTO t3 VALUES(3, 9);


  SELECT count(*) FROM t3 WHERE b IN (SELECT DISTINCT a FROM t3 LIMIT 5);


  SELECT count(*) FROM t3 WHERE b IN (SELECT          a FROM t3 LIMIT 5);


  CREATE TABLE x1(a);
  CREATE TABLE x2(b);
  INSERT INTO x1 VALUES(1), (1), (2);
  INSERT INTO x2 VALUES(1), (2);
  SELECT count(*) FROM x2 WHERE b IN (SELECT DISTINCT a FROM x1 LIMIT 2);


  CREATE TABLE y1(a, b);
  CREATE TABLE y2(c);

  INSERT INTO y1 VALUES(1,     'one');
  INSERT INTO y1 VALUES('two', 'two');
  INSERT INTO y1 VALUES(3,     'three');

  INSERT INTO y2 VALUES('one');
  INSERT INTO y2 VALUES('two');
  INSERT INTO y2 VALUES('three');


  SELECT a FROM y1 WHERE b NOT IN (SELECT a FROM y2);


  SELECT a FROM y1 WHERE b IN (SELECT a FROM y2);


  CREATE INDEX y2c ON y2(c);
  SELECT a FROM y1 WHERE b NOT IN (SELECT a FROM y2);


  SELECT a FROM y1 WHERE b IN (SELECT a FROM y2);


  CREATE TABLE n1(a INTEGER PRIMARY KEY, b VARCHAR(500));
  CREATE UNIQUE INDEX n1a ON n1(a);


  SELECT count(*) FROM n1 WHERE a IN (1, 2, 3)


  SELECT count(*) FROM n1 WHERE a IN (SELECT +a FROM n1)


  INSERT INTO n1 VALUES(1, NULL), (2, NULL), (3, NULL);
  SELECT count(*) FROM n1 WHERE a IN (1, 2, 3)


  SELECT count(*) FROM n1 WHERE a IN (SELECT +a FROM n1)


  CREATE TABLE t9(a INTEGER PRIMARY KEY);
  INSERT INTO t9 VALUES (44), (45);


  SELECT * FROM t9 WHERE a IN (44, 45, 44, 45)


  CREATE TABLE t0(c0);
  CREATE VIEW v0(c0) AS SELECT LOWER(CAST('1e500' AS TEXT)) FROM t0;
  INSERT INTO t0(c0) VALUES (NULL);


  SELECT lower('1e500') FROM t0 WHERE rowid NOT IN (0, 0, lower('1e500'));


  SELECT lower('1e500') FROM t0 WHERE rowid != lower('1e500');