22.4.5

```sql
SELECT dummy
FROM cluster(test_cluster_two_shards, system.one)
WHERE dummy IN (
    SELECT dummy
    FROM cluster(test_cluster_two_shards, system.one)
)
LIMIT 1 BY dummy
SETTINGS distributed_product_mode = 'local'


Received exception from server (version 22.4.5):
Code: 43. DB::Exception: Received from localhost:9000. 
DB::Exception: Cannot create column of type Set. (ILLEGAL_TYPE_OF_ARGUMENT)

```

22.3.4.20
```sql
SELECT dummy
FROM cluster(test_cluster_two_shards, system.one)
WHERE dummy IN (
    SELECT dummy
    FROM cluster(test_cluster_two_shards, system.one)
)
LIMIT 1 BY dummy
SETTINGS distributed_product_mode = 'local'

┌─dummy─┐
│     0 │
└───────┘
```
{
    const auto * select_query = getSelectQuery();
    ExpressionActionsChain::Step & step = chain.lastStep(aggregated_columns);
    NamesWithAliases result_columns;
    ASTs asts = select_query->select()->children;
    for (const auto & ast : asts)
    {
        String result_name = ast->getAliasOrColumnName();
        if (required_result_columns.empty() || required_result_columns.contains(result_name))
        {
            std::string source_name = ast->getColumnName();
            /*
             * For temporary columns created by ExpressionAnalyzer for literals,
             * use the correct source column. Using the default display name
             * returned by getColumnName is not enough, and we have to use the
             * column id set by EA. In principle, this logic applies to all kinds
             * of columns, not only literals. Literals are especially problematic
             * for two reasons:
             * 1) confusing different literal columns leads to weird side
             *    effects (see 01101_literal_columns_clash);