**Describe the bug**
Reading from a MergeTree table fails:
```select * from test_mtree where x = NULL```
throws an error - `DB::Exception: ColumnUInt8 expected as Set index condition result`


**How to reproduce**
 - Reproduces on ClickHouse v20.7.1
 - ```CREATE TABLE test_mtree (`x` String, INDEX idx x TYPE set(10) GRANULARITY 1) ENGINE = MergeTree ORDER BY tuple()```
 - `INSERT INTO test_mtree VALUES ('Hello, world')`
 - Query to reproduce: `SELECT * FROM test_mtree WHERE x = NULL`

**Error message and/or stacktrace**
```
 <Error> executeQuery: Code: 49, e.displayText() = DB::Exception: ColumnUInt8 expected as Set index condition result. (version 20.7.1.1) (from [::1]:63624) (in query: select * from test_01344 where x = NULL), Stack trace (when copying this message, always include the lines below):

0. /home/akazz/ClickHouse.001/build-full/../contrib/libcxx/include/exception:129: Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0xc749acc in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
1. /home/akazz/ClickHouse.001/build-full/../src/Common/Exception.cpp:38: DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x5839f69 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
2. /home/akazz/ClickHouse.001/build-full/../src/Storages/MergeTree/MergeTreeIndexSet.cpp:0: DB::MergeTreeIndexConditionSet::mayBeTrueOnGranule(std::__1::shared_ptr<DB::IMergeTreeIndexGranule>) const @ 0xa9174b7 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
3. /home/akazz/ClickHouse.001/build-full/../src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:0: DB::MergeTreeDataSelectExecutor::filterMarksUsingIndex(std::__1::shared_ptr<DB::IMergeTreeIndex const>, std::__1::shared_ptr<DB::IMergeTreeIndexCondition>, std::__1::shared_ptr<DB::IMergeTreeDataPart const>, std::__1::deque<DB::MarkRange, std::__1::allocator<DB::MarkRange> > const&, DB::Settings const&, DB::MergeTreeReaderSettings const&) const @ 0xa3c6106 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
4. /home/akazz/ClickHouse.001/build-full/../src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:593: DB::MergeTreeDataSelectExecutor::readFromParts(std::__1::vector<std::__1::shared_ptr<DB::IMergeTreeDataPart const>, std::__1::allocator<std::__1::shared_ptr<DB::IMergeTreeDataPart const> > >, 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 const&, DB::Context const&, unsigned long, unsigned int, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, long> > > const*) const @ 0xa3c0972 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
5. /home/akazz/ClickHouse.001/build-full/../src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:160: DB::MergeTreeDataSelectExecutor::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 const&, DB::Context const&, unsigned long, unsigned int, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, long> > > const*) const @ 0xa3ba9ed in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
6. /home/akazz/ClickHouse.001/build-full/../src/Storages/StorageMergeTree.cpp:184: DB::StorageMergeTree::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 const&, DB::Context const&, DB::QueryProcessingStage::Enum, unsigned long, unsigned int) @ 0xa25565f in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
7. /home/akazz/ClickHouse.001/build-full/../src/Processors/QueryPlan/ReadFromStorageStep.cpp:0: DB::ReadFromStorageStep::ReadFromStorageStep(std::__1::shared_ptr<DB::RWLockImpl::LockHolderImpl>, std::__1::shared_ptr<DB::StorageInMemoryMetadata const>&, DB::SelectQueryOptions, std::__1::shared_ptr<DB::IStorage>, 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&, DB::SelectQueryInfo const&, std::__1::shared_ptr<DB::Context>, DB::QueryProcessingStage::Enum, unsigned long, unsigned long) @ 0xa5ea74c in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
8. /home/akazz/ClickHouse.001/build-full/../contrib/libcxx/include/memory:2204: std::__1::__unique_if<DB::ReadFromStorageStep>::__unique_single std::__1::make_unique<DB::ReadFromStorageStep, std::__1::shared_ptr<DB::RWLockImpl::LockHolderImpl>&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const>&, DB::SelectQueryOptions&, std::__1::shared_ptr<DB::IStorage>&, 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> > > >&, DB::SelectQueryInfo&, std::__1::shared_ptr<DB::Context>&, DB::QueryProcessingStage::Enum&, unsigned long&, unsigned long&>(std::__1::shared_ptr<DB::RWLockImpl::LockHolderImpl>&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const>&, DB::SelectQueryOptions&, std::__1::shared_ptr<DB::IStorage>&, 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> > > >&, DB::SelectQueryInfo&, std::__1::shared_ptr<DB::Context>&, DB::QueryProcessingStage::Enum&, unsigned long&, unsigned long&) @ 0xa036560 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
9. /home/akazz/ClickHouse.001/build-full/../src/Interpreters/InterpreterSelectQuery.cpp:1363: DB::InterpreterSelectQuery::executeFetchColumns(DB::QueryProcessingStage::Enum, DB::QueryPlan&, std::__1::shared_ptr<DB::PrewhereInfo> const&, 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&) @ 0xa02aaef in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
10. /home/akazz/ClickHouse.001/build-full/../src/Interpreters/InterpreterSelectQuery.cpp:794: DB::InterpreterSelectQuery::executeImpl(DB::QueryPlan&, std::__1::shared_ptr<DB::IBlockInputStream> const&, std::__1::optional<DB::Pipe>) @ 0xa024069 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
11. /home/akazz/ClickHouse.001/build-full/../contrib/libcxx/include/optional:224: DB::InterpreterSelectQuery::buildQueryPlan(DB::QueryPlan&) @ 0xa0238af in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
12. /home/akazz/ClickHouse.001/build-full/../src/Interpreters/InterpreterSelectWithUnionQuery.cpp:0: DB::InterpreterSelectWithUnionQuery::buildQueryPlan(DB::QueryPlan&) @ 0xa060c31 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
13. /home/akazz/ClickHouse.001/build-full/../src/Interpreters/InterpreterSelectWithUnionQuery.cpp:0: DB::InterpreterSelectWithUnionQuery::execute() @ 0xa061051 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
14. /home/akazz/ClickHouse.001/build-full/../src/Interpreters/executeQuery.cpp:0: DB::executeQueryImpl(char const*, char const*, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool, DB::ReadBuffer*) @ 0xa105338 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
15. /home/akazz/ClickHouse.001/build-full/../src/Interpreters/executeQuery.cpp:655: DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool) @ 0xa1045ce in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
16. /home/akazz/ClickHouse.001/build-full/../src/Server/TCPHandler.cpp:0: DB::TCPHandler::runImpl() @ 0xa498cf7 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
17. /home/akazz/ClickHouse.001/build-full/../src/Server/TCPHandler.cpp:0: DB::TCPHandler::run() @ 0xa4a17b7 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
18. /home/akazz/ClickHouse.001/build-full/../contrib/poco/Net/src/TCPServerConnection.cpp:57: Poco::Net::TCPServerConnection::start() @ 0xc6c5d47 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
19. /home/akazz/ClickHouse.001/build-full/../contrib/libcxx/include/atomic:1036: Poco::Net::TCPServerDispatcher::run() @ 0xc6c61e8 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
20. /home/akazz/ClickHouse.001/build-full/../contrib/poco/Foundation/src/ThreadPool.cpp:213: Poco::PooledThread::run() @ 0xc79e477 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
21. /home/akazz/ClickHouse.001/build-full/../contrib/poco/Foundation/include/Poco/SharedPtr.h:156: Poco::ThreadImpl::runnableEntry(void*)
@ 0xc79c386 in /home/akazz/ClickHouse.001/build-full/programs/clickhouse
22. start_thread @ 0x76db in /lib/x86_64-linux-gnu/libpthread-2.27.so
23. /build/glibc-2ORdQG/glibc-2.27/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:97: clone @ 0x121a3f in /usr/lib/debug/lib/x86_64-linux-gnu/libc-2.27.so
```
{
    if (*pos >= block.rows())
        throw Exception(
                "The provided position is not less than the number of block rows. Position: "
                + toString(*pos) + ", Block rows: " + toString(block.rows()) + ".", ErrorCodes::LOGICAL_ERROR);
    size_t rows_read = std::min(limit, block.rows() - *pos);
    if (max_rows && size() > max_rows)
    {
        *pos += rows_read;
        return;
    }
    ColumnRawPtrs index_column_ptrs;
    index_column_ptrs.reserve(index_sample_block.columns());
    Columns materialized_columns;
    const Names index_columns = index_sample_block.getNames();
    for (const auto & column_name : index_columns)