Skip to content

Commit 3f18f52

Browse files
committed
add simple tests
1 parent 447dc8f commit 3f18f52

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

enginetest/queries/join_queries.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -808,6 +808,41 @@ var JoinScriptTests = []ScriptTest{
808808
},
809809
},
810810
},
811+
{
812+
// https://github.com/dolthub/dolt/issues/9807
813+
Name: "FULL OUTER JOIN with empty tables",
814+
SetUpScript: []string{
815+
"CREATE TABLE t1 (i INT);",
816+
"CREATE TABLE t2 (j INT);",
817+
"INSERT INTO t2 VALUES (1);",
818+
},
819+
Assertions: []ScriptTestAssertion{
820+
{
821+
Query: "SELECT i, j FROM t1 FULL OUTER JOIN t2 ON 1=1;",
822+
Expected: []sql.Row{
823+
{nil, 1},
824+
},
825+
},
826+
{
827+
Query: "SELECT j, i FROM t2 FULL OUTER JOIN t1 ON 1=1;",
828+
Expected: []sql.Row{
829+
{1, nil},
830+
},
831+
},
832+
{
833+
Query: "SELECT i, j FROM t1 FULL OUTER JOIN t2 ON 1=0;",
834+
Expected: []sql.Row{
835+
{nil, 1},
836+
},
837+
},
838+
{
839+
Query: "SELECT j, i FROM t2 FULL OUTER JOIN t1 ON 1=0;",
840+
Expected: []sql.Row{
841+
{1, nil},
842+
},
843+
},
844+
},
845+
},
811846
{
812847
Name: "Simple join query",
813848
SetUpScript: []string{},

sql/rowexec/join_iters.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,8 @@ func (i *fullJoinIter) Next(ctx *sql.Context) (sql.Row, error) {
516516

517517
for {
518518
if i.r == nil {
519+
// Phase 2 of FULL OUTER JOIN: return unmatched right rows as (null, rightRow).
520+
// Use parentRow instead of leftRow since leftRow is nil when left side is empty.
519521
iter, err := i.b.Build(ctx, i.rp, i.parentRow)
520522
if err != nil {
521523
return nil, err

0 commit comments

Comments
 (0)