Skip to content

Commit f3a70ab

Browse files
committed
limit whole query
1 parent e703ce4 commit f3a70ab

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

internal/test/integration/rpm_test.go

+18-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"github.com/content-services/tang/internal/config"
99
"github.com/content-services/tang/internal/zestwrapper"
1010
"github.com/content-services/tang/pkg/tangy"
11+
"github.com/rs/zerolog"
12+
"github.com/rs/zerolog/log"
1113
"github.com/stretchr/testify/assert"
1214
"github.com/stretchr/testify/require"
1315
"github.com/stretchr/testify/suite"
@@ -68,7 +70,7 @@ func TestRpmSuite(t *testing.T) {
6870
Port: dbConfig.Port,
6971
User: dbConfig.User,
7072
Password: dbConfig.Password,
71-
}, tangy.Logger{})
73+
}, tangy.Logger{Enabled: true, Logger: &log.Logger, LogLevel: zerolog.LevelDebugValue})
7274
require.NoError(t, err)
7375

7476
r := RpmSuite{}
@@ -122,6 +124,21 @@ func (r *RpmSuite) TestRpmRepositoryVersionPackageSearch() {
122124
assert.Equal(r.T(), search[0].Name, "bear")
123125
assert.Equal(r.T(), search[1].Name, "camel")
124126

127+
// Create third repository version to remove new package
128+
r.UpdateTestRepository(r.T(), testRepoURL)
129+
resp, err = r.client.GetRpmRepositoryByName(r.domainName, testRepoName)
130+
require.NoError(r.T(), err)
131+
thirdVersionHref := resp.LatestVersionHref
132+
require.NotNil(r.T(), thirdVersionHref)
133+
134+
// Search third repository version, should not have new package
135+
search, err = r.tangy.RpmRepositoryVersionPackageSearch(context.Background(), []string{*thirdVersionHref}, "bea", 100)
136+
assert.NoError(r.T(), err)
137+
assert.Equal(r.T(), search[0].Name, "bear")
138+
search, err = r.tangy.RpmRepositoryVersionPackageSearch(context.Background(), []string{*thirdVersionHref}, "cam", 100)
139+
assert.NoError(r.T(), err)
140+
assert.Empty(r.T(), search)
141+
125142
// Test search limit
126143
search, err = r.tangy.RpmRepositoryVersionPackageSearch(context.Background(), []string{*secondVersionHref}, "a", 1)
127144
assert.NoError(r.T(), err)

pkg/tangy/rpm.go

+6-7
Original file line numberDiff line numberDiff line change
@@ -34,26 +34,25 @@ func (t *tangyImpl) RpmRepositoryVersionPackageSearch(ctx context.Context, hrefs
3434
return nil, fmt.Errorf("error parsing repository version hrefs: %w", err)
3535
}
3636

37-
var query string
37+
query := `SELECT DISTINCT ON (rp.name) rp.name, rp.summary
38+
FROM rpm_package rp WHERE rp.content_ptr_id IN (`
3839
for i := 0; i < len(repositoryIDs); i++ {
3940
id := repositoryIDs[i]
4041
ver := versions[i]
4142

4243
query += fmt.Sprintf(`
43-
SELECT DISTINCT ON (rp.name) rp.name, rp.summary
44-
FROM rpm_package rp
45-
WHERE rp.content_ptr_id IN (
44+
(
4645
SELECT crc.content_id
4746
FROM core_repositorycontent crc
4847
INNER JOIN core_repositoryversion crv ON (crc.version_added_id = crv.pulp_id)
4948
LEFT OUTER JOIN core_repositoryversion crv2 ON (crc.version_removed_id = crv2.pulp_id)
5049
WHERE crv.repository_id = '%v' AND crv.number <= %v AND NOT (crv2.number <= %v AND crv2.number IS NOT NULL)
51-
AND rp.name ILIKE CONCAT( '%%', '%v'::text, '%%') ORDER BY rp.name ASC LIMIT %v
50+
AND rp.name ILIKE CONCAT( '%%', '%v'::text, '%%')
5251
)
53-
`, id, ver, ver, search, limit)
52+
`, id, ver, ver, search)
5453

5554
if i == len(repositoryIDs)-1 {
56-
query += ";"
55+
query += fmt.Sprintf(") ORDER BY rp.name ASC LIMIT %v;", limit)
5756
break
5857
}
5958

0 commit comments

Comments
 (0)