**Describe the issue**
Can't insert `String` data to column with `LowCardinality` type.

Starting from 21.1 this query fails

**How to reproduce**
```sql
CREATE TABLE default.lc_test
(   
    `id` LowCardinality(String)
)
ENGINE = MergeTree
PARTITION BY tuple()
ORDER BY id;

Ok.
0 rows in set. Elapsed: 0.003 sec.


insert into lc_test values (toString('a'));
Exception on client:
Code: 49. DB::Exception: Bad cast from type DB::ColumnString to DB::ColumnLowCardinality: data for INSERT was parsed from query

```

**Additional context**
related to issue https://github.com/DarkWanderer/ClickHouse.Client/issues/66

version 20.12 ok
using ExpressionActionsPtr = std::shared_ptr<ExpressionActions>;
class ConstantExpressionTemplate : boost::noncopyable
{
    struct TemplateStructure : boost::noncopyable
    {
        TemplateStructure(LiteralsInfo & replaced_literals, TokenIterator expression_begin, TokenIterator expression_end,
                          ASTPtr & expr, const IDataType & result_type, bool null_as_default_, const Context & context);
        static void addNodesToCastResult(const IDataType & result_column_type, ASTPtr & expr, bool null_as_default);
        static size_t getTemplateHash(const ASTPtr & expression, const LiteralsInfo & replaced_literals,
                                      const DataTypePtr & result_column_type, bool null_as_default, const String & salt);
        String result_column_name;
        std::vector<String> tokens;
        std::vector<size_t> token_after_literal_idx;
        Block literals;
        ExpressionActionsPtr actions_on_literals;
        std::vector<SpecialParserType> special_parser;
        bool null_as_default;
    };
public:
    using TemplateStructurePtr = std::shared_ptr<const TemplateStructure>;
    class Cache : boost::noncopyable
    {
        std::unordered_map<size_t, TemplateStructurePtr> cache;
        const size_t max_size;
    public:
        explicit Cache(size_t max_size_ = 4096) : max_size(max_size_) {}