Skip to content

Logical error: 'check_in_range(result_exact_range, BoolMask::consider_only_can_be_false) == BoolMask(true, false)'. #80742

@CurtizJ

Description

@CurtizJ

Describe the bug

Failed assertion with UInt128 primary key and UInt256 constant. I didn't check whether it can lead to user facing bug.

How to reproduce

DROP TABLE IF EXISTS t_primary_index_cache__fuzz_37;

CREATE TABLE t_primary_index_cache__fuzz_37 (`a` UInt128, `b` UInt64)
ENGINE = MergeTree PARTITION BY a % 2 ORDER BY a
SETTINGS index_granularity = 64, index_granularity_bytes = '10M', min_bytes_for_wide_part = 0;

INSERT INTO t_primary_index_cache__fuzz_37 SELECT number, number FROM numbers(10000);

SELECT count() FROM t_primary_index_cache__fuzz_37 WHERE (a < toUInt256(200));
<Fatal> BaseDaemon: ########## Short fault info ############
<Fatal> BaseDaemon: (version 25.6.1.785 (official build), build id: 226869BB9FC2F0C9062B7F5BF8268881008873DE, git hash: e96a66498b97e5c1ab84143b99f179e44d7c515f, architecture: x86_64) (from thread 714245) Received signal 6
<Fatal> BaseDaemon: Signal description: Aborted
<Fatal> BaseDaemon:
<Fatal> BaseDaemon: Stack trace: 0x000071c7ca2969fd 0x000071c7ca242476 0x000071c7ca2287f3 0x00005d091c97a4c3 0x00005d091c97a6d0 0x00005d093008a05d 0x00005d09300a62a1 0x00005d09300b7f89 0x00005d091cc6bcf3 0x00005d091cc79e10 0x00005d091cc6636e 0x00005d091cc74b10 0x00005d090b89ce77 0x000071c7ca294ac3 0x000071c7ca326850
<Fatal> BaseDaemon: ########################################
<Fatal> BaseDaemon: (version 25.6.1.785 (official build), build id: 226869BB9FC2F0C9062B7F5BF8268881008873DE, git hash: e96a66498b97e5c1ab84143b99f179e44d7c515f) (from thread 714245) (query_id: 593fdc08-a6de-464a-9d4a-668077eea635) (query: SELECT count() FROM t_primary_index_cache__fuzz_37 WHERE (a < toUInt256(200));) Received signal Aborted (6)
<Fatal> BaseDaemon:
<Fatal> BaseDaemon: Stack trace: 0x000071c7ca2969fd 0x000071c7ca242476 0x000071c7ca2287f3 0x00005d091c97a4c3 0x00005d091c97a6d0 0x00005d093008a05d 0x00005d09300a62a1 0x00005d09300b7f89 0x00005d091cc6bcf3 0x00005d091cc79e10 0x00005d091cc6636e 0x00005d091cc74b10 0x00005d090b89ce77 0x000071c7ca294ac3 0x000071c7ca326850
<Fatal> BaseDaemon: 3. pthread_kill@@GLIBC_2.34 @ 0x00000000000969fd
<Fatal> BaseDaemon: 4. gsignal @ 0x0000000000042476
<Fatal> BaseDaemon: 5. __GI_abort @ 0x00000000000287f3
<Fatal> BaseDaemon: 6. ./ci/tmp/build/./src/Common/Exception.cpp:50: DB::abortOnFailedAssertion(String const&, void* const*, unsigned long, unsigned long) @ 0x000000001d49f4c3
<Fatal> BaseDaemon: 7. ./ci/tmp/build/./src/Common/Exception.cpp:56: ? @ 0x000000001d49f6d0
<Fatal> BaseDaemon: 8. ./ci/tmp/build/./src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:1562: DB::MergeTreeDataSelectExecutor::markRangesFromPKRange(DB::RangesInDataPart const&, std::shared_ptr<DB::StorageInMemoryMetadata const> const&, DB::KeyCondition const&, std::optional<DB::KeyCondition> const&, std::optional<DB::KeyCondition> const&, DB::MarkRanges*, DB::Settings const&, std::shared_ptr<Poco::Logger>) @ 0x0000000030baf05d
<Fatal> BaseDaemon: 9. ./ci/tmp/build/./src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:767: DB::MergeTreeDataSelectExecutor::filterPartsByPrimaryKeyAndSkipIndexes(DB::RangesInDataParts, std::shared_ptr<DB::StorageInMemoryMetadata const>, std::shared_ptr<DB::Context const> const&, DB::KeyCondition const&, std::optional<DB::KeyCondition> const&, std::optional<DB::KeyCondition> const&, DB::UsefulSkipIndexes const&, DB::MergeTreeReaderSettings const&, std::shared_ptr<Poco::Logger>, unsigned long, std::vector<DB::ReadFromMergeTree::IndexStat, std::allocator<DB::ReadFromMergeTree::IndexStat>>&, bool, bool, bool)::$_1::operator()(unsigned long) const @ 0x0000000030bcb2a1
<Fatal> BaseDaemon: 10.0. inlined from ./ci/tmp/build/./src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp:876: operator()
<Fatal> BaseDaemon: 10.1. inlined from ./contrib/llvm-project/libcxx/include/__type_traits/invoke.h:149: decltype(std::declval<DB::MergeTreeDataSelectExecutor::filterPartsByPrimaryKeyAndSkipIndexes(DB::RangesInDataParts, std::shared_ptr<DB::StorageInMemoryMetadata const>, std::shared_ptr<DB::Context const> const&, DB::KeyCondition const&, std::optional<DB::KeyCondition> const&, std::optional<DB::KeyCondition> const&, DB::UsefulSkipIndexes const&, DB::MergeTreeReaderSettings const&, std::shared_ptr<Poco::Logger>, unsigned long, std::vector<DB::ReadFromMergeTree::IndexStat, std::allocator<DB::ReadFromMergeTree::IndexStat>>&, bool, bool, bool)::$_2&>()()) std::__invoke[abi:ne190107]<DB::MergeTreeDataSelectExecutor::filterPartsByPrimaryKeyAndSkipIndexes(DB::RangesInDataParts, std::shared_ptr<DB::StorageInMemoryMetadata const>, std::shared_ptr<DB::Context const> const&, DB::KeyCondition const&, std::optional<DB::KeyCondition> const&, std::optional<DB::KeyCondition> const&, DB::UsefulSkipIndexes const&, DB::MergeTreeReaderSettings const&, std::shared_ptr<Poco::Logger>, unsigned long, std::vector<DB::ReadFromMergeTree::IndexStat, std::allocator<DB::ReadFromMergeTree::IndexStat>>&, bool, bool, bool)::$_2&>(DB::MergeTreeDataSelectExecutor::filterPartsByPrimaryKeyAndSkipIndexes(DB::RangesInDataParts, std::shared_ptr<DB::StorageInMemoryMetadata const>, std::shared_ptr<DB::Context const> const&, DB::KeyCondition const&, std::optional<DB::KeyCondition> const&, std::optional<DB::KeyCondition> const&, DB::UsefulSkipIndexes const&, DB::MergeTreeReaderSettings const&, std::shared_ptr<Poco::Logger>, unsigned long, std::vector<DB::ReadFromMergeTree::IndexStat, std::allocator<DB::ReadFromMergeTree::IndexStat>>&, bool, bool, bool)::$_2&)
<Fatal> BaseDaemon: 10.2. inlined from ./contrib/llvm-project/libcxx/include/__type_traits/invoke.h:224: void std::__invoke_void_return_wrapper<void, true>::__call[abi:ne190107]<DB::MergeTreeDataSelectExecutor::filterPartsByPrimaryKeyAndSkipIndexes(DB::RangesInDataParts, std::shared_ptr<DB::StorageInMemoryMetadata const>, std::shared_ptr<DB::Context const> const&, DB::KeyCondition const&, std::optional<DB::KeyCondition> const&, std::optional<DB::KeyCondition> const&, DB::UsefulSkipIndexes const&, DB::MergeTreeReaderSettings const&, std::shared_ptr<Poco::Logger>, unsigned long, std::vector<DB::ReadFromMergeTree::IndexStat, std::allocator<DB::ReadFromMergeTree::IndexStat>>&, bool, bool, bool)::$_2&>(DB::MergeTreeDataSelectExecutor::filterPartsByPrimaryKeyAndSkipIndexes(DB::RangesInDataParts, std::shared_ptr<DB::StorageInMemoryMetadata const>, std::shared_ptr<DB::Context const> const&, DB::KeyCondition const&, std::optional<DB::KeyCondition> const&, std::optional<DB::KeyCondition> const&, DB::UsefulSkipIndexes const&, DB::MergeTreeReaderSettings const&, std::shared_ptr<Poco::Logger>, unsigned long, std::vector<DB::ReadFromMergeTree::IndexStat, std::allocator<DB::ReadFromMergeTree::IndexStat>>&, bool, bool, bool)::$_2&)
<Fatal> BaseDaemon: 10.3. inlined from ./contrib/llvm-project/libcxx/include/__functional/function.h:210: ?
<Fatal> BaseDaemon: 10. ./contrib/llvm-project/libcxx/include/__functional/function.h:610: ? @ 0x0000000030bdcf89
<Fatal> BaseDaemon: 11.0. inlined from ./contrib/llvm-project/libcxx/include/__functional/function.h:716: ?
<Fatal> BaseDaemon: 11.1. inlined from ./contrib/llvm-project/libcxx/include/__functional/function.h:989: ?
<Fatal> BaseDaemon: 11. ./ci/tmp/build/./src/Common/ThreadPool.cpp:799: ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool::worker() @ 0x000000001d790cf3
<Fatal> BaseDaemon: 12.0. inlined from ./contrib/llvm-project/libcxx/include/__type_traits/invoke.h:117: decltype(*std::declval<ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool*&>().*std::declval<void (ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool::*&)()>()()) std::__invoke[abi:ne190107]<void (ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool::*&)(), ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool*&, void>(void (ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool::*&)(), ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool*&)
<Fatal> BaseDaemon: 12.1. inlined from ./contrib/llvm-project/libcxx/include/tuple:1354: decltype(auto) std::__apply_tuple_impl[abi:ne190107]<void (ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool::*&)(), std::tuple<ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool*>&, 0ul>(void (ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool::*&)(), std::tuple<ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool*>&, std::__tuple_indices<0ul>)
<Fatal> BaseDaemon: 12.2. inlined from ./contrib/llvm-project/libcxx/include/tuple:1358: decltype(auto) std::apply[abi:ne190107]<void (ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool::*&)(), std::tuple<ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool*>&>(void (ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool::*&)(), std::tuple<ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool*>&)
<Fatal> BaseDaemon: 12. ./src/Common/ThreadPool.h:312: ThreadFromGlobalPoolImpl<false, true>::ThreadFromGlobalPoolImpl<void (ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool::*)(), ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool*>(void (ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool::*&&)(), ThreadPoolImpl<ThreadFromGlobalPoolImpl<false, true>>::ThreadFromThreadPool*&&)::'lambda'()::operator()() @ 0x000000001d79ee10

Error message and/or stacktrace

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugConfirmed user-visible misbehaviour in official releasefuzzProblem found by one of the fuzzers

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions