Add a stored normalized name column with an index#1160
Open
Add a stored normalized name column with an index#1160
Conversation
gerrod3
reviewed
Mar 24, 2026
pulp_python/app/models.py
Outdated
| license = models.TextField() # Deprecated in favour of License-Expression | ||
| metadata_version = models.TextField() | ||
| name = models.TextField() | ||
| name = models.TextField(db_index=True) |
Contributor
There was a problem hiding this comment.
Since all the other filters in pypi/views will use name_normalized I think this index is almost unused. The only place it will be used is in normal content filtering on the Pulp endpoint. Should we switch that name filter to use the new field under the hood?
Contributor
There was a problem hiding this comment.
Can we remove this index now that you switched the filter over?
2edeffd to
02d0537
Compare
Add a name_normalized field to PythonPackageContent that stores the pre-computed LOWER(REGEXP_REPLACE(name, ...)) value, populated via a BEFORE_SAVE hook. Add db_index=True. Change all name__normalize= lookups to use name_normalized__exact=. This eliminates the regex computation at query time. closes: pulp#1159 Assisted By: claude-opus-4.6
02d0537 to
53b6f61
Compare
jobselko
reviewed
Mar 25, 2026
| @@ -211,6 +214,11 @@ class PythonPackageContent(Content): | |||
| name.register_lookup(NormalizeName) | |||
Contributor
There was a problem hiding this comment.
Do we still need name.register_lookup(NormalizeName) with this change?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add a name_normalized field to PythonPackageContent that stores the pre-computed LOWER(REGEXP_REPLACE(name, ...)) value, populated via a BEFORE_SAVE hook.
Add db_index=True.
Change all name__normalize= lookups to use name_normalized__exact=. This eliminates the regex computation at query time.
closes: #1159
Assisted By: claude-opus-4.6
📜 Checklist
See: Pull Request Walkthrough