Skip to content

"Join restriction violated" in Upgrade check #89834

@al13n321

Description

@al13n321

https://s3.amazonaws.com/clickhouse-test-reports/json.html?PR=89831&sha=e7c12a39716cfef3982f2e2793025ea3b4e17981&name_0=PR

Log lines for the query:

2025.11.11 06:12:50.929808 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Debug> executeQuery: (from [::1]:60506) (comment: 01117_comma_and_others_join_mix.sql-test_7) (query 4, line 10) SELECT * FROM numbers(3) AS n1, numbers(2) AS n2 LEFT JOIN numbers(2) AS n3 ON n1.number = n3.number ORDE
R BY n1.number, n2.number, n3.number; (stage: Complete)
2025.11.11 06:12:50.930007 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Trace> QueryResultCache: No query result found for query "SELECT * FROM numbers(3) AS n1, numbers(2) AS n2 LEFT JOIN numbers(2) AS n3 ON n1.number = n3.number ORDER BY n1.number ASC, n2.number ASC, n3.number ASC"
2025.11.11 06:12:50.930313 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Trace> Planner: Query to stage Complete
2025.11.11 06:12:50.930499 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Trace> SortingStep: Adjusting memory limit before external sort with 3.49 GiB (ratio: 0.2, available system memory: 17.45 GiB)
2025.11.11 06:12:50.930561 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Trace> SortingStep: Adjusting memory limit before external sort with 3.49 GiB (ratio: 0.2, available system memory: 17.45 GiB)
2025.11.11 06:12:50.930581 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Trace> Planner: Query from stage FetchColumns to stage Complete
2025.11.11 06:12:50.930626 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Trace> SortingStep: Adjusting memory limit before external sort with 3.49 GiB (ratio: 0.2, available system memory: 17.45 GiB)
2025.11.11 06:12:50.930702 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Trace> optimizeJoin: Estimated statistics for Expression n1: unknown rows, columns: []
2025.11.11 06:12:50.930709 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Trace> optimizeJoin: Estimated statistics for Expression n2: unknown rows, columns: []
2025.11.11 06:12:50.930726 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Trace> HashTablesStatistics: An entry for key=439514178355683242 found in cache: ht_size=2
2025.11.11 06:12:50.930732 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Trace> optimizeJoin: Estimated statistics (from cache) for Expression n3: 2 rows, columns: []
2025.11.11 06:12:50.930748 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Debug> QueryPlanOptimizations: Optimizing join order for query graph with 3 relations
2025.11.11 06:12:50.930758 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Trace> JoinOrderOptimizer: Solving join order using greedy algorithm
2025.11.11 06:12:50.930804 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Fatal> : Logical error: 'Join restriction violated'.
2025.11.11 06:12:50.942152 [ 17043 ] {ba2a1d25-9e84-4c90-9758-d328592c0227} <Fatal> : Stack trace (when copying this message, always include the lines below):

