Skip to content

Commit 26e32ab

Browse files
committedApr 16, 2020
fix(query): ListBundles returns all bundles even without dependencies
ListBundles query uses INNER JOIN which only intersection meaning it only returns bundles with dependencies. Switching to LEFT OUTER JOIN to return all bundles with or without dependencies. Signed-off-by: Vu Dinh <[email protected]>
1 parent 368fcb8 commit 26e32ab

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed
 

‎pkg/registry/populator.go

-1
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,6 @@ func parseDependenciesFile(path string, depFile *DependenciesFile) error {
351351
for _, v := range deps.RawMessage {
352352
// convert map to json
353353
jsonStr, _ := json.Marshal(v)
354-
fmt.Println(string(jsonStr))
355354

356355
// Check dependency type
357356
dep := Dependency{}

‎pkg/registry/populator_test.go

+11-2
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,11 @@ func TestListBundles(t *testing.T) {
449449
store, err := createAndPopulateDB(db)
450450
require.NoError(t, err)
451451

452+
var count int
453+
row := db.QueryRow("SELECT COUNT(*) FROM operatorbundle")
454+
err = row.Scan(&count)
455+
require.NoError(t, err)
456+
452457
expectedDependencies := []*api.Dependency{
453458
{
454459
Type: "olm.package",
@@ -468,9 +473,13 @@ func TestListBundles(t *testing.T) {
468473
bundles, err := store.ListBundles(context.TODO())
469474
require.NoError(t, err)
470475
for _, b := range bundles {
471-
dep := b.Dependencies
472-
dependencies = append(dependencies, dep...)
476+
for _, d := range b.Dependencies {
477+
if d.GetType() != "" {
478+
dependencies = append(dependencies, d)
479+
}
480+
}
473481
}
482+
require.Equal(t, count, len(bundles))
474483
require.ElementsMatch(t, expectedDependencies, dependencies)
475484
}
476485

‎pkg/sqlite/query.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -788,7 +788,7 @@ func (s *SQLQuerier) ListBundles(ctx context.Context) (bundles []*api.Bundle, er
788788
dependencies.type, dependencies.value
789789
FROM channel_entry
790790
INNER JOIN operatorbundle ON operatorbundle.name = channel_entry.operatorbundle_name
791-
INNER JOIN dependencies ON dependencies.operatorbundle_name = channel_entry.operatorbundle_name
791+
LEFT OUTER JOIN dependencies ON dependencies.operatorbundle_name = channel_entry.operatorbundle_name
792792
INNER JOIN package ON package.name = channel_entry.package_name`
793793

794794
rows, err := s.db.QueryContext(ctx, query)
@@ -820,6 +820,9 @@ func (s *SQLQuerier) ListBundles(ctx context.Context) (bundles []*api.Bundle, er
820820
if ok {
821821
// Create new dependency object
822822
dep := &api.Dependency{}
823+
if !depType.Valid || !depValue.Valid {
824+
continue
825+
}
823826
dep.Type = depType.String
824827
dep.Value = depValue.String
825828

0 commit comments

Comments
 (0)