Skip to content

Commit c740588

Browse files
committed
Merge branch 'main' into jennifer/sys-var
2 parents 4fbd4c7 + 248b1e8 commit c740588

34 files changed

+5060
-4610
lines changed

enginetest/join_op_tests.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,61 @@ var EngineOnlyJoinOpTests = []joinOpTest{
105105
}
106106

107107
var DefaultJoinOpTests = []joinOpTest{
108+
{
109+
// https://github.com/dolthub/dolt/issues/9807
110+
name: "FULL OUTER JOIN fails with empty subquery",
111+
setup: [][]string{
112+
{
113+
"CREATE TABLE t(c BOOLEAN);",
114+
"INSERT INTO t VALUES (FALSE);",
115+
},
116+
},
117+
tests: []JoinOpTests{
118+
{
119+
Query: "SELECT * FROM ( SELECT c FROM t WHERE c ) sub1 FULL OUTER JOIN ( SELECT 1 AS c ) sub2 ON 1=1;",
120+
Expected: []sql.Row{
121+
{nil, 1},
122+
},
123+
},
124+
},
125+
},
126+
{
127+
// https://github.com/dolthub/dolt/issues/9807
128+
name: "FULL OUTER JOIN with empty tables",
129+
setup: [][]string{
130+
{
131+
"CREATE TABLE t1 (i INT);",
132+
"CREATE TABLE t2 (j INT);",
133+
"INSERT INTO t2 VALUES (1);",
134+
},
135+
},
136+
tests: []JoinOpTests{
137+
{
138+
Query: "SELECT i, j FROM t1 FULL OUTER JOIN t2 ON 1=1;",
139+
Expected: []sql.Row{
140+
{nil, 1},
141+
},
142+
},
143+
{
144+
Query: "SELECT j, i FROM t2 FULL OUTER JOIN t1 ON 1=1;",
145+
Expected: []sql.Row{
146+
{1, nil},
147+
},
148+
},
149+
{
150+
Query: "SELECT i, j FROM t1 FULL OUTER JOIN t2 ON 1=0;",
151+
Expected: []sql.Row{
152+
{nil, 1},
153+
},
154+
},
155+
{
156+
Query: "SELECT j, i FROM t2 FULL OUTER JOIN t1 ON 1=0;",
157+
Expected: []sql.Row{
158+
{1, nil},
159+
},
160+
},
161+
},
162+
},
108163
{
109164
name: "bug where transitive join edge drops filters",
110165
setup: [][]string{

enginetest/join_planning_tests.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1788,6 +1788,34 @@ join uv d on d.u = c.x`,
17881788
},
17891789
},
17901790
},
1791+
{
1792+
name: "single look up plan does not drop complex equality filters",
1793+
setup: []string{
1794+
"create table t1 (i int primary key);",
1795+
"create table t2 (j int);",
1796+
"create table t3 (k int);",
1797+
"insert into t1 values (1), (2);",
1798+
"insert into t2 values (1), (2);",
1799+
"insert into t3 values (3);",
1800+
},
1801+
tests: []JoinPlanTest{
1802+
{
1803+
q: "select * from t1 cross join t2 join (select * from t3) v3 on v3.k = t2.j;",
1804+
types: []plan.JoinType{plan.JoinTypeHash, plan.JoinTypeCross},
1805+
exp: []sql.Row{},
1806+
},
1807+
{
1808+
q: "select * from t1 cross join t2 join (select * from t3) v3 on v3.k >= t2.j order by i, j, k;",
1809+
types: []plan.JoinType{plan.JoinTypeInner, plan.JoinTypeCross},
1810+
exp: []sql.Row{
1811+
{1, 1, 3},
1812+
{1, 2, 3},
1813+
{2, 1, 3},
1814+
{2, 2, 3},
1815+
},
1816+
},
1817+
},
1818+
},
17911819
}
17921820

17931821
func TestJoinPlanning(t *testing.T, harness Harness) {

enginetest/queries/function_queries.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,9 +569,26 @@ var FunctionQueryTests = []QueryTest{
569569
{
570570
Query: "SELECT BIT_LENGTH(i) from mytable order by i limit 1",
571571
Expected: []sql.Row{
572-
{64},
572+
{8},
573573
},
574574
},
575+
{
576+
// https://github.com/dolthub/dolt/issues/9818
577+
Query: "select bit_length(10)",
578+
Expected: []sql.Row{{16}},
579+
},
580+
{
581+
Query: "select bit_length(now())",
582+
Expected: []sql.Row{{152}},
583+
},
584+
{
585+
Query: "select bit_length(-10)",
586+
Expected: []sql.Row{{24}},
587+
},
588+
{
589+
Query: "select bit_length(true)",
590+
Expected: []sql.Row{{8}},
591+
},
575592
{
576593
Query: "select date_format(datetime_col, '%D') from datetime_table order by 1",
577594
Expected: []sql.Row{

enginetest/queries/integration_plans.go

Lines changed: 3526 additions & 3453 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

enginetest/queries/join_queries.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1200,6 +1200,37 @@ var JoinScriptTests = []ScriptTest{
12001200
},
12011201
},
12021202
},
1203+
{
1204+
Name: "HashLookup with type int8 and string type conversions",
1205+
SetUpScript: []string{
1206+
"create table t1 (c1 boolean);",
1207+
"create table t2 (c2 varchar(500));",
1208+
"insert into t1 values (true), (false);",
1209+
"insert into t2 values ('abc'), ('def');", // will be converted to float64(0) and match false
1210+
"insert into t2 values ('1asdf');", // will be converted to '1' and match true
1211+
"insert into t2 values ('5five');", // will be converted to '5' and match nothing
1212+
},
1213+
Assertions: []ScriptTestAssertion{
1214+
{
1215+
// TODO: our warnings don't align with MySQL
1216+
Query: "select /*+ HASH_JOIN(t1, t2) */ * from t1 join t2 where c1 = c2 order by c1, c2;",
1217+
Expected: []sql.Row{
1218+
{0, "abc"},
1219+
{0, "def"},
1220+
{1, "1asdf"},
1221+
},
1222+
},
1223+
{
1224+
// TODO: our warnings don't align with MySQL
1225+
Query: "select /*+ INNER_JOIN(t1, t2) */ * from t1 join t2 where c1 = c2 order by c1, c2;",
1226+
Expected: []sql.Row{
1227+
{0, "abc"},
1228+
{0, "def"},
1229+
{1, "1asdf"},
1230+
},
1231+
},
1232+
},
1233+
},
12031234
}
12041235

12051236
var LateralJoinScriptTests = []ScriptTest{
@@ -1398,4 +1429,20 @@ LATERAL (
13981429
},
13991430
},
14001431
},
1432+
{
1433+
// https://github.com/dolthub/dolt/issues/9820
1434+
Name: "lateral cross join with subquery",
1435+
SetUpScript: []string{
1436+
"create table t0(c0 boolean)",
1437+
"create table t1(c0 int)",
1438+
"insert into t0 values (true)",
1439+
"insert into t1 values(0)",
1440+
},
1441+
Assertions: []ScriptTestAssertion{
1442+
{
1443+
Query: "select v.c0, t1.c0 from t0 cross join lateral (select 1 as c0) as v join t1 on v.c0 > t1.c0",
1444+
Expected: []sql.Row{{1, 0}},
1445+
},
1446+
},
1447+
},
14011448
}

enginetest/queries/queries.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -892,6 +892,26 @@ var QueryTests = []QueryTest{
892892
Query: "SELECT 1 % true",
893893
Expected: []sql.Row{{"0"}},
894894
},
895+
{
896+
Query: "select 'abc' = false",
897+
Expected: []sql.Row{{true}},
898+
},
899+
{
900+
Query: "select '123abc' = 123",
901+
Expected: []sql.Row{{true}},
902+
},
903+
{
904+
Query: "select '1abc' = true",
905+
Expected: []sql.Row{{true}},
906+
},
907+
{
908+
Query: "select '123abc' = false",
909+
Expected: []sql.Row{{false}},
910+
},
911+
{
912+
Query: "select '123abc' = true",
913+
Expected: []sql.Row{{false}},
914+
},
895915
{
896916
Query: "SELECT * from mytable where (0.000 and true)",
897917
Expected: []sql.Row{},

0 commit comments

Comments
 (0)