> version 21.9.4.35 (official build) and version 21.10.2.15 (official build)

**If the attribute is nullable, a fatal error occurs when trying to get using dictGetString(). At the same time, dictGet() performs without errors.**

```
2021.11.02 09:09:07.707663 [ 9661 ] {} <Fatal> BaseDaemon: ########################################
2021.11.02 09:09:07.707716 [ 9661 ] {} <Fatal> BaseDaemon: (version 21.9.4.35 (official build), build id: 5F55EEF74E2818F777B4052BF503DF5BA7BFD787) (from thread 245) (query_id: 93bc3f5b-4e86-4a5e-a888-3103860d9c5a) Received signal Segmentation fault (11)
2021.11.02 09:09:07.707752 [ 9661 ] {} <Fatal> BaseDaemon: Address: 0xc380 Access: read. Address not mapped to object.
2021.11.02 09:09:07.707795 [ 9661 ] {} <Fatal> BaseDaemon: Stack trace: 0x937ceb0 0x1186f3bf 0x1186ee00 0x118bdb74 0x93adeb8 0x93afa5f 0x93ab19f 0x93aea83 0x7f4c86cd6609 0x7f4c86bd2293
2021.11.02 09:09:07.707912 [ 9661 ] {} <Fatal> BaseDaemon: 1. void DB::writeAnyEscapedString<(char)39, false>(char const*, char const*, DB::WriteBuffer&) @ 0x937ceb0 in /usr/bin/clickhouse
2021.11.02 09:09:07.708281 [ 9661 ] {} <Fatal> BaseDaemon: 2. DB::IRowOutputFormat::write(std::__1::vector<COW<DB::IColumn>::immutable_ptr<DB::IColumn>, std::__1::allocator<COW<DB::IColumn>::immutable_ptr<DB::IColumn> > > const&, unsigned long) @ 0x1186f3bf in /usr/bin/clickhouse
2021.11.02 09:09:07.708330 [ 9661 ] {} <Fatal> BaseDaemon: 3. DB::IRowOutputFormat::consume(DB::Chunk) @ 0x1186ee00 in /usr/bin/clickhouse
2021.11.02 09:09:07.708358 [ 9661 ] {} <Fatal> BaseDaemon: 4. DB::ParallelFormattingOutputFormat::formatterThreadFunction(unsigned long, std::__1::shared_ptr<DB::ThreadGroupStatus> const&) @ 0x118bdb74 in /usr/bin/clickhouse
2021.11.02 09:09:07.708385 [ 9661 ] {} <Fatal> BaseDaemon: 5. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x93adeb8 in /usr/bin/clickhouse
2021.11.02 09:09:07.708417 [ 9661 ] {} <Fatal> BaseDaemon: 6. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda0'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda0'()&&...)::'lambda'()::operator()() @ 0x93afa5f in /usr/bin/clickhouse
2021.11.02 09:09:07.708446 [ 9661 ] {} <Fatal> BaseDaemon: 7. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x93ab19f in /usr/bin/clickhouse
2021.11.02 09:09:07.708469 [ 9661 ] {} <Fatal> BaseDaemon: 8. ? @ 0x93aea83 in /usr/bin/clickhouse
2021.11.02 09:09:07.708502 [ 9661 ] {} <Fatal> BaseDaemon: 9. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
2021.11.02 09:09:07.708533 [ 9661 ] {} <Fatal> BaseDaemon: 10. __clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
2021.11.02 09:09:07.824821 [ 9661 ] {} <Fatal> BaseDaemon: Checksum of the binary: BEA07E96B6BEBA1591FE837CF53C7591, integrity check passed.
2021.11.02 09:09:27.757877 [ 93 ] {} <Fatal> Application: Child process was terminated by signal 11.
```

```drop table if exists default.test_table
;
create table if not exists default.test_table
(
    id       UInt64 default toUInt64(now64()),
    any_text Nullable(String)
) engine MergeTree primary key id
;
drop dictionary if exists default.test_dict
;
create dictionary if not exists default.test_dict (id UInt64,
    any_text Nullable(String))
    primary key id
    SOURCE (CLICKHOUSE(HOST 'localhost' PORT 9000 DB 'default' TABLE 'test_table'))
LAYOUT(HASHED)
LIFETIME(min 10 max 20)
;
insert into default.test_table (id,any_text)
values (1635818854,null)
;
select * from default.test_dict
--normal
;
select dictGet('default.test_dict','any_text',toUInt64(1635818854))
-- normal
;
select dictGetString('default.test_dict','any_text',toUInt64(1635818854))
-- error
;
```

* 21.9.4 release and 21.10.2 release
* Webstorm and datagreep

* default> select dictGetString('default.test_dict','any_text',toUInt64(1635818854))  
[2021-11-02 09:20:28] Connection refused: connect
DataTypePtr getReturnTypeImpl(const DataTypes & arguments) const override
    {
        size_t arguments_size = arguments.size();
        if (arguments_size < 2 || arguments_size > 3)
        {
            throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH,
                "Illegal arguments size of function {}. Expects 2 or 3 arguments size. Actual size {}",
                getName(),
                arguments_size);
        }
        if (!isString(arguments[0]))
            throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT,
                "Illegal type of first argument of function {}. Expected const String. Actual type {}",
                getName(),
                arguments[0]->getName());
        if (!WhichDataType(arguments[1]).isUInt64())
            throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT,
                "Illegal type of second argument of function {}. Expected UInt64. Actual type {}",
                getName(),
                arguments[1]->getName());
        if (arguments.size() == 3 && !isUnsignedInteger(arguments[2]))
        {
            throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT,
                "Illegal type of third argument of function {}. Expected const unsigned integer. Actual type {}",
                getName(),
                arguments[2]->getName());
        }
        return std::make_shared<DataTypeArray>(std::make_shared<DataTypeUInt64>());
    }
    ColumnPtr executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & result_type, size_t input_rows_count) const override