Skip to content

Commit 0562234

Browse files
left-join-correction
Summary: - Correction of `left join` from defective `inner join` implementation to proper `left outer join` implementation.
1 parent fde7228 commit 0562234

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

internal/stackql/router/table_routing.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -537,11 +537,11 @@ func (v *standardTableRouteAstVisitor) Visit(node sqlparser.SQLNode) error {
537537
// and also so that
538538
// these are omitted from the WHERE clause.
539539
switch node.Join {
540-
case sqlparser.LeftJoinStr:
541540
case sqlparser.RightJoinStr:
542541
case sqlparser.StraightJoinStr:
543542
case sqlparser.JoinStr:
544-
case sqlparser.LeftOuterJoinStr:
543+
case sqlparser.LeftJoinStr, sqlparser.LeftOuterJoinStr:
544+
// LEFT JOIN and LEFT OUTER JOIN are semantically identical in SQL.
545545
rhs := v.tables[node.RightExpr]
546546
if rhs == nil {
547547
return fmt.Errorf("table routing: nil RHS table in left outer join")

test/robot/functional/stackql_mocked_from_cmd_line.robot

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1389,7 +1389,7 @@ Create and Interrogate Materialized View With Userspace Table Join and Aliasing
13891389

13901390
Subquery Left Joined With Aliasing and Name Collision
13911391
${inputStr} = Catenate
1392-
... select u1.UserName, u.UserId, u.Arn, u1.region from ( select Arn, UserName, UserId from aws.iam.users where region = 'us-east-1' ) u inner join aws.iam.users u1 on u1.Arn = u.Arn where region = 'us-east-1' order by u1.UserName desc;
1392+
... select u1.UserName, u.UserId, u.Arn, u1.region from ( select Arn, UserName, UserId from aws.iam.users where region = 'us-east-1' ) u left join aws.iam.users u1 on u1.Arn = u.Arn where region = 'us-east-1' order by u1.UserName desc;
13931393
${outputStr} = Catenate SEPARATOR=\n
13941394
... |----------|-----------------------|--------------------------------------------------------------------------------|-----------|
13951395
... |${SPACE}UserName${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}UserId${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}Arn${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}${SPACE}region${SPACE}${SPACE}${SPACE}|
@@ -2535,7 +2535,7 @@ Left Outer Join Network Infra Scalar in ON Condition
25352535
... ${outputStr}
25362536
... stdout=${CURDIR}/tmp/Left-Outer-Join-Network-Infra-Scalar-in-ON-Condition.tmp
25372537

2538-
Left Inner Join Users
2538+
Inner Join Users Cross Cloud Fuzzy Match
25392539
${sqliteInputStr} = Catenate
25402540
... select
25412541
... aid.UserName as aws_user_name
@@ -2591,7 +2591,7 @@ Left Inner Join Users
25912591
... ${SQL_BACKEND_CFG_STR_CANONICAL}
25922592
... ${inputStr}
25932593
... ${outputStr}
2594-
... stdout=${CURDIR}/tmp/Left-Inner-Join-Users.tmp
2594+
... stdout=${CURDIR}/tmp/Inner-Join-Users-Cross-Cloud-Fuzzy-Match.tmp
25952595

25962596
Google Admin Directory Small Response Also De Facto Credentials Path Env Var
25972597
Set Environment Variable GOOGLE_APPLICATION_CREDENTIALS ${GOOGLE_APPLICATION_CREDENTIALS}

0 commit comments

Comments
 (0)