@@ -29,20 +29,22 @@ func TestIf(t *testing.T) {
29
29
expr sql.Expression
30
30
row sql.Row
31
31
expected interface {}
32
+ type1 sql.Type
33
+ type2 sql.Type
32
34
}{
33
- {eq (lit (1 , types .Int64 ), lit (1 , types .Int64 )), sql.Row {"a" , "b" }, "a" },
34
- {eq (lit (1 , types .Int64 ), lit (0 , types .Int64 )), sql.Row {"a" , "b" }, "b" },
35
- {eq (lit (1 , types .Int64 ), lit (1 , types .Int64 )), sql.Row {1 , 2 }, 1 },
36
- {eq (lit (1 , types .Int64 ), lit (0 , types .Int64 )), sql.Row {1 , 2 }, 2 },
37
- {eq (lit (nil , types .Int64 ), lit (1 , types .Int64 )), sql.Row {"a" , "b" }, "b" },
38
- {eq (lit (1 , types .Int64 ), lit (1 , types .Int64 )), sql.Row {nil , "b" }, nil },
35
+ {eq (lit (1 , types .Int64 ), lit (1 , types .Int64 )), sql.Row {"a" , "b" }, "a" , types . Text , types . Text },
36
+ {eq (lit (1 , types .Int64 ), lit (0 , types .Int64 )), sql.Row {"a" , "b" }, "b" , types . Text , types . Text },
37
+ {eq (lit (1 , types .Int64 ), lit (1 , types .Int64 )), sql.Row {1 , 2 }, int64 ( 1 ), types . Int64 , types . Int64 },
38
+ {eq (lit (1 , types .Int64 ), lit (0 , types .Int64 )), sql.Row {1 , 2 }, int64 ( 2 ), types . Int64 , types . Int64 },
39
+ {eq (lit (nil , types .Int64 ), lit (1 , types .Int64 )), sql.Row {"a" , "b" }, "b" , types . Text , types . Text },
40
+ {eq (lit (1 , types .Int64 ), lit (1 , types .Int64 )), sql.Row {nil , "b" }, nil , nil , types . Text },
39
41
}
40
42
41
43
for _ , tc := range testCases {
42
44
f := NewIf (
43
45
tc .expr ,
44
- expression .NewGetField (0 , types . LongText , "true" , true ),
45
- expression .NewGetField (1 , types . LongText , "false" , true ),
46
+ expression .NewGetField (0 , tc . type1 , "true" , true ),
47
+ expression .NewGetField (1 , tc . type2 , "false" , true ),
46
48
)
47
49
48
50
v , err := f .Eval (sql .NewEmptyContext (), tc .row )
0 commit comments