@@ -2046,6 +2046,72 @@ WHERE
20462046 },
20472047 },
20482048 },
2049+ {
2050+ name : "joining on decimals" ,
2051+ setup : [][]string {
2052+ {
2053+ "create table t1(c0 decimal(6,3))" ,
2054+ "create table t2(c0 decimal(5,2))" ,
2055+ "insert into t1 values (10.000),(20.505),(30.000)" ,
2056+ "insert into t2 values (20.5), (25.0), (30.0)" ,
2057+ },
2058+ },
2059+ tests : []JoinOpTests {
2060+ {
2061+ Query : "select * from t1 join t2 on t1.c0 = t2.c0" ,
2062+ Expected : []sql.Row {{"30.000" , "30.00" }},
2063+ },
2064+ },
2065+ },
2066+ {
2067+ // https://github.com/dolthub/dolt/issues/9777
2068+ name : "join with % condition" ,
2069+ setup : [][]string {
2070+ {
2071+ "create table t1(c0 int)" ,
2072+ "create table t2(c0 int)" ,
2073+ "insert into t1 values (1),(2)" ,
2074+ "insert into t2 values (3),(4)" ,
2075+ },
2076+ },
2077+ tests : []JoinOpTests {
2078+ {
2079+ Query : "select * from t1 join t2 on (t1.c0 % 2) = (t2.c0 % 2)" ,
2080+ Expected : []sql.Row {
2081+ {1 , 3 },
2082+ {2 , 4 },
2083+ },
2084+ },
2085+ },
2086+ },
2087+ {
2088+ // https://github.com/dolthub/dolt/issues/9782
2089+ name : "joining with subquery on empty table" ,
2090+ setup : [][]string {
2091+ {
2092+ "CREATE TABLE t(c INT);" ,
2093+ "INSERT INTO t VALUES (1);" ,
2094+ },
2095+ },
2096+ tests : []JoinOpTests {
2097+ {
2098+ Query : "SELECT t.c FROM t LEFT JOIN (SELECT t.c FROM t WHERE FALSE) AS subq ON TRUE;" ,
2099+ Expected : []sql.Row {{1 }},
2100+ },
2101+ {
2102+ Query : "SELECT t.c FROM t NATURAL LEFT JOIN (SELECT t.c FROM t WHERE FALSE) AS subq;" ,
2103+ Expected : []sql.Row {{1 }},
2104+ },
2105+ {
2106+ Query : "SELECT t.c FROM (SELECT t.c FROM t WHERE FALSE) AS subq RIGHT JOIN t ON TRUE;" ,
2107+ Expected : []sql.Row {{1 }},
2108+ },
2109+ {
2110+ Query : "SELECT t.c FROM (SELECT t.c FROM t WHERE FALSE) AS subq NATURAL RIGHT JOIN t;" ,
2111+ Expected : []sql.Row {{1 }},
2112+ },
2113+ },
2114+ },
20492115}
20502116
20512117var rangeJoinOpTests = []JoinOpTests {
0 commit comments