Skip to content

Commit 700e56b

Browse files
committed
internal/rule: display indexed tables in squash
Signed-off-by: Miguel Molina <[email protected]>
1 parent a61496a commit 700e56b

File tree

2 files changed

+61
-3
lines changed

2 files changed

+61
-3
lines changed

internal/rule/squashjoins.go

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -768,7 +768,18 @@ func buildSquashedTable(
768768

769769
mapping := buildSchemaMapping(originalSchema, iter.Schema())
770770

771-
var node sql.Node = newSquashedTable(iter, mapping, allFilters, tableNames...)
771+
var indexedTables []string
772+
if index != nil {
773+
indexedTables = []string{firstTable}
774+
}
775+
776+
var node sql.Node = newSquashedTable(
777+
iter,
778+
mapping,
779+
allFilters,
780+
indexedTables,
781+
tableNames...,
782+
)
772783

773784
if len(filters) > 0 {
774785
f, err := fixFieldIndexes(expression.JoinAnd(filters...), iter.Schema())
@@ -988,16 +999,18 @@ type squashedTable struct {
988999
tables []string
9891000
schemaMappings []int
9901001
filters []sql.Expression
1002+
indexedTables []string
9911003
schema sql.Schema
9921004
}
9931005

9941006
func newSquashedTable(
9951007
iter gitbase.ChainableIter,
9961008
mapping []int,
9971009
filters []sql.Expression,
1010+
indexedTables []string,
9981011
tables ...string,
9991012
) *squashedTable {
1000-
return &squashedTable{iter, tables, mapping, filters, nil}
1013+
return &squashedTable{iter, tables, mapping, filters, indexedTables, nil}
10011014
}
10021015

10031016
var _ sql.Node = (*squashedTable)(nil)
@@ -1058,9 +1071,18 @@ func (t *squashedTable) String() string {
10581071
}
10591072
_ = fp.WriteChildren(filters...)
10601073

1074+
children := []string{cp.String(), fp.String()}
1075+
1076+
if len(t.indexedTables) > 0 {
1077+
ip := sql.NewTreePrinter()
1078+
_ = ip.WriteNode("IndexedTables")
1079+
_ = ip.WriteChildren(t.indexedTables...)
1080+
children = append(children, ip.String())
1081+
}
1082+
10611083
p := sql.NewTreePrinter()
10621084
_ = p.WriteNode("SquashedTable(%s)", strings.Join(t.tables, ", "))
1063-
_ = p.WriteChildren(cp.String(), fp.String())
1085+
_ = p.WriteChildren(children...)
10641086
return p.String()
10651087
}
10661088
func (t *squashedTable) TransformExpressionsUp(sql.TransformExprFunc) (sql.Node, error) {

internal/rule/squashjoins_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ func TestSquashJoins(t *testing.T) {
8787
),
8888
lit(4),
8989
},
90+
nil,
9091
gitbase.RepositoriesTableName,
9192
gitbase.ReferencesTableName,
9293
gitbase.CommitsTableName,
@@ -149,6 +150,7 @@ func TestSquashJoinsIndexes(t *testing.T) {
149150
col(0, gitbase.CommitTreesTableName, "commit_hash"),
150151
),
151152
},
153+
[]string{gitbase.CommitsTableName},
152154
gitbase.CommitsTableName,
153155
gitbase.CommitTreesTableName,
154156
),
@@ -238,6 +240,7 @@ func TestSquashJoinsPartial(t *testing.T) {
238240
),
239241
lit(4),
240242
},
243+
nil,
241244
gitbase.RepositoriesTableName,
242245
gitbase.ReferencesTableName,
243246
),
@@ -674,6 +677,7 @@ func TestBuildSquashedTable(t *testing.T) {
674677
repoRemotesFilter,
675678
remotesFilter,
676679
},
680+
nil,
677681
gitbase.RepositoriesTableName,
678682
gitbase.RemotesTableName,
679683
),
@@ -707,6 +711,7 @@ func TestBuildSquashedTable(t *testing.T) {
707711
remoteRefsFilter,
708712
refFilter,
709713
},
714+
nil,
710715
gitbase.RemotesTableName,
711716
gitbase.ReferencesTableName,
712717
),
@@ -739,6 +744,7 @@ func TestBuildSquashedTable(t *testing.T) {
739744
repoRefsFilter,
740745
repoRefsRedundantFilter,
741746
},
747+
nil,
742748
gitbase.RepositoriesTableName,
743749
gitbase.ReferencesTableName,
744750
),
@@ -774,6 +780,7 @@ func TestBuildSquashedTable(t *testing.T) {
774780
refsCommitsFilter,
775781
refCommitsRedundantFilter,
776782
},
783+
nil,
777784
gitbase.ReferencesTableName,
778785
gitbase.CommitsTableName,
779786
),
@@ -822,6 +829,7 @@ func TestBuildSquashedTable(t *testing.T) {
822829
commitTreeEntriesFilter,
823830
commitTreeEntriesRedundantFilter,
824831
},
832+
nil,
825833
gitbase.CommitsTableName,
826834
gitbase.TreeEntriesTableName,
827835
),
@@ -861,6 +869,7 @@ func TestBuildSquashedTable(t *testing.T) {
861869
refCommitTreesFilter,
862870
refCommitTreesRedundantFilter,
863871
},
872+
nil,
864873
gitbase.ReferencesTableName,
865874
gitbase.CommitTreesTableName,
866875
),
@@ -904,6 +913,7 @@ func TestBuildSquashedTable(t *testing.T) {
904913
treeEntryBlobsRedundantFilter,
905914
treeEntryBlobsFilter,
906915
},
916+
nil,
907917
gitbase.TreeEntriesTableName,
908918
gitbase.BlobsTableName,
909919
),
@@ -962,6 +972,7 @@ func TestBuildSquashedTable(t *testing.T) {
962972
repoCommitsFilter,
963973
repoCommitsRedundantFilter,
964974
},
975+
nil,
965976
gitbase.RepositoriesTableName,
966977
gitbase.CommitsTableName,
967978
),
@@ -996,6 +1007,7 @@ func TestBuildSquashedTable(t *testing.T) {
9961007
refsRefCommitsFilter,
9971008
refsRefCommitsRedundantFilter,
9981009
},
1010+
nil,
9991011
gitbase.ReferencesTableName,
10001012
gitbase.RefCommitsTableName,
10011013
),
@@ -1030,6 +1042,7 @@ func TestBuildSquashedTable(t *testing.T) {
10301042
refsRefCommitsFilter,
10311043
refsRefCommitsHeadRedundantFilter,
10321044
},
1045+
nil,
10331046
gitbase.ReferencesTableName,
10341047
gitbase.RefCommitsTableName,
10351048
),
@@ -1064,6 +1077,7 @@ func TestBuildSquashedTable(t *testing.T) {
10641077
refCommitsCommitsFilter,
10651078
refCommitsCommitsRedundantFilter,
10661079
},
1080+
nil,
10671081
gitbase.RefCommitsTableName,
10681082
gitbase.CommitsTableName,
10691083
),
@@ -1095,6 +1109,7 @@ func TestBuildSquashedTable(t *testing.T) {
10951109
repoTreeEntriesFilter,
10961110
repoTreeEntriesRedundantFilter,
10971111
},
1112+
nil,
10981113
gitbase.RepositoriesTableName,
10991114
gitbase.TreeEntriesTableName,
11001115
),
@@ -1131,6 +1146,7 @@ func TestBuildSquashedTable(t *testing.T) {
11311146
repoRefCommitsFilter,
11321147
repoRefCommitsRedundantFilter,
11331148
},
1149+
nil,
11341150
gitbase.RepositoriesTableName,
11351151
gitbase.RefCommitsTableName,
11361152
),
@@ -1165,6 +1181,7 @@ func TestBuildSquashedTable(t *testing.T) {
11651181
repoBlobsFilter,
11661182
repoBlobsRedundantFilter,
11671183
},
1184+
nil,
11681185
gitbase.RepositoriesTableName,
11691186
gitbase.BlobsTableName,
11701187
),
@@ -1211,6 +1228,7 @@ func TestBuildSquashedTable(t *testing.T) {
12111228
refCommitsCommitsFilter,
12121229
refCommitsCommitsRedundantFilter,
12131230
},
1231+
nil,
12141232
gitbase.ReferencesTableName,
12151233
gitbase.RefCommitsTableName,
12161234
gitbase.CommitsTableName,
@@ -1258,6 +1276,7 @@ func TestBuildSquashedTable(t *testing.T) {
12581276
refCommitsCommitsFilter,
12591277
refCommitsCommitsRedundantFilter,
12601278
},
1279+
nil,
12611280
gitbase.ReferencesTableName,
12621281
gitbase.RefCommitsTableName,
12631282
gitbase.CommitsTableName,
@@ -1293,6 +1312,7 @@ func TestBuildSquashedTable(t *testing.T) {
12931312
commitTreeTreeEntriesFilter,
12941313
commitTreeTreeEntriesRedundantFilter,
12951314
},
1315+
nil,
12961316
gitbase.CommitTreesTableName,
12971317
gitbase.TreeEntriesTableName,
12981318
),
@@ -1328,6 +1348,7 @@ func TestBuildSquashedTable(t *testing.T) {
13281348
commitCommitTreesFilter,
13291349
commitCommitTreesRedundantFilter,
13301350
},
1351+
nil,
13311352
gitbase.CommitsTableName,
13321353
gitbase.CommitTreesTableName,
13331354
),
@@ -1363,6 +1384,7 @@ func TestBuildSquashedTable(t *testing.T) {
13631384
commitCommitTreesFilter,
13641385
commitCommitTreesByTreeRedundantFilter,
13651386
},
1387+
nil,
13661388
gitbase.CommitsTableName,
13671389
gitbase.CommitTreesTableName,
13681390
),
@@ -1397,6 +1419,7 @@ func TestBuildSquashedTable(t *testing.T) {
13971419
refCommitCommitTreesFilter,
13981420
refCommitCommitTreesRedundantFilter,
13991421
},
1422+
nil,
14001423
gitbase.RefCommitsTableName,
14011424
gitbase.CommitTreesTableName,
14021425
),
@@ -1435,6 +1458,7 @@ func TestBuildSquashedTable(t *testing.T) {
14351458
refCommitBlobsFilter,
14361459
refCommitBlobsRedundantFilter,
14371460
},
1461+
nil,
14381462
gitbase.ReferencesTableName,
14391463
gitbase.CommitBlobsTableName,
14401464
),
@@ -1468,6 +1492,7 @@ func TestBuildSquashedTable(t *testing.T) {
14681492
refCommitCommitBlobsFilter,
14691493
refCommitCommitBlobsRedundantFilter,
14701494
},
1495+
nil,
14711496
gitbase.RefCommitsTableName,
14721497
gitbase.CommitBlobsTableName,
14731498
),
@@ -1502,6 +1527,7 @@ func TestBuildSquashedTable(t *testing.T) {
15021527
commitCommitBlobsFilter,
15031528
commitCommitBlobsRedundantFilter,
15041529
},
1530+
nil,
15051531
gitbase.CommitsTableName,
15061532
gitbase.CommitBlobsTableName,
15071533
),
@@ -1536,6 +1562,7 @@ func TestBuildSquashedTable(t *testing.T) {
15361562
commitBlobBlobsFilter,
15371563
commitBlobBlobsRedundantFilter,
15381564
},
1565+
nil,
15391566
gitbase.CommitBlobsTableName,
15401567
gitbase.BlobsTableName,
15411568
),
@@ -1561,6 +1588,7 @@ func TestBuildSquashedTable(t *testing.T) {
15611588
[]sql.Expression{
15621589
refCommitsCommitsRedundantFilter,
15631590
},
1591+
[]string{gitbase.RefCommitsTableName},
15641592
gitbase.RefCommitsTableName,
15651593
gitbase.CommitsTableName,
15661594
),
@@ -1587,6 +1615,7 @@ func TestBuildSquashedTable(t *testing.T) {
15871615
[]sql.Expression{
15881616
commitCommitTreesRedundantFilter,
15891617
},
1618+
[]string{gitbase.CommitsTableName},
15901619
gitbase.CommitsTableName,
15911620
gitbase.CommitTreesTableName,
15921621
),
@@ -1613,6 +1642,7 @@ func TestBuildSquashedTable(t *testing.T) {
16131642
[]sql.Expression{
16141643
commitTreeTreeEntriesRedundantFilter,
16151644
},
1645+
[]string{gitbase.CommitTreesTableName},
16161646
gitbase.CommitTreesTableName,
16171647
gitbase.TreeEntriesTableName,
16181648
),
@@ -1639,6 +1669,7 @@ func TestBuildSquashedTable(t *testing.T) {
16391669
[]sql.Expression{
16401670
commitBlobBlobsRedundantFilter,
16411671
},
1672+
[]string{gitbase.CommitBlobsTableName},
16421673
gitbase.CommitBlobsTableName,
16431674
gitbase.BlobsTableName,
16441675
),
@@ -1665,6 +1696,7 @@ func TestBuildSquashedTable(t *testing.T) {
16651696
[]sql.Expression{
16661697
treeEntryBlobsRedundantFilter,
16671698
},
1699+
[]string{gitbase.TreeEntriesTableName},
16681700
gitbase.TreeEntriesTableName,
16691701
gitbase.BlobsTableName,
16701702
),
@@ -1699,6 +1731,7 @@ func TestBuildSquashedTable(t *testing.T) {
16991731
refsCommitFilesFilter,
17001732
refsCommitFilesRedundantFilter,
17011733
},
1734+
nil,
17021735
gitbase.ReferencesTableName,
17031736
gitbase.CommitFilesTableName,
17041737
),
@@ -1733,6 +1766,7 @@ func TestBuildSquashedTable(t *testing.T) {
17331766
commitsCommitFilesFilter,
17341767
commitsCommitFilesRedundantFilter,
17351768
},
1769+
nil,
17361770
gitbase.CommitsTableName,
17371771
gitbase.CommitFilesTableName,
17381772
),
@@ -1771,6 +1805,7 @@ func TestBuildSquashedTable(t *testing.T) {
17711805
commitFilesFilesTreeHashRedundantFilter,
17721806
commitFilesFilesBlobHashRedundantFilter,
17731807
},
1808+
nil,
17741809
gitbase.CommitFilesTableName,
17751810
gitbase.FilesTableName,
17761811
),
@@ -1801,6 +1836,7 @@ func TestBuildSquashedTable(t *testing.T) {
18011836
commitFilesFilesTreeHashRedundantFilter,
18021837
commitFilesFilesFilePathRedundantFilter,
18031838
},
1839+
[]string{gitbase.CommitFilesTableName},
18041840
gitbase.CommitFilesTableName,
18051841
gitbase.FilesTableName,
18061842
),

0 commit comments

Comments
 (0)