@@ -23,6 +23,7 @@ func TestAnalyzeSquashJoinsExchange(t *testing.T) {
2323 WithParallelism (2 ).
2424 AddPostAnalyzeRule (SquashJoinsRule , SquashJoins ).
2525 Build ()
26+ a .Batches = a .Batches [:len (a .Batches )- 1 ] // remove the track_process rule
2627 a .CurrentDatabase = "foo"
2728 ctx := sql .NewEmptyContext ()
2829
@@ -39,7 +40,10 @@ func TestAnalyzeSquashJoinsExchange(t *testing.T) {
3940 require .True (ok )
4041 require .Equal (2 , exchange .Parallelism )
4142
42- _ , ok = exchange .Child .(* gitbase.SquashedTable )
43+ rt , ok := exchange .Child .(* plan.ResolvedTable )
44+ require .True (ok )
45+
46+ _ , ok = rt .Table .(* gitbase.SquashedTable )
4347 require .True (ok )
4448}
4549
@@ -54,16 +58,13 @@ func TestSquashJoins(t *testing.T) {
5458 lit (2 ),
5559 plan .NewInnerJoin (
5660 plan .NewResolvedTable (
57- gitbase .CommitsTableName ,
5861 tables [gitbase .CommitsTableName ],
5962 ),
6063 plan .NewInnerJoin (
6164 plan .NewResolvedTable (
62- gitbase .RepositoriesTableName ,
6365 tables [gitbase .RepositoriesTableName ],
6466 ),
6567 plan .NewResolvedTable (
66- gitbase .ReferencesTableName ,
6768 tables [gitbase .ReferencesTableName ],
6869 ),
6970 and (
@@ -89,49 +90,51 @@ func TestSquashJoins(t *testing.T) {
8990 []sql.Expression {lit (1 )},
9091 plan .NewFilter (
9192 lit (2 ),
92- gitbase .NewSquashedTable (
93- gitbase .NewRefHEADCommitsIter (
94- gitbase .NewRepoRefsIter (
95- gitbase .NewAllReposIter (
96- and (
97- lit (3 ),
98- lit (4 ),
93+ plan .NewResolvedTable (
94+ gitbase .NewSquashedTable (
95+ gitbase .NewRefHEADCommitsIter (
96+ gitbase .NewRepoRefsIter (
97+ gitbase .NewAllReposIter (
98+ and (
99+ lit (3 ),
100+ lit (4 ),
101+ ),
99102 ),
103+ nil ,
104+ false ,
100105 ),
101106 nil ,
102107 false ,
103108 ),
109+ []int {4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 0 , 1 , 2 , 3 },
110+ []sql.Expression {
111+ eq (
112+ col (0 , gitbase .ReferencesTableName , "commit_hash" ),
113+ col (0 , gitbase .CommitsTableName , "commit_hash" ),
114+ ),
115+ lit (3 ),
116+ eq (
117+ col (0 , gitbase .RepositoriesTableName , "repository_id" ),
118+ col (0 , gitbase .ReferencesTableName , "repository_id" ),
119+ ),
120+ lit (4 ),
121+ },
104122 nil ,
105- false ,
123+ gitbase .RepositoriesTableName ,
124+ gitbase .ReferencesTableName ,
125+ gitbase .CommitsTableName ,
106126 ),
107- []int {4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 0 , 1 , 2 , 3 },
108- []sql.Expression {
109- eq (
110- col (0 , gitbase .ReferencesTableName , "commit_hash" ),
111- col (0 , gitbase .CommitsTableName , "commit_hash" ),
112- ),
113- lit (3 ),
114- eq (
115- col (0 , gitbase .RepositoriesTableName , "repository_id" ),
116- col (0 , gitbase .ReferencesTableName , "repository_id" ),
117- ),
118- lit (4 ),
119- },
120- nil ,
121- gitbase .RepositoriesTableName ,
122- gitbase .ReferencesTableName ,
123- gitbase .CommitsTableName ,
124127 ),
125128 ),
126129 )
127130
128131 result , err := SquashJoins (sql .NewEmptyContext (), analyzer .NewDefault (nil ), node )
129132 require .NoError (err )
130133 expected , err = expected .TransformUp (func (n sql.Node ) (sql.Node , error ) {
131- t , ok := n .(* gitbase. SquashedTable )
134+ t , ok := n .(* plan. ResolvedTable )
132135 if ok {
133136 // precompute schema
134- _ = t .Schema ()
137+ _ = t .Table . Schema ()
135138 return t , nil
136139 }
137140
@@ -152,11 +155,9 @@ func TestSquashJoinsIndexes(t *testing.T) {
152155 []sql.Expression {lit (1 )},
153156 plan .NewInnerJoin (
154157 plan .NewResolvedTable (
155- gitbase .CommitsTableName ,
156158 tables [gitbase .CommitsTableName ].(sql.IndexableTable ).WithIndexLookup (idx1 ),
157159 ),
158160 plan .NewResolvedTable (
159- gitbase .CommitTreesTableName ,
160161 tables [gitbase .CommitTreesTableName ].(sql.IndexableTable ).WithIndexLookup (idx2 ),
161162 ),
162163 eq (
@@ -168,22 +169,24 @@ func TestSquashJoinsIndexes(t *testing.T) {
168169
169170 expected := plan .NewProject (
170171 []sql.Expression {lit (1 )},
171- gitbase .NewSquashedTable (
172- gitbase .NewCommitTreesIter (
173- gitbase .NewIndexCommitsIter (idx1 , nil ),
172+ plan .NewResolvedTable (
173+ gitbase .NewSquashedTable (
174+ gitbase .NewCommitTreesIter (
175+ gitbase .NewIndexCommitsIter (idx1 , nil ),
176+ nil ,
177+ false ,
178+ ),
174179 nil ,
175- false ,
180+ []sql.Expression {
181+ eq (
182+ col (0 , gitbase .CommitsTableName , "commit_hash" ),
183+ col (0 , gitbase .CommitTreesTableName , "commit_hash" ),
184+ ),
185+ },
186+ []string {gitbase .CommitsTableName },
187+ gitbase .CommitsTableName ,
188+ gitbase .CommitTreesTableName ,
176189 ),
177- nil ,
178- []sql.Expression {
179- eq (
180- col (0 , gitbase .CommitsTableName , "commit_hash" ),
181- col (0 , gitbase .CommitTreesTableName , "commit_hash" ),
182- ),
183- },
184- []string {gitbase .CommitsTableName },
185- gitbase .CommitsTableName ,
186- gitbase .CommitTreesTableName ,
187190 ),
188191 )
189192
@@ -201,11 +204,9 @@ func TestSquashJoinsUnsquashable(t *testing.T) {
201204 []sql.Expression {lit (1 )},
202205 plan .NewInnerJoin (
203206 plan .NewResolvedTable (
204- gitbase .RepositoriesTableName ,
205207 tables [gitbase .RepositoriesTableName ],
206208 ),
207209 plan .NewLimit (1 , plan .NewResolvedTable (
208- gitbase .ReferencesTableName ,
209210 tables [gitbase .ReferencesTableName ],
210211 )),
211212 lit (4 ),
@@ -226,16 +227,13 @@ func TestSquashJoinsPartial(t *testing.T) {
226227 []sql.Expression {lit (1 )},
227228 plan .NewInnerJoin (
228229 plan .NewLimit (1 , plan .NewResolvedTable (
229- gitbase .CommitsTableName ,
230230 tables [gitbase .CommitsTableName ],
231231 )),
232232 plan .NewInnerJoin (
233233 plan .NewResolvedTable (
234- gitbase .RepositoriesTableName ,
235234 tables [gitbase .RepositoriesTableName ],
236235 ),
237236 plan .NewResolvedTable (
238- gitbase .ReferencesTableName ,
239237 tables [gitbase .ReferencesTableName ],
240238 ),
241239 and (
@@ -254,26 +252,27 @@ func TestSquashJoinsPartial(t *testing.T) {
254252 []sql.Expression {lit (1 )},
255253 plan .NewInnerJoin (
256254 plan .NewLimit (1 , plan .NewResolvedTable (
257- gitbase .CommitsTableName ,
258255 tables [gitbase .CommitsTableName ],
259256 )),
260- gitbase .NewSquashedTable (
261- gitbase .NewRepoRefsIter (
262- gitbase .NewAllReposIter (lit (4 )),
257+ plan .NewResolvedTable (
258+ gitbase .NewSquashedTable (
259+ gitbase .NewRepoRefsIter (
260+ gitbase .NewAllReposIter (lit (4 )),
261+ nil ,
262+ false ,
263+ ),
263264 nil ,
264- false ,
265+ []sql.Expression {
266+ eq (
267+ col (0 , gitbase .RepositoriesTableName , "repository_id" ),
268+ col (0 , gitbase .ReferencesTableName , "repository_id" ),
269+ ),
270+ lit (4 ),
271+ },
272+ nil ,
273+ gitbase .RepositoriesTableName ,
274+ gitbase .ReferencesTableName ,
265275 ),
266- nil ,
267- []sql.Expression {
268- eq (
269- col (0 , gitbase .RepositoriesTableName , "repository_id" ),
270- col (0 , gitbase .ReferencesTableName , "repository_id" ),
271- ),
272- lit (4 ),
273- },
274- nil ,
275- gitbase .RepositoriesTableName ,
276- gitbase .ReferencesTableName ,
277276 ),
278277 lit (3 ),
279278 ),
@@ -291,16 +290,13 @@ func TestSquashJoinsSchema(t *testing.T) {
291290
292291 node := plan .NewInnerJoin (
293292 plan .NewResolvedTable (
294- gitbase .CommitsTableName ,
295293 tables [gitbase .CommitsTableName ],
296294 ),
297295 plan .NewInnerJoin (
298296 plan .NewResolvedTable (
299- gitbase .RepositoriesTableName ,
300297 tables [gitbase .RepositoriesTableName ],
301298 ),
302299 plan .NewResolvedTable (
303- gitbase .ReferencesTableName ,
304300 tables [gitbase .ReferencesTableName ],
305301 ),
306302 and (
@@ -682,7 +678,7 @@ func TestBuildSquashedTable(t *testing.T) {
682678 columns []string
683679 indexes map [string ]sql.IndexLookup
684680 err * errors.Kind
685- expected sql. Node
681+ expected * gitbase. SquashedTable
686682 }{
687683 {
688684 "repos with remotes" ,
@@ -1916,7 +1912,7 @@ func TestBuildSquashedTable(t *testing.T) {
19161912 require .True (tt .err .Is (err ))
19171913 } else {
19181914 require .NoError (err )
1919- require .Equal (tt .expected , result )
1915+ require .Equal (plan . NewResolvedTable ( tt .expected ) , result )
19201916 }
19211917 })
19221918 }
@@ -1931,11 +1927,9 @@ func fixIdx(t *testing.T, e sql.Expression, schema sql.Schema) sql.Expression {
19311927func TestIsJoinLeafSquashable (t * testing.T ) {
19321928 tables := gitbase .NewDatabase ("" ).Tables ()
19331929 t1 := plan .NewResolvedTable (
1934- gitbase .RepositoriesTableName ,
19351930 tables [gitbase .RepositoriesTableName ],
19361931 )
19371932 t2 := plan .NewResolvedTable (
1938- gitbase .ReferencesTableName ,
19391933 tables [gitbase .ReferencesTableName ],
19401934 )
19411935
@@ -2181,15 +2175,12 @@ func TestIsJoinCondSquashable(t *testing.T) {
21812175 require := require .New (t )
21822176 tables := gitbase .NewDatabase ("" ).Tables ()
21832177 repos := plan .NewResolvedTable (
2184- gitbase .ReferencesTableName ,
21852178 tables [gitbase .ReferencesTableName ],
21862179 )
21872180 refs := plan .NewResolvedTable (
2188- gitbase .ReferencesTableName ,
21892181 tables [gitbase .ReferencesTableName ],
21902182 )
21912183 commits := plan .NewResolvedTable (
2192- gitbase .CommitsTableName ,
21932184 tables [gitbase .CommitsTableName ],
21942185 )
21952186
0 commit comments