Skip to content

Commit e6840f9

Browse files
Merge pull request #159 from benluddy/bz-1990850
Bug 1990850: Handle property and dependency values of type BLOB in ListBundles.
2 parents 3a21821 + 512dde7 commit e6840f9

File tree

3 files changed

+35
-4
lines changed

3 files changed

+35
-4
lines changed

staging/operator-registry/pkg/sqlite/query.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -991,12 +991,12 @@ tip (depth) AS (
991991
GROUP BY all_entry.operatorbundle_name, all_entry.package_name, all_entry.channel_name
992992
),
993993
merged_properties (bundle_name, merged) AS (
994-
SELECT operatorbundle_name, json_group_array(json_object('type', properties.type, 'value', properties.value))
994+
SELECT operatorbundle_name, json_group_array(json_object('type', CAST(properties.type AS TEXT), 'value', CAST(properties.value AS TEXT)))
995995
FROM properties
996996
GROUP BY operatorbundle_name
997997
),
998998
merged_dependencies (bundle_name, merged) AS (
999-
SELECT operatorbundle_name, json_group_array(json_object('type', dependencies.type, 'value', CAST(dependencies.value AS TEXT)))
999+
SELECT operatorbundle_name, json_group_array(json_object('type', CAST(dependencies.type AS TEXT), 'value', CAST(dependencies.value AS TEXT)))
10001000
FROM dependencies
10011001
GROUP BY operatorbundle_name
10021002
)

staging/operator-registry/pkg/sqlite/query_sql_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,37 @@ func TestListBundlesQuery(t *testing.T) {
155155
require.False(rows.Next())
156156
},
157157
},
158+
{
159+
Name: "properties and depdendencies columns may be stored as sqlite type blob",
160+
OmitManfests: true,
161+
Setup: func(t *testing.T, db *sql.DB) {
162+
for _, stmt := range []string{
163+
`insert into package (name, default_channel) values ("package", "channel")`,
164+
`insert into channel (name, package_name, head_operatorbundle_name) values ("channel", "package", "bundle")`,
165+
`insert into operatorbundle (name, bundle) values ("bundle-a", "{}")`,
166+
`insert into channel_entry (package_name, channel_name, operatorbundle_name, entry_id, depth) values ("package", "channel", "bundle-a", 1, 0)`,
167+
`insert into properties (type, value, operatorbundle_name) values (CAST("blob_ptype" AS BLOB), CAST("blob_pvalue" AS BLOB), "bundle-a")`,
168+
`insert into dependencies (type, value, operatorbundle_name) values (CAST("blob_dtype" AS BLOB), CAST("blob_dvalue" AS BLOB), "bundle-a")`,
169+
} {
170+
if _, err := db.Exec(stmt); err != nil {
171+
t.Fatalf("unexpected error executing setup statements: %v", err)
172+
}
173+
}
174+
175+
},
176+
Expect: func(t *testing.T, rows *sql.Rows) {
177+
require := require.New(t)
178+
require.True(rows.Next())
179+
var (
180+
props, deps sql.NullString
181+
c interface{}
182+
)
183+
require.NoError(rows.Scan(&c, &c, &c, &c, &c, &c, &c, &c, &c, &c, &deps, &props))
184+
require.Equal(sql.NullString{Valid: true, String: `[{"type":"blob_ptype","value":"blob_pvalue"}]`}, props)
185+
require.Equal(sql.NullString{Valid: true, String: `[{"type":"blob_dtype","value":"blob_dvalue"}]`}, deps)
186+
require.False(rows.Next())
187+
},
188+
},
158189
{
159190
Name: "manifests not omitted with bundlepath",
160191
OmitManfests: true,

vendor/github.com/operator-framework/operator-registry/pkg/sqlite/query.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)