> 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
{
        if (input_rows_count == 0)
            return result_type->createColumn();
        /** We call dictHas function to get which map is key presented in dictionary.
            For key that presented in dictionary dict has result for that key index value will be 1. Otherwise 0.
            We invert result, and then for key that is not presented in dictionary value will be 1. Otherwise 0.
            This inverted result will be used as null column map.
            After that we call dict get function, by contract for key that are not presented in dictionary we
            return default value.
            We create nullable column from dict get result column and null column map.
            2 additional implementation details:
            1. Result from dict get can be tuple if client requested multiple attributes we apply such operation on each result column.
            2. If column is already nullable we merge column null map with null map that we get from dict has.
          */
        auto dict_has_arguments = filterAttributeNameArgumentForDictHas(arguments);
        auto is_key_in_dictionary_column = dictionary_has_func_impl.executeImpl(dict_has_arguments, std::make_shared<DataTypeUInt8>(), input_rows_count);
        auto is_key_in_dictionary_column_mutable = is_key_in_dictionary_column->assumeMutable();
        ColumnVector<UInt8> & is_key_in_dictionary_column_typed = assert_cast<ColumnVector<UInt8> &>(*is_key_in_dictionary_column_mutable);
        PaddedPODArray<UInt8> & is_key_in_dictionary_data = is_key_in_dictionary_column_typed.getData();
        for (auto & key : is_key_in_dictionary_data)
            key = !key;
        auto dictionary_get_result_type = dictionary_get_func_impl.getReturnTypeImpl(arguments);
        auto dictionary_get_result_column = dictionary_get_func_impl.executeImpl(arguments, dictionary_get_result_type, input_rows_count);
        ColumnPtr result;
        WhichDataType dictionary_get_result_data_type(dictionary_get_result_type);