When creating a dictionary without attributes in the database with the Ordinary engine and querying the dictionary, the clickhouse server crashes

```
SELECT version()

┌─version()──┐
│ 21.12.3.32 │
└────────────┘

CREATE DATABASE test ENGINE = Ordinary;

CREATE TABLE test.dict_src_test
(
    `StartDate` Date,
    `EndDate` Date,
    `ColumnString` String,
    `Columnone` String,
    `Columntwo` String,
    `Columnthree` String,
    `Value` Int64,
    `Columnsix` String
)
ENGINE = ReplacingMergeTree()
PARTITION BY toYear(StartDate)
PRIMARY KEY StartDate
ORDER BY (StartDate,
 EndDate,
 ColumnString,
 Columnone,
 Columntwo,
 Columnthree,
 Value,
 Columnsix)
SETTINGS index_granularity = 8192;

CREATE DICTIONARY test.dict_test
(
    `ColumnString` String,
    `Columnone` String,
    `Columntwo` String,
    `Value` UInt64,
    `Columnsix` String,
    `StartDate` DATE,
    `EndDate` DATE
)
PRIMARY KEY ColumnString,
 Columnone,
 Columntwo,
 Value,
 Columnsix
SOURCE(CLICKHOUSE(HOST 'localhost' PORT 9000 USER 'default' PASSWORD '' DB 'test' TABLE 'dict_src_test'))
LIFETIME(MIN 82800 MAX 86400)
LAYOUT(COMPLEX_KEY_RANGE_HASHED())
RANGE(MIN StartDate MAX EndDate);

INSERT INTO test.dict_src_test (ColumnString) VALUES ('Three');
INSERT INTO test.dict_src_test (Columnone) VALUES ('Apple');
INSERT INTO test.dict_src_test (Columntwo) VALUES ('333333');
INSERT INTO test.dict_src_test (Columnthree) VALUES ('Pen');
INSERT INTO test.dict_src_test (Value) VALUES ('6666');
INSERT INTO test.dict_src_test (Columnsix) VALUES ('Time');

select * from test.dict_test;

2022.01.19 13:32:10.458512 [ 814 ] <Fatal> BaseDaemon: ########################################
2022.01.19 13:32:10.458562 [ 814 ] <Fatal> BaseDaemon: (version 21.12.3.32 (official build), build id: FA4A7F489F3FF6E3) (from thread 589) (query_id: 4022beaa-4bd1-4e0d-a921-63ebf9fa12ad) Received signal Segmentation fault (11)
2022.01.19 13:32:10.458582 [ 814 ] <Fatal> BaseDaemon: Address: NULL pointer. Access: read. Address not mapped to object.
2022.01.19 13:32:10.458605 [ 814 ] <Fatal> BaseDaemon: Stack trace: 0x10f0ce58 0x10f03822 0x10ea6fb3 0x136aee8c 0x13686412 0x1329076e 0x132888d4 0x132883b6 0x132d7ea5 0x132d8fb6 0x135289f0 0x135267d5 0x13fd8c51 0x13fec4b9 0x16f3d6af 0x16f3fb01 0x1704e889 0x1704bf80 0x7f91cc9f6609 0x7f91cc912293
2022.01.19 13:32:10.458663 [ 814 ] <Fatal> BaseDaemon: 2. bool DB::RangeHashedDictionary<(DB::DictionaryKeyType)1>::read(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, unsigned long, unsigned long) const::'lambda'(auto const&)::operator()<DB::TypePair<DB::DataTypeDate, void> >(auto const&) @ 0x10f0ce58 in /usr/bin/clickhouse
2022.01.19 13:32:10.458702 [ 814 ] <Fatal> BaseDaemon: 3. bool DB::callOnIndexAndDataType<void, DB::RangeHashedDictionary<(DB::DictionaryKeyType)1>::read(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, unsigned long, unsigned long) const::'lambda'(auto const&)&>(DB::TypeIndex, DB::RangeHashedDictionary<(DB::DictionaryKeyType)1>::read(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, unsigned long, unsigned long) const::'lambda'(auto const&)&) @ 0x10f03822 in /usr/bin/clickhouse
2022.01.19 13:32:10.458732 [ 814 ] <Fatal> BaseDaemon: 4. DB::RangeHashedDictionary<(DB::DictionaryKeyType)1>::read(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, unsigned long, unsigned long) const @ 0x10ea6fb3 in /usr/bin/clickhouse
2022.01.19 13:32:10.458765 [ 814 ] <Fatal> BaseDaemon: 5. DB::StorageDictionary::read(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, DB::SelectQueryInfo&, std::__1::shared_ptr<DB::Context const>, DB::QueryProcessingStage::Enum, unsigned long, unsigned int) @ 0x136aee8c in /usr/bin/clickhouse
2022.01.19 13:32:10.458797 [ 814 ] <Fatal> BaseDaemon: 6. DB::IStorage::read(DB::QueryPlan&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&, DB::SelectQueryInfo&, std::__1::shared_ptr<DB::Context const>, DB::QueryProcessingStage::Enum, unsigned long, unsigned int) @ 0x13686412 in /usr/bin/clickhouse
2022.01.19 13:32:10.458835 [ 814 ] <Fatal> BaseDaemon: 7. DB::InterpreterSelectQuery::executeFetchColumns(DB::QueryProcessingStage::Enum, DB::QueryPlan&) @ 0x1329076e in /usr/bin/clickhouse
2022.01.19 13:32:10.458876 [ 814 ] <Fatal> BaseDaemon: 8. DB::InterpreterSelectQuery::executeImpl(DB::QueryPlan&, std::__1::optional<DB::Pipe>) @ 0x132888d4 in /usr/bin/clickhouse
2022.01.19 13:32:10.458898 [ 814 ] <Fatal> BaseDaemon: 9. DB::InterpreterSelectQuery::buildQueryPlan(DB::QueryPlan&) @ 0x132883b6 in /usr/bin/clickhouse
2022.01.19 13:32:10.458924 [ 814 ] <Fatal> BaseDaemon: 10. DB::InterpreterSelectWithUnionQuery::buildQueryPlan(DB::QueryPlan&) @ 0x132d7ea5 in /usr/bin/clickhouse
2022.01.19 13:32:10.458949 [ 814 ] <Fatal> BaseDaemon: 11. DB::InterpreterSelectWithUnionQuery::execute() @ 0x132d8fb6 in /usr/bin/clickhouse
2022.01.19 13:32:10.458974 [ 814 ] <Fatal> BaseDaemon: 12. ? @ 0x135289f0 in /usr/bin/clickhouse
2022.01.19 13:32:10.459001 [ 814 ] <Fatal> BaseDaemon: 13. DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<DB::Context>, bool, DB::QueryProcessingStage::Enum) @ 0x135267d5 in /usr/bin/clickhouse
2022.01.19 13:32:10.459023 [ 814 ] <Fatal> BaseDaemon: 14. DB::TCPHandler::runImpl() @ 0x13fd8c51 in /usr/bin/clickhouse
2022.01.19 13:32:10.459048 [ 814 ] <Fatal> BaseDaemon: 15. DB::TCPHandler::run() @ 0x13fec4b9 in /usr/bin/clickhouse
2022.01.19 13:32:10.459079 [ 814 ] <Fatal> BaseDaemon: 16. Poco::Net::TCPServerConnection::start() @ 0x16f3d6af in /usr/bin/clickhouse
2022.01.19 13:32:10.459107 [ 814 ] <Fatal> BaseDaemon: 17. Poco::Net::TCPServerDispatcher::run() @ 0x16f3fb01 in /usr/bin/clickhouse
2022.01.19 13:32:10.459141 [ 814 ] <Fatal> BaseDaemon: 18. Poco::PooledThread::run() @ 0x1704e889 in /usr/bin/clickhouse
2022.01.19 13:32:10.459164 [ 814 ] <Fatal> BaseDaemon: 19. Poco::ThreadImpl::runnableEntry(void*) @ 0x1704bf80 in /usr/bin/clickhouse
2022.01.19 13:32:10.459187 [ 814 ] <Fatal> BaseDaemon: 20. ? @ 0x7f91cc9f6609 in ?
2022.01.19 13:32:10.459207 [ 814 ] <Fatal> BaseDaemon: 21. clone @ 0x7f91cc912293 in ?
2022.01.19 13:32:10.561139 [ 814 ] <Fatal> BaseDaemon: Calculated checksum of the binary: 5BEBF5792A40F7E345921EDA3698245B.
```
DictionaryDefaultValueExtractor<AttributeType> default_value_extractor(dictionary_attribute.null_value, default_values_column);
        auto column = ColumnProvider::getColumn(dictionary_attribute, size);
        if constexpr (std::is_same_v<ValueType, Array>)
        {
            auto * out = column.get();
            getItemsImpl<ValueType, false>(
                attribute,
                extractor,
                [&](const size_t, const Array & value, bool) { out->insert(value); },
                default_value_extractor);
        }
        else if constexpr (std::is_same_v<ValueType, StringRef>)
        {
            auto * out = column.get();
            if (is_attribute_nullable)
                getItemsImpl<ValueType, true>(
                    attribute,
                    extractor,
                    [&](size_t row, const StringRef value, bool is_null)
                    {
                        (*vec_null_map_to)[row] = is_null;
                        out->insertData(value.data, value.size);
                    },
                    default_value_extractor);
            else
                getItemsImpl<ValueType, false>(
                    attribute,
                    extractor,
                    [&](size_t, const StringRef value, bool) { out->insertData(value.data, value.size); },
                    default_value_extractor);