Skip to content
This repository was archived by the owner on Jan 28, 2021. It is now read-only.

Commit 4a301c6

Browse files
authored
sql/plan: make LEFT and RIGHT join work as expected (#743)
sql/plan: make LEFT and RIGHT join work as expected
2 parents 8405ee2 + 526c8ba commit 4a301c6

File tree

4 files changed

+146
-155
lines changed

4 files changed

+146
-155
lines changed

Diff for: engine_test.go

+12-36
Original file line numberDiff line numberDiff line change
@@ -1139,59 +1139,35 @@ var queries = []struct {
11391139
[]sql.Row{{float64(1)}, {float64(2)}, {float64(3)}},
11401140
},
11411141
{
1142-
"SELECT i, i2, s2 FROM mytable LEFT JOIN othertable ON i = i2",
1142+
"SELECT i, i2, s2 FROM mytable LEFT JOIN othertable ON i = i2 - 1",
11431143
[]sql.Row{
1144-
{int64(1), int64(1), "third"},
1145-
{int64(1), nil, nil},
1146-
{int64(1), nil, nil},
1147-
{int64(2), int64(2), "second"},
1148-
{int64(2), nil, nil},
1149-
{int64(2), nil, nil},
1150-
{int64(3), int64(3), "first"},
1151-
{int64(3), nil, nil},
1144+
{int64(1), int64(2), "second"},
1145+
{int64(2), int64(3), "first"},
11521146
{int64(3), nil, nil},
11531147
},
11541148
},
11551149
{
1156-
"SELECT i, i2, s2 FROM mytable RIGHT JOIN othertable ON i = i2",
1150+
"SELECT i, i2, s2 FROM mytable RIGHT JOIN othertable ON i = i2 - 1",
11571151
[]sql.Row{
1158-
{int64(1), int64(1), "third"},
1159-
{nil, int64(1), "third"},
11601152
{nil, int64(1), "third"},
1161-
{int64(2), int64(2), "second"},
1162-
{nil, int64(2), "second"},
1163-
{nil, int64(2), "second"},
1164-
{int64(3), int64(3), "first"},
1165-
{nil, int64(3), "first"},
1166-
{nil, int64(3), "first"},
1153+
{int64(1), int64(2), "second"},
1154+
{int64(2), int64(3), "first"},
11671155
},
11681156
},
11691157
{
1170-
"SELECT i, i2, s2 FROM mytable LEFT OUTER JOIN othertable ON i = i2",
1158+
"SELECT i, i2, s2 FROM mytable LEFT OUTER JOIN othertable ON i = i2 - 1",
11711159
[]sql.Row{
1172-
{int64(1), int64(1), "third"},
1173-
{int64(1), nil, nil},
1174-
{int64(1), nil, nil},
1175-
{int64(2), int64(2), "second"},
1176-
{int64(2), nil, nil},
1177-
{int64(2), nil, nil},
1178-
{int64(3), int64(3), "first"},
1179-
{int64(3), nil, nil},
1160+
{int64(1), int64(2), "second"},
1161+
{int64(2), int64(3), "first"},
11801162
{int64(3), nil, nil},
11811163
},
11821164
},
11831165
{
1184-
"SELECT i, i2, s2 FROM mytable RIGHT OUTER JOIN othertable ON i = i2",
1166+
"SELECT i, i2, s2 FROM mytable RIGHT OUTER JOIN othertable ON i = i2 - 1",
11851167
[]sql.Row{
1186-
{int64(1), int64(1), "third"},
1187-
{nil, int64(1), "third"},
11881168
{nil, int64(1), "third"},
1189-
{int64(2), int64(2), "second"},
1190-
{nil, int64(2), "second"},
1191-
{nil, int64(2), "second"},
1192-
{int64(3), int64(3), "first"},
1193-
{nil, int64(3), "first"},
1194-
{nil, int64(3), "first"},
1169+
{int64(1), int64(2), "second"},
1170+
{int64(2), int64(3), "first"},
11951171
},
11961172
},
11971173
{

Diff for: sql/plan/cross_join_test.go

+11-11
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import (
44
"io"
55
"testing"
66

7-
"github.com/stretchr/testify/require"
87
"github.com/src-d/go-mysql-server/mem"
98
"github.com/src-d/go-mysql-server/sql"
9+
"github.com/stretchr/testify/require"
1010
)
1111

1212
var lSchema = sql.Schema{
@@ -62,25 +62,25 @@ func TestCrossJoin(t *testing.T) {
6262

6363
require.Equal("col1_1", row[0])
6464
require.Equal("col2_1", row[1])
65-
require.Equal(int32(1111), row[2])
66-
require.Equal(int64(2222), row[3])
65+
require.Equal(int32(1), row[2])
66+
require.Equal(int64(2), row[3])
6767
require.Equal("col1_1", row[4])
6868
require.Equal("col2_1", row[5])
69-
require.Equal(int32(1111), row[6])
70-
require.Equal(int64(2222), row[7])
69+
require.Equal(int32(1), row[6])
70+
require.Equal(int64(2), row[7])
7171

7272
row, err = iter.Next()
7373
require.NoError(err)
7474
require.NotNil(row)
7575

7676
require.Equal("col1_1", row[0])
7777
require.Equal("col2_1", row[1])
78-
require.Equal(int32(1111), row[2])
79-
require.Equal(int64(2222), row[3])
78+
require.Equal(int32(1), row[2])
79+
require.Equal(int64(2), row[3])
8080
require.Equal("col1_2", row[4])
8181
require.Equal("col2_2", row[5])
82-
require.Equal(int32(3333), row[6])
83-
require.Equal(int64(4444), row[7])
82+
require.Equal(int32(3), row[6])
83+
require.Equal(int64(4), row[7])
8484

8585
for i := 0; i < 2; i++ {
8686
row, err = iter.Next()
@@ -139,8 +139,8 @@ func insertData(t *testing.T, table *mem.Table) {
139139
require := require.New(t)
140140

141141
rows := []sql.Row{
142-
sql.NewRow("col1_1", "col2_1", int32(1111), int64(2222)),
143-
sql.NewRow("col1_2", "col2_2", int32(3333), int64(4444)),
142+
sql.NewRow("col1_1", "col2_1", int32(1), int64(2)),
143+
sql.NewRow("col1_2", "col2_2", int32(3), int64(4)),
144144
}
145145

146146
for _, r := range rows {

0 commit comments

Comments
 (0)