**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.
```


executeLimitBy(query_plan);
            }
            executeWithFill(query_plan);
            
            
            if (query.limit_with_ties)
            {
                executeLimit(query_plan);
                has_prelimit = true;
            }
            
            
            if (!to_aggregation_stage)
            {
                
                executeProjection(query_plan, expressions.final_projection);
            }
            
            executeExtremes(query_plan);
            
            if (!to_aggregation_stage && !has_prelimit)
                executeLimit(query_plan);
            if (!to_aggregation_stage)
                executeOffset(query_plan);
        }
    }
    if (!subqueries_for_sets.empty() && (expressions.hasHaving() || query_analyzer->hasGlobalSubqueries()))
        executeSubqueriesInSetsAndJoins(query_plan, subqueries_for_sets);
}
static StreamLocalLimits getLimitsForStorage(const Settings & settings, const SelectQueryOptions & options)