Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions pulpcore/app/models/repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -885,6 +885,10 @@ class Meta:
class RepositoryVersionQuerySet(models.QuerySet):
"""A queryset that provides repository version filtering methods."""

def get_queryset(self):
# Prevent the content_ids to be automatically hydrated.
return super().get_queryset().defer("content_ids")

def complete(self):
return self.filter(complete=True)

Expand Down Expand Up @@ -997,15 +1001,13 @@ def get_content(self, content_qs=None):
if content_qs is None:
content_qs = Content.objects

content_ids = self.content_ids
if len(content_ids) >= 65535:
# Workaround for PostgreSQL's limit on the number of parameters in a query
content_ids = (
RepositoryVersion.objects.filter(pk=self.pk)
.annotate(cids=Func(F("content_ids"), function="unnest"))
.values_list("cids", flat=True)
)
return content_qs.filter(pk__in=content_ids)
# Try to not even attempt to evaluate the content_ids on the python side.
content_ids_subquery = (
RepositoryVersion.objects.filter(pk=self.pk)
.annotate(cids=Func(F("content_ids"), function="unnest"))
.values_list("cids", flat=True)
)
return content_qs.filter(pk__in=content_ids_subquery)

@property
def content(self):
Expand Down
Loading