mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-18 12:22:12 +00:00
Disable FULL JOINs in n-way joins for parallel replicas
This commit is contained in:
parent
0d6f9b457b
commit
d8f1f6f266
@ -1990,18 +1990,33 @@ JoinTreeQueryPlan buildJoinTreeQueryPlan(const QueryTreeNodePtr & query_node,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t joins_count = 0;
|
||||||
|
bool is_full_join = false;
|
||||||
/// For each table, table function, query, union table expressions prepare before query plan build
|
/// For each table, table function, query, union table expressions prepare before query plan build
|
||||||
for (size_t i = 0; i < table_expressions_stack_size; ++i)
|
for (size_t i = 0; i < table_expressions_stack_size; ++i)
|
||||||
{
|
{
|
||||||
const auto & table_expression = table_expressions_stack[i];
|
const auto & table_expression = table_expressions_stack[i];
|
||||||
auto table_expression_type = table_expression->getNodeType();
|
auto table_expression_type = table_expression->getNodeType();
|
||||||
if (table_expression_type == QueryTreeNodeType::JOIN ||
|
if (table_expression_type == QueryTreeNodeType::ARRAY_JOIN)
|
||||||
table_expression_type == QueryTreeNodeType::ARRAY_JOIN)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (table_expression_type == QueryTreeNodeType::JOIN)
|
||||||
|
{
|
||||||
|
++joins_count;
|
||||||
|
const auto & join_node = table_expression->as<const JoinNode &>();
|
||||||
|
if (join_node.getKind() == JoinKind::Full)
|
||||||
|
is_full_join = true;
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
prepareBuildQueryPlanForTableExpression(table_expression, planner_context);
|
prepareBuildQueryPlanForTableExpression(table_expression, planner_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// disable parallel replicas for n-way join with FULL JOIN involved
|
||||||
|
if (joins_count > 1 && is_full_join)
|
||||||
|
planner_context->getMutableQueryContext()->setSetting("enable_parallel_replicas", Field{0});
|
||||||
|
|
||||||
/** If left most table expression query plan is planned to stage that is not equal to fetch columns,
|
/** If left most table expression query plan is planned to stage that is not equal to fetch columns,
|
||||||
* then left most table expression is responsible for providing valid JOIN TREE part of final query plan.
|
* then left most table expression is responsible for providing valid JOIN TREE part of final query plan.
|
||||||
*
|
*
|
||||||
|
@ -5,49 +5,54 @@ First JOIN INNER second JOIN INNER
|
|||||||
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
--
|
--
|
||||||
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
--
|
--
|
||||||
SELECT 1 FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id);
|
SELECT 1 FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
SELECT id FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 ON t1.id = t2.id INNER JOIN test_table_join_3 AS t3 USING (id); -- { serverError AMBIGUOUS_IDENTIFIER }
|
|
||||||
SELECT 'First JOIN INNER second JOIN LEFT';
|
SELECT 'First JOIN INNER second JOIN LEFT';
|
||||||
First JOIN INNER second JOIN LEFT
|
First JOIN INNER second JOIN LEFT
|
||||||
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
--
|
--
|
||||||
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
--
|
--
|
||||||
SELECT 1 FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id);
|
SELECT 1 FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
SELECT id FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 ON t1.id = t2.id LEFT JOIN test_table_join_3 AS t3 USING (id); -- { serverError AMBIGUOUS_IDENTIFIER }
|
|
||||||
SELECT 'First JOIN INNER second JOIN RIGHT';
|
SELECT 'First JOIN INNER second JOIN RIGHT';
|
||||||
First JOIN INNER second JOIN RIGHT
|
First JOIN INNER second JOIN RIGHT
|
||||||
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
4 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
4 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
@ -55,44 +60,74 @@ SELECT '--';
|
|||||||
--
|
--
|
||||||
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
String String Join_3_Value_4 String
|
String String Join_3_Value_4 String
|
||||||
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
--
|
--
|
||||||
SELECT 1 FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id);
|
SELECT 1 FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN INNER second JOIN FULL';
|
||||||
|
First JOIN INNER second JOIN FULL
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
0 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
String String Join_3_Value_4 String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
SELECT id FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 ON t1.id = t2.id RIGHT JOIN test_table_join_3 AS t3 USING (id); -- { serverError AMBIGUOUS_IDENTIFIER }
|
|
||||||
SELECT 'First JOIN LEFT second JOIN INNER';
|
SELECT 'First JOIN LEFT second JOIN INNER';
|
||||||
First JOIN LEFT second JOIN INNER
|
First JOIN LEFT second JOIN INNER
|
||||||
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
--
|
--
|
||||||
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
--
|
--
|
||||||
SELECT 1 FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id);
|
SELECT 1 FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
SELECT id FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 ON t1.id = t2.id INNER JOIN test_table_join_3 AS t3 USING (id); -- { serverError AMBIGUOUS_IDENTIFIER }
|
|
||||||
SELECT 'First JOIN LEFT second JOIN LEFT';
|
SELECT 'First JOIN LEFT second JOIN LEFT';
|
||||||
First JOIN LEFT second JOIN LEFT
|
First JOIN LEFT second JOIN LEFT
|
||||||
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
2 UInt64 2 UInt64 Join_1_Value_2 String 0 UInt64 String 0 UInt64 String
|
2 UInt64 2 UInt64 Join_1_Value_2 String 0 UInt64 String 0 UInt64 String
|
||||||
@ -100,23 +135,25 @@ SELECT '--';
|
|||||||
--
|
--
|
||||||
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
Join_1_Value_2 String String String
|
Join_1_Value_2 String String String
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
--
|
--
|
||||||
SELECT 1 FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id);
|
SELECT 1 FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
SELECT id FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 ON t1.id = t2.id LEFT JOIN test_table_join_3 AS t3 USING (id); -- { serverError AMBIGUOUS_IDENTIFIER }
|
|
||||||
SELECT 'First JOIN LEFT second JOIN RIGHT';
|
SELECT 'First JOIN LEFT second JOIN RIGHT';
|
||||||
First JOIN LEFT second JOIN RIGHT
|
First JOIN LEFT second JOIN RIGHT
|
||||||
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
4 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
4 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
@ -124,44 +161,77 @@ SELECT '--';
|
|||||||
--
|
--
|
||||||
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
String String Join_3_Value_4 String
|
String String Join_3_Value_4 String
|
||||||
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
--
|
--
|
||||||
SELECT 1 FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id);
|
SELECT 1 FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN LEFT second JOIN FULL';
|
||||||
|
First JOIN LEFT second JOIN FULL
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
0 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
2 UInt64 2 UInt64 Join_1_Value_2 String 0 UInt64 String 0 UInt64 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
String String Join_3_Value_4 String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
Join_1_Value_2 String String String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
1
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
SELECT id FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 ON t1.id = t2.id RIGHT JOIN test_table_join_3 AS t3 USING (id); -- { serverError AMBIGUOUS_IDENTIFIER }
|
|
||||||
SELECT 'First JOIN RIGHT second JOIN INNER';
|
SELECT 'First JOIN RIGHT second JOIN INNER';
|
||||||
First JOIN RIGHT second JOIN INNER
|
First JOIN RIGHT second JOIN INNER
|
||||||
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
--
|
--
|
||||||
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
--
|
--
|
||||||
SELECT 1 FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id);
|
SELECT 1 FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
SELECT id FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 ON t1.id = t2.id INNER JOIN test_table_join_3 AS t3 USING (id); -- { serverError AMBIGUOUS_IDENTIFIER }
|
|
||||||
SELECT 'First JOIN RIGHT second JOIN LEFT';
|
SELECT 'First JOIN RIGHT second JOIN LEFT';
|
||||||
First JOIN RIGHT second JOIN LEFT
|
First JOIN RIGHT second JOIN LEFT
|
||||||
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
3 UInt64 0 UInt64 String 3 UInt64 Join_2_Value_3 String 0 UInt64 String
|
3 UInt64 0 UInt64 String 3 UInt64 Join_2_Value_3 String 0 UInt64 String
|
||||||
@ -169,23 +239,25 @@ SELECT '--';
|
|||||||
--
|
--
|
||||||
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
String Join_2_Value_3 String String
|
String Join_2_Value_3 String String
|
||||||
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
--
|
--
|
||||||
SELECT 1 FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id);
|
SELECT 1 FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
SELECT id FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 ON t1.id = t2.id LEFT JOIN test_table_join_3 AS t3 USING (id); -- { serverError AMBIGUOUS_IDENTIFIER }
|
|
||||||
SELECT 'First JOIN RIGHT second JOIN RIGHT';
|
SELECT 'First JOIN RIGHT second JOIN RIGHT';
|
||||||
First JOIN RIGHT second JOIN RIGHT
|
First JOIN RIGHT second JOIN RIGHT
|
||||||
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
4 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
4 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
@ -193,14 +265,574 @@ SELECT '--';
|
|||||||
--
|
--
|
||||||
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
String String Join_3_Value_4 String
|
String String Join_3_Value_4 String
|
||||||
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
--
|
--
|
||||||
SELECT 1 FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id);
|
SELECT 1 FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN RIGHT second JOIN FULL';
|
||||||
|
First JOIN RIGHT second JOIN FULL
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
0 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
3 UInt64 0 UInt64 String 3 UInt64 Join_2_Value_3 String 0 UInt64 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
String String Join_3_Value_4 String
|
||||||
|
String Join_2_Value_3 String String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN FULL second JOIN INNER';
|
||||||
|
First JOIN FULL second JOIN INNER
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
0 UInt64 0 UInt64 String 3 UInt64 Join_2_Value_3 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN FULL second JOIN LEFT';
|
||||||
|
First JOIN FULL second JOIN LEFT
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
0 UInt64 0 UInt64 String 3 UInt64 Join_2_Value_3 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
2 UInt64 2 UInt64 Join_1_Value_2 String 0 UInt64 String 0 UInt64 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
String Join_2_Value_3 String String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
Join_1_Value_2 String String String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN FULL second JOIN RIGHT';
|
||||||
|
First JOIN FULL second JOIN RIGHT
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
0 UInt64 0 UInt64 String 3 UInt64 Join_2_Value_3 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
4 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
String String Join_3_Value_4 String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN FULL second JOIN FULL';
|
||||||
|
First JOIN FULL second JOIN FULL
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
0 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
|
0 UInt64 0 UInt64 String 3 UInt64 Join_2_Value_3 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
2 UInt64 2 UInt64 Join_1_Value_2 String 0 UInt64 String 0 UInt64 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
String String Join_3_Value_4 String
|
||||||
|
String Join_2_Value_3 String String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
Join_1_Value_2 String String String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=0;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN INNER second JOIN INNER';
|
||||||
|
First JOIN INNER second JOIN INNER
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN INNER second JOIN LEFT';
|
||||||
|
First JOIN INNER second JOIN LEFT
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN INNER second JOIN RIGHT';
|
||||||
|
First JOIN INNER second JOIN RIGHT
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
4 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
String String Join_3_Value_4 String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN INNER second JOIN FULL';
|
||||||
|
First JOIN INNER second JOIN FULL
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
String String Join_3_Value_4 String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 INNER JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN LEFT second JOIN INNER';
|
||||||
|
First JOIN LEFT second JOIN INNER
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN LEFT second JOIN LEFT';
|
||||||
|
First JOIN LEFT second JOIN LEFT
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
2 UInt64 2 UInt64 Join_1_Value_2 String 0 UInt64 String 0 UInt64 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
Join_1_Value_2 String String String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN LEFT second JOIN RIGHT';
|
||||||
|
First JOIN LEFT second JOIN RIGHT
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
4 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
String String Join_3_Value_4 String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN LEFT second JOIN FULL';
|
||||||
|
First JOIN LEFT second JOIN FULL
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
2 UInt64 2 UInt64 Join_1_Value_2 String 0 UInt64 String 0 UInt64 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
String String Join_3_Value_4 String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
Join_1_Value_2 String String String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 LEFT JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN RIGHT second JOIN INNER';
|
||||||
|
First JOIN RIGHT second JOIN INNER
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN RIGHT second JOIN LEFT';
|
||||||
|
First JOIN RIGHT second JOIN LEFT
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
3 UInt64 0 UInt64 String 3 UInt64 Join_2_Value_3 String 0 UInt64 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
String Join_2_Value_3 String String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN RIGHT second JOIN RIGHT';
|
||||||
|
First JOIN RIGHT second JOIN RIGHT
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
4 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
String String Join_3_Value_4 String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN RIGHT second JOIN FULL';
|
||||||
|
First JOIN RIGHT second JOIN FULL
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
3 UInt64 0 UInt64 String 3 UInt64 Join_2_Value_3 String 0 UInt64 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
String String Join_3_Value_4 String
|
||||||
|
String Join_2_Value_3 String String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN FULL second JOIN INNER';
|
||||||
|
First JOIN FULL second JOIN INNER
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 String 3 UInt64 Join_2_Value_3 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) INNER JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN FULL second JOIN LEFT';
|
||||||
|
First JOIN FULL second JOIN LEFT
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 String 3 UInt64 Join_2_Value_3 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
2 UInt64 2 UInt64 Join_1_Value_2 String 0 UInt64 String 0 UInt64 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
String Join_2_Value_3 String String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
Join_1_Value_2 String String String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) LEFT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN FULL second JOIN RIGHT';
|
||||||
|
First JOIN FULL second JOIN RIGHT
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 String 3 UInt64 Join_2_Value_3 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
4 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
String String Join_3_Value_4 String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) RIGHT JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 'First JOIN FULL second JOIN FULL';
|
||||||
|
First JOIN FULL second JOIN FULL
|
||||||
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
0 UInt64 0 UInt64 String 0 UInt64 String 4 UInt64 Join_3_Value_4 String
|
||||||
|
0 UInt64 0 UInt64 String 3 UInt64 Join_2_Value_3 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
0 UInt64 0 UInt64 Join_1_Value_0 String 0 UInt64 Join_2_Value_0 String 0 UInt64 Join_3_Value_0 String
|
||||||
|
1 UInt64 1 UInt64 Join_1_Value_1 String 1 UInt64 Join_2_Value_1 String 1 UInt64 Join_3_Value_1 String
|
||||||
|
2 UInt64 2 UInt64 Join_1_Value_2 String 0 UInt64 String 0 UInt64 String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
|
FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
String String Join_3_Value_4 String
|
||||||
|
String Join_2_Value_3 String String
|
||||||
|
Join_1_Value_0 String Join_2_Value_0 String Join_3_Value_0 String
|
||||||
|
Join_1_Value_1 String Join_2_Value_1 String Join_3_Value_1 String
|
||||||
|
Join_1_Value_2 String String String
|
||||||
|
SELECT '--';
|
||||||
|
--
|
||||||
|
SELECT 1 FROM test_table_join_1 AS t1 FULL JOIN test_table_join_2 AS t2 USING (id) FULL JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan=1;
|
||||||
|
1
|
||||||
|
1
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
SELECT id FROM test_table_join_1 AS t1 RIGHT JOIN test_table_join_2 AS t2 ON t1.id = t2.id RIGHT JOIN test_table_join_3 AS t3 USING (id); -- { serverError AMBIGUOUS_IDENTIFIER }
|
|
||||||
|
@ -1,26 +1,27 @@
|
|||||||
SET enable_analyzer = 1;
|
SET enable_analyzer = 1;
|
||||||
SET enable_parallel_replicas = 1, max_parallel_replicas = 3, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost';
|
SET enable_parallel_replicas = 1, max_parallel_replicas = 3, cluster_for_parallel_replicas = 'test_cluster_one_shard_three_replicas_localhost';
|
||||||
|
SET parallel_replicas_mark_segment_size=1;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS test_table_join_1 SYNC;
|
DROP TABLE IF EXISTS test_table_join_1 SYNC;
|
||||||
CREATE TABLE test_table_join_1
|
CREATE TABLE test_table_join_1
|
||||||
(
|
(
|
||||||
id UInt8,
|
id UInt8,
|
||||||
value String
|
value String
|
||||||
) ENGINE = ReplicatedMergeTree('/clickhouse/{database}/test_table_join_1', 'r1') ORDER BY tuple();
|
) ENGINE = ReplicatedMergeTree('/clickhouse/{database}/test_table_join_1', 'r1') ORDER BY value SETTINGS index_granularity=1;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS test_table_join_2 SYNC;
|
DROP TABLE IF EXISTS test_table_join_2 SYNC;
|
||||||
CREATE TABLE test_table_join_2
|
CREATE TABLE test_table_join_2
|
||||||
(
|
(
|
||||||
id UInt16,
|
id UInt16,
|
||||||
value String
|
value String
|
||||||
) ENGINE = ReplicatedMergeTree('/clickhouse/{database}/test_table_join_2', 'r1') ORDER BY tuple();
|
) ENGINE = ReplicatedMergeTree('/clickhouse/{database}/test_table_join_2', 'r1') ORDER BY value SETTINGS index_granularity=1;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS test_table_join_3 SYNC;
|
DROP TABLE IF EXISTS test_table_join_3 SYNC;
|
||||||
CREATE TABLE test_table_join_3
|
CREATE TABLE test_table_join_3
|
||||||
(
|
(
|
||||||
id UInt64,
|
id UInt64,
|
||||||
value String
|
value String
|
||||||
) ENGINE = ReplicatedMergeTree('/clickhouse/{database}/test_table_join_3', 'r1') ORDER BY tuple();
|
) ENGINE = ReplicatedMergeTree('/clickhouse/{database}/test_table_join_3', 'r1') ORDER BY value SETTINGS index_granularity=1;
|
||||||
|
|
||||||
INSERT INTO test_table_join_1 VALUES (0, 'Join_1_Value_0');
|
INSERT INTO test_table_join_1 VALUES (0, 'Join_1_Value_0');
|
||||||
INSERT INTO test_table_join_1 VALUES (1, 'Join_1_Value_1');
|
INSERT INTO test_table_join_1 VALUES (1, 'Join_1_Value_1');
|
||||||
@ -36,33 +37,36 @@ INSERT INTO test_table_join_3 VALUES (4, 'Join_3_Value_4');
|
|||||||
|
|
||||||
-- { echoOn }
|
-- { echoOn }
|
||||||
|
|
||||||
{% for first_join_type in ['INNER', 'LEFT', 'RIGHT'] -%}
|
{% for parallel_replicas_local_plan in ['0', '1'] -%}
|
||||||
{% for second_join_type in ['INNER', 'LEFT', 'RIGHT'] -%}
|
{% for first_join_type in ['INNER', 'LEFT', 'RIGHT', 'FULL'] -%}
|
||||||
|
{% for second_join_type in ['INNER', 'LEFT', 'RIGHT', 'FULL'] -%}
|
||||||
|
|
||||||
SELECT 'First JOIN {{ first_join_type }} second JOIN {{ second_join_type }}';
|
SELECT 'First JOIN {{ first_join_type }} second JOIN {{ second_join_type }}';
|
||||||
|
|
||||||
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
SELECT id AS using_id, toTypeName(using_id), t1.id AS t1_id, toTypeName(t1_id), t1.value AS t1_value, toTypeName(t1_value),
|
||||||
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
t2.id AS t2_id, toTypeName(t2_id), t2.value AS t2_value, toTypeName(t2_value), t3.id AS t3_id, toTypeName(t3_id), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 {{ first_join_type }} JOIN test_table_join_2 AS t2 USING (id) {{ second_join_type }} JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 {{ first_join_type }} JOIN test_table_join_2 AS t2 USING (id) {{ second_join_type }} JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan={{ parallel_replicas_local_plan }};
|
||||||
|
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
|
|
||||||
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
SELECT t1.value AS t1_value, toTypeName(t1_value), t2.value AS t2_value, toTypeName(t2_value), t3.value AS t3_value, toTypeName(t3_value)
|
||||||
FROM test_table_join_1 AS t1 {{ first_join_type }} JOIN test_table_join_2 AS t2 USING (id) {{ second_join_type }} JOIN test_table_join_3 AS t3 USING(id)
|
FROM test_table_join_1 AS t1 {{ first_join_type }} JOIN test_table_join_2 AS t2 USING (id) {{ second_join_type }} JOIN test_table_join_3 AS t3 USING(id)
|
||||||
ORDER BY ALL;
|
ORDER BY ALL
|
||||||
|
SETTINGS parallel_replicas_local_plan={{ parallel_replicas_local_plan }};
|
||||||
|
|
||||||
SELECT '--';
|
SELECT '--';
|
||||||
|
|
||||||
SELECT 1 FROM test_table_join_1 AS t1 {{ first_join_type }} JOIN test_table_join_2 AS t2 USING (id) {{ second_join_type }} JOIN test_table_join_3 AS t3 USING(id);
|
SELECT 1 FROM test_table_join_1 AS t1 {{ first_join_type }} JOIN test_table_join_2 AS t2 USING (id) {{ second_join_type }} JOIN test_table_join_3 AS t3 USING(id)
|
||||||
|
SETTINGS parallel_replicas_local_plan={{ parallel_replicas_local_plan }};
|
||||||
SELECT id FROM test_table_join_1 AS t1 {{ first_join_type }} JOIN test_table_join_2 AS t2 ON t1.id = t2.id {{ second_join_type }} JOIN test_table_join_3 AS t3 USING (id); -- { serverError AMBIGUOUS_IDENTIFIER }
|
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
-- { echoOff }
|
-- { echoOff }
|
||||||
|
|
||||||
-- DROP TABLE test_table_join_1 SYNC;
|
DROP TABLE test_table_join_1 SYNC;
|
||||||
-- DROP TABLE test_table_join_2 SYNC;
|
DROP TABLE test_table_join_2 SYNC;
|
||||||
-- DROP TABLE test_table_join_3 SYNC;
|
DROP TABLE test_table_join_3 SYNC;
|
||||||
|
Loading…
Reference in New Issue
Block a user