**How to reproduce**
Clickhouse version 21.2-21.3

```
SELECT x
FROM
(
    SELECT 1 AS x
    UNION DISTINCT
    SELECT 1
)
LIMIT 1

Query id: b82bbb8d-dea9-4f1c-9a2f-5b0e9b6c2422


0 rows in set. Elapsed: 0.002 sec.

Received exception from server (version 21.2.3):
Code: 49. DB::Exception: Received from localhost:9000. DB::Exception: Bad cast from type DB::ASTSelectWithUnionQuery to DB::ASTSelectQuery.
```


need_analyze_again = true;
    }
    if (need_analyze_again)
    {
        subquery_for_sets = std::move(query_analyzer->getSubqueriesForSets());
        
        
        analyze( false);
    }
    
    if (query.prewhere() && !query.where())
        analysis_result.prewhere_info->need_filter = true;
    if (table_id && got_storage_from_query && !joined_tables.isLeftTableFunction())
    {
        
        
        checkAccessRightsForSelect(*context, table_id, metadata_snapshot, required_columns, *syntax_analyzer_result);
        
        if (shouldIgnoreQuotaAndLimits(table_id) && (joined_tables.tablesCount() <= 1))
        {
            options.ignore_quota = true;
            options.ignore_limits = true;
        }
    }
    
    
    
    sanitizeBlock(result_header, true);
}
void InterpreterSelectQuery::buildQueryPlan(QueryPlan & query_plan)