Skip to content

Logical error: 'false' with Parquet reader v3 #87078

@PedroTadim

Description

@PedroTadim

Describe the bug

Not sure if the issue is related to Iceberg, but it only happens with the new Parquet reader

How to reproduce

Use spark.py to create the Iceberg data with Spark, then run:

SET input_format_parquet_use_native_reader_v3 = 1;
CREATE TABLE t0 ENGINE = IcebergLocal(local, path = '/var/lib/clickhouse/user_files/t0/test/t0', format = 'Parquet');
INSERT INTO TABLE t0 (c0) VALUES (TRUE);
SELECT t0.c0 FROM t0 WHERE c0 = 3 AND c0 >= 5;

Error message and/or stacktrace

Stack trace:

<Fatal> : Logical error: 'false'.
<Fatal> : Stack trace (when copying this message, always include the lines below):

0. src/Common/StackTrace.cpp:395: StackTrace::StackTrace() @ 0x0000000014653f24
1. src/Common/Exception.cpp:56: DB::abortOnFailedAssertion(String const&) @ 0x00000000145ae055
2. src/Processors/Formats/Impl/Parquet/Decoding.cpp:1101: DB::Parquet::IntConverter::convertField(std::span<char const, 18446744073709551615ul>, bool, DB::Field&) const @ 0x000000001fc49870
3. src/Processors/Formats/Impl/Parquet/Reader.cpp:251: DB::Parquet::Reader::getHyperrectangleForRowGroup(parquet::format::RowGroup const*, std::vector<DB::Range, std::allocator<DB::Range>>&) const @ 0x000000001fc5508f
4. src/Processors/Formats/Impl/Parquet/Reader.cpp:319: DB::Parquet::Reader::prefilterAndInitRowGroups() @ 0x000000001fc55dd9
5. src/Processors/Formats/Impl/Parquet/ReadManager.cpp:45: DB::Parquet::ReadManager::init(std::shared_ptr<DB::FormatParserSharedResources>) @ 0x000000001fc403a5
6. src/Processors/Formats/Impl/ParquetV3BlockInputFormat.cpp:84: DB::ParquetV3BlockInputFormat::initializeIfNeeded() @ 0x000000001f6d64df
7. src/Processors/Formats/Impl/ParquetV3BlockInputFormat.cpp:107: DB::ParquetV3BlockInputFormat::read() @ 0x000000001f6d661b
8. src/Processors/Formats/IInputFormat.cpp:18: DB::IInputFormat::generate() @ 0x000000001f523fd6
9. src/Processors/ISource.cpp:144: DB::ISource::tryGenerate() @ 0x000000001f4f8d65
10. src/Processors/ISource.cpp:110: DB::ISource::work() @ 0x000000001f4f8a42
11. src/Processors/Executors/ExecutionThreadContext.cpp:53: DB::ExecutionThreadContext::executeTask() @ 0x000000001f515a90
12. src/Processors/Executors/PipelineExecutor.cpp:350: DB::PipelineExecutor::executeStepImpl(unsigned long, DB::IAcquiredSlot*, std::atomic<bool>*) @ 0x000000001f5083c5
13. src/Processors/Executors/PipelineExecutor.cpp:179: DB::PipelineExecutor::executeStep(std::atomic<bool>*) @ 0x000000001f507b0e
14. src/Processors/Executors/PullingPipelineExecutor.cpp:59: DB::PullingPipelineExecutor::pull(DB::Chunk&) @ 0x000000001f51eb34
15. src/Storages/ObjectStorage/StorageObjectStorageSource.cpp:286: DB::StorageObjectStorageSource::generate() @ 0x0000000019b4def7
16. src/Processors/ISource.cpp:144: DB::ISource::tryGenerate() @ 0x000000001f4f8d65
17. src/Processors/ISource.cpp:110: DB::ISource::work() @ 0x000000001f4f8a42
18. src/Processors/Executors/ExecutionThreadContext.cpp:53: DB::ExecutionThreadContext::executeTask() @ 0x000000001f515a90
19. src/Processors/Executors/PipelineExecutor.cpp:350: DB::PipelineExecutor::executeStepImpl(unsigned long, DB::IAcquiredSlot*, std::atomic<bool>*) @ 0x000000001f5083c5
20. src/Processors/Executors/PipelineExecutor.cpp:278: DB::PipelineExecutor::executeSingleThread(unsigned long, DB::IAcquiredSlot*) @ 0x000000001f508929
21. src/Processors/Executors/PipelineExecutor.cpp:561: void std::__function::__policy_invoker<void ()>::__call_impl[abi:se190107]<std::__function::__default_alloc_func<DB::PipelineExecutor::spawnThreads(std::shared_ptr<DB::IAcquiredSlot>)::$_0, void ()>>(std::__function::__policy_storage const*) @ 0x000000001f509343
22. contrib/llvm-project/libcxx/include/__functional/function.h:716: ? @ 0x00000000146f5c53
23. contrib/llvm-project/libcxx/include/__type_traits/invoke.h:117: 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()() @ 0x00000000146fc326
24. contrib/llvm-project/libcxx/include/__functional/function.h:716: ? @ 0x00000000146f30e6
25. contrib/llvm-project/libcxx/include/__type_traits/invoke.h:117: void* std::__thread_proxy[abi:se190107]<std::tuple<std::unique_ptr<std::__thread_struct, std::default_delete<std::__thread_struct>>, void (ThreadPoolImpl<std::thread>::ThreadFromThreadPool::*)(), ThreadPoolImpl<std::thread>::ThreadFromThreadPool*>>(void*) @ 0x00000000146f9b00
26. start_thread @ 0x00000000000a27f1
27. __clone3 @ 0x0000000000133c9c

Metadata

Metadata

Labels

bugConfirmed user-visible misbehaviour in official releasecomp-datalakeData lake table formats (Iceberg/Delta/Hudi) integration.fuzzProblem 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