@@ -233,6 +233,9 @@ func TestBuildSquashedTable(t *testing.T) {
233233 treeEntryBlobsSchema := append (gitbase .TreeEntriesSchema , gitbase .BlobsSchema ... )
234234 refsBlobsSchema := append (gitbase .RefsSchema , gitbase .BlobsSchema ... )
235235 commitBlobsSchema := append (gitbase .CommitsSchema , gitbase .BlobsSchema ... )
236+ repoCommitsSchema := append (gitbase .RepositoriesSchema , gitbase .CommitsSchema ... )
237+ repoTreeEntriesSchema := append (gitbase .RepositoriesSchema , gitbase .TreeEntriesSchema ... )
238+ repoBlobsSchema := append (gitbase .RepositoriesSchema , gitbase .BlobsSchema ... )
236239
237240 repoFilter := eq (
238241 col (0 , gitbase .RepositoriesTableName , "repository_id" ),
@@ -279,6 +282,36 @@ func TestBuildSquashedTable(t *testing.T) {
279282 col (1 , gitbase .ReferencesTableName , "repository_id" ),
280283 )
281284
285+ repoCommitsFilter := eq (
286+ col (0 , gitbase .RepositoriesTableName , "repository_id" ),
287+ col (2 , gitbase .CommitsTableName , "commit_hash" ),
288+ )
289+
290+ repoCommitsRedundantFilter := eq (
291+ col (0 , gitbase .RepositoriesTableName , "repository_id" ),
292+ col (1 , gitbase .CommitsTableName , "repository_id" ),
293+ )
294+
295+ repoTreeEntriesFilter := eq (
296+ col (0 , gitbase .RepositoriesTableName , "repository_id" ),
297+ col (2 , gitbase .TreeEntriesTableName , "tree_hash" ),
298+ )
299+
300+ repoTreeEntriesRedundantFilter := eq (
301+ col (0 , gitbase .RepositoriesTableName , "repository_id" ),
302+ col (1 , gitbase .TreeEntriesTableName , "repository_id" ),
303+ )
304+
305+ repoBlobsFilter := eq (
306+ col (0 , gitbase .RepositoriesTableName , "repository_id" ),
307+ col (2 , gitbase .BlobsTableName , "blob_hash" ),
308+ )
309+
310+ repoBlobsRedundantFilter := eq (
311+ col (0 , gitbase .RepositoriesTableName , "repository_id" ),
312+ col (1 , gitbase .BlobsTableName , "repository_id" ),
313+ )
314+
282315 commitFilter := eq (
283316 col (4 , gitbase .CommitsTableName , "commit_hash" ),
284317 col (4 , gitbase .CommitsTableName , "commit_hash" ),
@@ -504,14 +537,6 @@ func TestBuildSquashedTable(t *testing.T) {
504537 gitbase .CommitsTableName ,
505538 ),
506539 },
507- {
508- "repos with commits" ,
509- []sql.Table {repositories , commits },
510- nil ,
511- nil ,
512- errInvalidIteratorChain ,
513- nil ,
514- },
515540 {
516541 "remotes with commits" ,
517542 []sql.Table {remotes , commits },
@@ -574,14 +599,6 @@ func TestBuildSquashedTable(t *testing.T) {
574599 gitbase .TreeEntriesTableName ,
575600 ),
576601 },
577- {
578- "repos with tree entries" ,
579- []sql.Table {repositories , treeEntries },
580- nil ,
581- nil ,
582- errInvalidIteratorChain ,
583- nil ,
584- },
585602 {
586603 "refs with tree entries" ,
587604 []sql.Table {refs , treeEntries },
@@ -648,14 +665,6 @@ func TestBuildSquashedTable(t *testing.T) {
648665 gitbase .BlobsTableName ,
649666 ),
650667 },
651- {
652- "repos with blobs" ,
653- []sql.Table {repositories , blobs },
654- nil ,
655- nil ,
656- errInvalidIteratorChain ,
657- nil ,
658- },
659668 {
660669 "remotes with blobs" ,
661670 []sql.Table {remotes , blobs },
@@ -751,6 +760,81 @@ func TestBuildSquashedTable(t *testing.T) {
751760 gitbase .BlobsTableName ,
752761 ),
753762 },
763+ {
764+ "repos with commits" ,
765+ []sql.Table {repositories , commits },
766+ []sql.Expression {
767+ repoFilter ,
768+ commitFilter ,
769+ repoCommitsFilter ,
770+ repoCommitsRedundantFilter ,
771+ },
772+ nil ,
773+ nil ,
774+ newSquashedTable (
775+ gitbase .NewRepoCommitsIter (
776+ gitbase .NewAllReposIter (repoFilter ),
777+ and (
778+ fixIdx (t , commitFilter , repoCommitsSchema ),
779+ fixIdx (t , repoCommitsFilter , repoCommitsSchema ),
780+ ),
781+ ),
782+ nil ,
783+ gitbase .RepositoriesTableName ,
784+ gitbase .CommitsTableName ,
785+ ),
786+ },
787+ {
788+ "repositories with tree entries" ,
789+ []sql.Table {repositories , treeEntries },
790+ []sql.Expression {
791+ repoFilter ,
792+ treeEntryFilter ,
793+ repoTreeEntriesFilter ,
794+ repoTreeEntriesRedundantFilter ,
795+ },
796+ nil ,
797+ nil ,
798+ newSquashedTable (
799+ gitbase .NewRepoTreeEntriesIter (
800+ gitbase .NewAllReposIter (repoFilter ),
801+ and (
802+ fixIdx (t , treeEntryFilter , repoTreeEntriesSchema ),
803+ fixIdx (t , repoTreeEntriesFilter , repoTreeEntriesSchema ),
804+ ),
805+ ),
806+ nil ,
807+ gitbase .RepositoriesTableName ,
808+ gitbase .TreeEntriesTableName ,
809+ ),
810+ },
811+ {
812+ "blobs with tree entries" ,
813+ []sql.Table {repositories , blobs },
814+ []sql.Expression {
815+ repoFilter ,
816+ blobFilter ,
817+ repoBlobsFilter ,
818+ repoBlobsRedundantFilter ,
819+ },
820+ []sql.Expression {expression .NewGetFieldWithTable (
821+ 0 , sql .Int64 , gitbase .BlobsTableName , "blob_content" , false ,
822+ )},
823+ nil ,
824+ newSquashedTable (
825+ gitbase .NewRepoBlobsIter (
826+ gitbase .NewAllReposIter (repoFilter ),
827+ and (
828+ fixIdx (t , blobFilter , repoBlobsSchema ),
829+ fixIdx (t , repoBlobsFilter , repoBlobsSchema ),
830+ ),
831+ true ,
832+ ),
833+ nil ,
834+ gitbase .RepositoriesTableName ,
835+ gitbase .BlobsTableName ,
836+ ),
837+ },
754838 }
755839
756840 for _ , tt := range testCases {
@@ -1271,6 +1355,33 @@ func TestIsRedundantFilter(t *testing.T) {
12711355 ),
12721356 false ,
12731357 },
1358+ {
1359+ gitbase .RepositoriesTableName ,
1360+ gitbase .CommitsTableName ,
1361+ eq (
1362+ col (0 , gitbase .RepositoriesTableName , "repository_id" ),
1363+ col (0 , gitbase .CommitsTableName , "repository_id" ),
1364+ ),
1365+ true ,
1366+ },
1367+ {
1368+ gitbase .RepositoriesTableName ,
1369+ gitbase .TreeEntriesTableName ,
1370+ eq (
1371+ col (0 , gitbase .RepositoriesTableName , "repository_id" ),
1372+ col (0 , gitbase .TreeEntriesTableName , "repository_id" ),
1373+ ),
1374+ true ,
1375+ },
1376+ {
1377+ gitbase .RepositoriesTableName ,
1378+ gitbase .BlobsTableName ,
1379+ eq (
1380+ col (0 , gitbase .RepositoriesTableName , "repository_id" ),
1381+ col (0 , gitbase .BlobsTableName , "repository_id" ),
1382+ ),
1383+ true ,
1384+ },
12741385 }
12751386
12761387 for _ , tt := range testCases {
0 commit comments