when I added a new column of the nested table using the type: Array(LowCardinality(String)), then insert data without this new column, it will throw an exception, the steps as follow:

- 1. Initial table
```
  CREATE TABLE nested_test
  (
      `c1` UInt32,
      `c2` DateTime,
      `nest.col1` Array(String),
      `nest.col2` Array(Int8)
  )
  ENGINE = MergeTree
  ORDER BY (c1, c2);
```

- 2. populate some data before adding new element into the nested column structure
```
INSERT INTO nested_test (c1, c2, `nest.col1`, `nest.col2`)
SELECT * FROM generateRandom('c1 UInt32, c2 DateTime, `nest.col1` Array(String), `nest.col2` Array(Int8)') LIMIT 1000000;
```
- 3. adding new element 
```
ALTER TABLE nested_test 
    ADD COLUMN `nest.col3` Array(LowCardinality(String));
```
- 4. try to add the same data:
```
INSERT INTO nested_test (c1, c2, `nest.col1`, `nest.col2`)
SELECT * FROM generateRandom('c1 UInt32, c2 DateTime, `nest.col1` Array(String), `nest.col2` Array(Int8)') LIMIT 1000000;
```
**DB::Exception:**
- CH version 21.8.12 (the same exception in version 21.12.2.17): 
Received exception from server (version 21.8.12):
Code: 53. DB::Exception: Received from localhost:9000. DB::Exception: Type mismatch for column nest.col3. Column has type Array(LowCardinality(String)), got type Array(String). 

- CH version 21.11.6:
Received exception from server (version 21.11.6):
Code: 49. DB::Exception: Received from localhost:9000. DB::Exception: Block structure mismatch in  function connect between ConvertingTransform and MergeTreeSink stream: different types:
nest.col3 Array(String) Array(size = 0, UInt64(size = 0), String(size = 0))
nest.col3 Array(LowCardinality(String)) Array(size = 0, UInt64(size = 0), ColumnLowCardinality(size = 0, UInt8(size = 0), ColumnUnique(size = 1, String(size = 1)))). (LOGICAL_ERROR)


> when I use Array(String) instead of Array(LowCardinality(String)), insert successfully, or I added the new column with default value:
```
ALTER TABLE nested_test ADD COLUMN `nest.col3` Array(LowCardinality(String)) default arrayResize(CAST([], 'Array(LowCardinality(String))'), length(`nest.col1`));
```
#pragma once
#include <Functions/IFunction.h>
#include <Interpreters/Context_fwd.h>
namespace DB
{
class FunctionReplicate : public IFunction
{
public:
    static constexpr auto name = "replicate";
    static FunctionPtr create(ContextPtr)
    {
        return std::make_shared<FunctionReplicate>();
    }
    String getName() const override
    {
        return name;
    }
    size_t getNumberOfArguments() const override
    {
        return 0;
    }
    bool isVariadic() const override { return true; }
    bool isSuitableForShortCircuitArgumentsExecution(const DataTypesWithConstInfo & ) const override { return true; }
    bool useDefaultImplementationForNulls() const override { return false; }
    DataTypePtr getReturnTypeImpl(const DataTypes & arguments) const override;
    ColumnPtr executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr &, size_t) const override;
};
}