@@ -233,6 +233,9 @@ func TestBuildSquashedTable(t *testing.T) {
233
233
treeEntryBlobsSchema := append (gitbase .TreeEntriesSchema , gitbase .BlobsSchema ... )
234
234
refsBlobsSchema := append (gitbase .RefsSchema , gitbase .BlobsSchema ... )
235
235
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 ... )
236
239
237
240
repoFilter := eq (
238
241
col (0 , gitbase .RepositoriesTableName , "repository_id" ),
@@ -279,6 +282,36 @@ func TestBuildSquashedTable(t *testing.T) {
279
282
col (1 , gitbase .ReferencesTableName , "repository_id" ),
280
283
)
281
284
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
+
282
315
commitFilter := eq (
283
316
col (4 , gitbase .CommitsTableName , "commit_hash" ),
284
317
col (4 , gitbase .CommitsTableName , "commit_hash" ),
@@ -504,14 +537,6 @@ func TestBuildSquashedTable(t *testing.T) {
504
537
gitbase .CommitsTableName ,
505
538
),
506
539
},
507
- {
508
- "repos with commits" ,
509
- []sql.Table {repositories , commits },
510
- nil ,
511
- nil ,
512
- errInvalidIteratorChain ,
513
- nil ,
514
- },
515
540
{
516
541
"remotes with commits" ,
517
542
[]sql.Table {remotes , commits },
@@ -574,14 +599,6 @@ func TestBuildSquashedTable(t *testing.T) {
574
599
gitbase .TreeEntriesTableName ,
575
600
),
576
601
},
577
- {
578
- "repos with tree entries" ,
579
- []sql.Table {repositories , treeEntries },
580
- nil ,
581
- nil ,
582
- errInvalidIteratorChain ,
583
- nil ,
584
- },
585
602
{
586
603
"refs with tree entries" ,
587
604
[]sql.Table {refs , treeEntries },
@@ -648,14 +665,6 @@ func TestBuildSquashedTable(t *testing.T) {
648
665
gitbase .BlobsTableName ,
649
666
),
650
667
},
651
- {
652
- "repos with blobs" ,
653
- []sql.Table {repositories , blobs },
654
- nil ,
655
- nil ,
656
- errInvalidIteratorChain ,
657
- nil ,
658
- },
659
668
{
660
669
"remotes with blobs" ,
661
670
[]sql.Table {remotes , blobs },
@@ -751,6 +760,81 @@ func TestBuildSquashedTable(t *testing.T) {
751
760
gitbase .BlobsTableName ,
752
761
),
753
762
},
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
+ },
754
838
}
755
839
756
840
for _ , tt := range testCases {
@@ -1271,6 +1355,33 @@ func TestIsRedundantFilter(t *testing.T) {
1271
1355
),
1272
1356
false ,
1273
1357
},
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
+ },
1274
1385
}
1275
1386
1276
1387
for _ , tt := range testCases {
0 commit comments