0. ./ci/tmp/build/./src/Common/Exception.cpp:131: DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x0000000013c3c7df
1. DB::Exception::Exception(String&&, int, String, bool) @ 0x000000000c8902ce
2. DB::Exception::Exception(PreformattedMessage&&, int) @ 0x000000000c88fd80
3. DB::Exception::Exception<>(int, FormatStringHelperImpl<>) @ 0x000000000c8a012b
4. ./ci/tmp/build/./src/Processors/QueryPlan/Optimizations/joinOrder.cpp:316: DB::JoinOrderOptimizer::solveGreedy() @ 0x000000001abeb61d
5. ./ci/tmp/build/./src/Processors/QueryPlan/Optimizations/joinOrder.cpp:195: DB::optimizeJoinOrder(DB::QueryGraph) @ 0x000000001abee4a0
6. ./ci/tmp/build/./src/Processors/QueryPlan/Optimizations/optimizeJoin.cpp:752: DB::QueryPlanOptimizations::chooseJoinOrder(DB::QueryPlanOptimizations::QueryGraphBuilder, std::list<DB::QueryPlan::Node, std::allocator<DB::QueryPlan::Node>>&, DB::JoinStrictness) @ 0x000000001abd5253
7. ./ci/tmp/build/./src/Processors/QueryPlan/Optimizations/optimizeJoin.cpp:1103: DB::QueryPlanOptimizations::optimizeJoinLogicalImpl(DB::JoinStepLogical*, DB::QueryPlan::Node&, std::list<DB::QueryPlan::Node, std::allocator<DB::QueryPlan::Node>>&, DB::QueryPlanOptimizationSettings const&) @ 0x000000001abd3e0f
8. ./ci/tmp/build/./src/Processors/QueryPlan/Optimizations/optimizeJoin.cpp:1068: DB::QueryPlanOptimizations::optimizeJoinLogical(DB::QueryPlan::Node&, std::list<DB::QueryPlan::Node, std::allocator<DB::QueryPlan::Node>>&, DB::QueryPlanOptimizationSettings const&) @ 0x000000001abde8df
9. ./ci/tmp/build/./src/Processors/QueryPlan/Optimizations/optimizeTree.cpp:224: DB::QueryPlanOptimizations::optimizeTreeSecondPass(DB::QueryPlanOptimizationSettings const&, DB::QueryPlan::Node&, std::list<DB::QueryPlan::Node, std::allocator<DB::QueryPlan::Node>>&, DB::QueryPlan&) @ 0x000000001ab85966
10. ./ci/tmp/build/./src/Processors/QueryPlan/QueryPlan.cpp:506: DB::QueryPlan::optimize(DB::QueryPlanOptimizationSettings const&) @ 0x000000001aa77d6e
11. ./ci/tmp/build/./src/Processors/QueryPlan/QueryPlan.cpp:180: DB::QueryPlan::buildQueryPipeline(DB::QueryPlanOptimizationSettings const&, DB::BuildQueryPipelineSettings const&, bool) @ 0x000000001aa77005
12. ./ci/tmp/build/./src/Interpreters/InterpreterSelectQueryAnalyzer.cpp:289: DB::InterpreterSelectQueryAnalyzer::buildQueryPipeline() @ 0x0000000018938999
13. ./ci/tmp/build/./src/Interpreters/InterpreterSelectQueryAnalyzer.cpp:256: DB::InterpreterSelectQueryAnalyzer::execute() @ 0x000000001893845e
14. ./ci/tmp/build/./src/Interpreters/executeQuery.cpp:1603: DB::executeQueryImpl(char const*, char const*, std::shared_ptr<DB::Context>, DB::QueryFlags, DB::QueryProcessingStage::Enum, std::unique_ptr<DB::ReadBuffer, std::default_delete<DB::ReadBuffer>>&, std::shared_ptr<DB::IAST>&, std::shared_ptr<DB::ImplicitTransactionControlExecutor>, std::function<void ()>) @ 0x0000000018d0de04
15. ./ci/tmp/build/./src/Interpreters/executeQuery.cpp:1812: DB::executeQuery(String const&, std::shared_ptr<DB::Context>, DB::QueryFlags, DB::QueryProcessingStage::Enum) @ 0x0000000018d07c33
16. ./ci/tmp/build/./src/Server/TCPHandler.cpp:744: DB::TCPHandler::runImpl() @ 0x000000001a46c6f7
17. ./ci/tmp/build/./src/Server/TCPHandler.cpp:2836: DB::TCPHandler::run() @ 0x000000001a48ec99
18. ./ci/tmp/build/./base/poco/Net/src/TCPServerConnection.cpp:40: Poco::Net::TCPServerConnection::start() @ 0x000000001f54aa87
19. ./ci/tmp/build/./base/poco/Net/src/TCPServerDispatcher.cpp:115: Poco::Net::TCPServerDispatcher::run() @ 0x000000001f54af19
20. ./ci/tmp/build/./base/poco/Foundation/src/ThreadPool.cpp:205: Poco::PooledThread::run() @ 0x000000001f5116c7
21. ./base/poco/Foundation/src/Thread_POSIX.cpp:341: Poco::ThreadImpl::runnableEntry(void*) @ 0x000000001f50fac1
22. ? @ 0x0000000000094ac3
23. ? @ 0x00000000001268c0

Metadata

Metadata

Assignees

Labels

comp-joinsJOINs end-to-end (planning hooks + runtime join operators/algorithms). Single bucket to avoid pla...

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions