mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 08:32:02 +00:00
rewrite COMMA JOIN too
This commit is contained in:
parent
e5a05bae47
commit
f731702de0
@ -71,7 +71,8 @@ static ASTPtr getCrossJoin(ASTSelectQuery & select, std::vector<DatabaseAndTable
|
|||||||
|
|
||||||
if (auto join = typeid_cast<const ASTTableJoin *>(right->table_join.get()))
|
if (auto join = typeid_cast<const ASTTableJoin *>(right->table_join.get()))
|
||||||
{
|
{
|
||||||
if (join->kind == ASTTableJoin::Kind::Cross)
|
if (join->kind == ASTTableJoin::Kind::Cross ||
|
||||||
|
join->kind == ASTTableJoin::Kind::Comma)
|
||||||
{
|
{
|
||||||
if (!join->children.empty())
|
if (!join->children.empty())
|
||||||
throw Exception("Logical error: CROSS JOIN has expressions", ErrorCodes::LOGICAL_ERROR);
|
throw Exception("Logical error: CROSS JOIN has expressions", ErrorCodes::LOGICAL_ERROR);
|
||||||
|
@ -6,6 +6,8 @@ cross nullable
|
|||||||
cross nullable vs not nullable
|
cross nullable vs not nullable
|
||||||
1 1 1 1
|
1 1 1 1
|
||||||
Explain ParsedAST (children 1)\n SelectWithUnionQuery (children 1)\n ExpressionList (children 1)\n SelectQuery (children 3)\n ExpressionList (children 1)\n Asterisk\n TablesInSelectQuery (children 2)\n TablesInSelectQueryElement (children 1)\n TableExpression (children 1)\n Identifier t1\n TablesInSelectQueryElement (children 2)\n TableExpression (children 1)\n Identifier t2\n TableJoin\n Function equals (children 1)\n ExpressionList (children 2)\n Identifier t1.a\n Identifier t2.a\n
|
Explain ParsedAST (children 1)\n SelectWithUnionQuery (children 1)\n ExpressionList (children 1)\n SelectQuery (children 3)\n ExpressionList (children 1)\n Asterisk\n TablesInSelectQuery (children 2)\n TablesInSelectQueryElement (children 1)\n TableExpression (children 1)\n Identifier t1\n TablesInSelectQueryElement (children 2)\n TableExpression (children 1)\n Identifier t2\n TableJoin\n Function equals (children 1)\n ExpressionList (children 2)\n Identifier t1.a\n Identifier t2.a\n
|
||||||
|
Explain ParsedAST (children 1)\n SelectWithUnionQuery (children 1)\n ExpressionList (children 1)\n SelectQuery (children 3)\n ExpressionList (children 1)\n Asterisk\n TablesInSelectQuery (children 2)\n TablesInSelectQueryElement (children 1)\n TableExpression (children 1)\n Identifier t1\n TablesInSelectQueryElement (children 2)\n TableExpression (children 1)\n Identifier t2\n TableJoin\n Function equals (children 1)\n ExpressionList (children 2)\n Identifier t1.a\n Identifier t2.a\n
|
||||||
|
Explain ParsedAST (children 1)\n SelectWithUnionQuery (children 1)\n ExpressionList (children 1)\n SelectQuery (children 2)\n ExpressionList (children 1)\n Asterisk\n TablesInSelectQuery (children 2)\n TablesInSelectQueryElement (children 1)\n TableExpression (children 1)\n Identifier t1\n TablesInSelectQueryElement (children 2)\n TableJoin (children 1)\n Function equals (children 1)\n ExpressionList (children 2)\n Identifier t1.a\n Identifier t2.a\n TableExpression (children 1)\n Identifier t2\n
|
||||||
Explain ParsedAST (children 1)\n SelectWithUnionQuery (children 1)\n ExpressionList (children 1)\n SelectQuery (children 2)\n ExpressionList (children 1)\n Asterisk\n TablesInSelectQuery (children 2)\n TablesInSelectQueryElement (children 1)\n TableExpression (children 1)\n Identifier t1\n TablesInSelectQueryElement (children 2)\n TableJoin (children 1)\n Function equals (children 1)\n ExpressionList (children 2)\n Identifier t1.a\n Identifier t2.a\n TableExpression (children 1)\n Identifier t2\n
|
Explain ParsedAST (children 1)\n SelectWithUnionQuery (children 1)\n ExpressionList (children 1)\n SelectQuery (children 2)\n ExpressionList (children 1)\n Asterisk\n TablesInSelectQuery (children 2)\n TablesInSelectQueryElement (children 1)\n TableExpression (children 1)\n Identifier t1\n TablesInSelectQueryElement (children 2)\n TableJoin (children 1)\n Function equals (children 1)\n ExpressionList (children 2)\n Identifier t1.a\n Identifier t2.a\n TableExpression (children 1)\n Identifier t2\n
|
||||||
cross
|
cross
|
||||||
1 1 1 1
|
1 1 1 1
|
||||||
@ -14,3 +16,8 @@ cross nullable
|
|||||||
1 1 1 1
|
1 1 1 1
|
||||||
cross nullable vs not nullable
|
cross nullable vs not nullable
|
||||||
1 1 1 1
|
1 1 1 1
|
||||||
|
comma
|
||||||
|
1 1 1 1
|
||||||
|
2 2 2 \N
|
||||||
|
comma nullable
|
||||||
|
1 1 1 1
|
||||||
|
@ -19,10 +19,12 @@ SELECT * FROM t1 cross join t2 where t1.a = t2.b;
|
|||||||
|
|
||||||
SET enable_debug_queries = 1;
|
SET enable_debug_queries = 1;
|
||||||
AST SELECT * FROM t1 cross join t2 where t1.a = t2.a;
|
AST SELECT * FROM t1 cross join t2 where t1.a = t2.a;
|
||||||
|
AST SELECT * FROM t1, t2 where t1.a = t2.a;
|
||||||
|
|
||||||
SET allow_experimental_cross_to_join_conversion = 1;
|
SET allow_experimental_cross_to_join_conversion = 1;
|
||||||
|
|
||||||
AST SELECT * FROM t1 cross join t2 where t1.a = t2.a;
|
AST SELECT * FROM t1 cross join t2 where t1.a = t2.a;
|
||||||
|
AST SELECT * FROM t1, t2 where t1.a = t2.a;
|
||||||
|
|
||||||
SELECT 'cross';
|
SELECT 'cross';
|
||||||
SELECT * FROM t1 cross join t2 where t1.a = t2.a;
|
SELECT * FROM t1 cross join t2 where t1.a = t2.a;
|
||||||
@ -31,5 +33,10 @@ SELECT * FROM t1 cross join t2 where t1.b = t2.b;
|
|||||||
SELECT 'cross nullable vs not nullable';
|
SELECT 'cross nullable vs not nullable';
|
||||||
SELECT * FROM t1 cross join t2 where t1.a = t2.b;
|
SELECT * FROM t1 cross join t2 where t1.a = t2.b;
|
||||||
|
|
||||||
|
SELECT 'comma';
|
||||||
|
SELECT * FROM t1, t2 where t1.a = t2.a;
|
||||||
|
SELECT 'comma nullable';
|
||||||
|
SELECT * FROM t1, t2 where t1.b = t2.b;
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
|
Loading…
Reference in New Issue
Block a user