diff options
| author | Ken Nzioka <nzioker@gmail.com> | 2025-10-22 10:48:23 +0300 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2025-10-24 15:51:39 -0400 |
| commit | 3ff32c50d143d8a498f9a5dfef1a31b16a7456fe (patch) | |
| tree | 2628df0c8f20f687559d1bd6de65d3152aad00ae /django/db/models/sql | |
| parent | 6fcbbe0b855d8701a4da1b65772ccf326f996b9e (diff) | |
Fixed #36674 -- Fixed memory leak in select_related().
Diffstat (limited to 'django/db/models/sql')
| -rw-r--r-- | django/db/models/sql/compiler.py | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py index 0e483dc4f6..14603d5773 100644 --- a/django/db/models/sql/compiler.py +++ b/django/db/models/sql/compiler.py @@ -228,6 +228,13 @@ class SQLCompiler: ] return expressions + @classmethod + def get_select_from_parent(cls, klass_info): + for ki in klass_info["related_klass_infos"]: + if ki["from_parent"]: + ki["select_fields"] = klass_info["select_fields"] + ki["select_fields"] + cls.get_select_from_parent(ki) + def get_select(self, with_col_aliases=False): """ Return three values: @@ -300,15 +307,7 @@ class SQLCompiler: related_klass_infos = self.get_related_selections(select, select_mask) klass_info["related_klass_infos"] = related_klass_infos - def get_select_from_parent(klass_info): - for ki in klass_info["related_klass_infos"]: - if ki["from_parent"]: - ki["select_fields"] = ( - klass_info["select_fields"] + ki["select_fields"] - ) - get_select_from_parent(ki) - - get_select_from_parent(klass_info) + self.get_select_from_parent(klass_info) ret = [] col_idx = 1 |
