SET allow_experimental_analyzer = 1;

DROP TABLE IF EXISTS test_table;
CREATE TABLE test_table
(
    id UInt64,
    value String
) ENGINE=TinyLog;

INSERT INTO test_table VALUES (0, 'Value_0'), (1, 'Value_1'), (2, 'Value_2');

DROP TABLE IF EXISTS test_table_for_in;
CREATE TABLE test_table_for_in
(
    id UInt64
) ENGINE=TinyLog;

INSERT INTO test_table_for_in VALUES (0), (1);

-- { echoOn }

SELECT id, value FROM test_table WHERE 1 IN (SELECT 1);

SELECT '--';

SELECT id, value FROM test_table WHERE 0 IN (SELECT 1);

SELECT '--';

SELECT id, value FROM test_table WHERE id IN (SELECT 1);

SELECT '--';

SELECT id, value FROM test_table WHERE id IN (SELECT 2);

SELECT '--';

SELECT id, value FROM test_table WHERE id IN test_table_for_in;

SELECT '--';

SELECT id, value FROM test_table WHERE id IN (SELECT id FROM test_table_for_in);

SELECT '--';

SELECT id, value FROM test_table WHERE id IN (SELECT id FROM test_table_for_in UNION DISTINCT SELECT id FROM test_table_for_in);

SELECT '--';

WITH cte_test_table_for_in AS (SELECT id FROM test_table_for_in) SELECT id, value FROM test_table WHERE id IN cte_test_table_for_in;

SELECT '--';

WITH cte_test_table_for_in AS (SELECT id FROM test_table_for_in) SELECT id, value
FROM test_table WHERE id IN (SELECT id FROM cte_test_table_for_in UNION DISTINCT SELECT id FROM cte_test_table_for_in);

-- { echoOff }

DROP TABLE test_table;
DROP TABLE test_table_for_in;
