Skip to content

Commit afa227a

Browse files
committed
New test case for pushdown_test.go
Signed-off-by: Zach Musgrave <zach@liquidata.co>
1 parent 067bc9e commit afa227a

File tree

1 file changed

+54
-4
lines changed

1 file changed

+54
-4
lines changed

sql/analyzer/pushdown_test.go

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func TestPushdownProjectionAndFilters(t *testing.T) {
3636

3737
node := plan.NewProject(
3838
[]sql.Expression{
39-
expression.NewGetFieldWithTable(0, sql.Int32, "mytable", "i", false),
39+
expression.NewGetFieldWithTable(2, sql.Text, "mytable2", "t2", false),
4040
},
4141
plan.NewFilter(
4242
expression.NewAnd(
@@ -57,7 +57,7 @@ func TestPushdownProjectionAndFilters(t *testing.T) {
5757

5858
expected := plan.NewProject(
5959
[]sql.Expression{
60-
expression.NewGetFieldWithTable(0, sql.Int32, "mytable", "i", false),
60+
expression.NewGetFieldWithTable(1, sql.Text, "mytable2", "t2", false),
6161
},
6262
plan.NewCrossJoin(
6363
plan.NewResolvedTable(
@@ -66,21 +66,71 @@ func TestPushdownProjectionAndFilters(t *testing.T) {
6666
expression.NewGetFieldWithTable(1, sql.Float64, "mytable", "f", false),
6767
expression.NewLiteral(3.14, sql.Float64),
6868
),
69-
}).(*memory.Table).WithProjection([]string{"i", "f"}),
69+
}).(*memory.Table).WithProjection([]string{"f"}),
7070
),
7171
plan.NewResolvedTable(
7272
table2.WithFilters([]sql.Expression{
7373
expression.NewIsNull(
7474
expression.NewGetFieldWithTable(0, sql.Int32, "mytable2", "i2", false),
7575
),
76-
}).(*memory.Table).WithProjection([]string{"i2"}),
76+
}).(*memory.Table).WithProjection([]string{"t2", "i2"}),
7777
),
7878
),
7979
)
8080

8181
result, err := f.Apply(sql.NewEmptyContext(), a, node)
8282
require.NoError(err)
8383
require.Equal(expected, result)
84+
85+
node = plan.NewProject(
86+
[]sql.Expression{
87+
expression.NewGetFieldWithTable(2, sql.Text, "mytable2", "t2", false),
88+
},
89+
plan.NewFilter(
90+
expression.NewOr(
91+
expression.NewEquals(
92+
expression.NewGetFieldWithTable(1, sql.Float64, "mytable", "f", false),
93+
expression.NewLiteral(3.14, sql.Float64),
94+
),
95+
expression.NewIsNull(
96+
expression.NewGetFieldWithTable(0, sql.Int32, "mytable2", "i2", false),
97+
),
98+
),
99+
plan.NewCrossJoin(
100+
plan.NewResolvedTable(table),
101+
plan.NewResolvedTable(table2),
102+
),
103+
),
104+
)
105+
106+
expected = plan.NewProject(
107+
[]sql.Expression{
108+
expression.NewGetFieldWithTable(1, sql.Text, "mytable2", "t2", false),
109+
},
110+
plan.NewFilter(
111+
expression.NewOr(
112+
expression.NewEquals(
113+
expression.NewGetFieldWithTable(0, sql.Float64, "mytable", "f", false),
114+
expression.NewLiteral(3.14, sql.Float64),
115+
),
116+
expression.NewIsNull(
117+
expression.NewGetFieldWithTable(2, sql.Int32, "mytable2", "i2", false),
118+
),
119+
),
120+
plan.NewCrossJoin(
121+
plan.NewResolvedTable(
122+
table.WithProjection([]string{"f"}),
123+
),
124+
plan.NewResolvedTable(
125+
table2.WithProjection([]string{"t2", "i2"}),
126+
),
127+
),
128+
),
129+
)
130+
131+
result, err = f.Apply(sql.NewEmptyContext(), a, node)
132+
require.NoError(err)
133+
require.Equal(expected, result)
84134
}
85135

86136
func TestPushdownIndexable(t *testing.T) {

0 commit comments

Comments
 (0)