From 5935a9aeade517aebdceea989467d2b46c44d96f Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Wed, 6 Mar 2019 02:05:32 -0500 Subject: [PATCH] Removed obsolete Lookup hook to prepare rhs expressions. After 3a505c70e7b228bf1212c067a8f38271ca86ce09, all _prepare() methods return self. --- django/contrib/postgres/fields/array.py | 3 +-- django/db/models/expressions.py | 10 ---------- django/db/models/lookups.py | 10 ++++------ django/db/models/sql/query.py | 3 --- 4 files changed, 5 insertions(+), 21 deletions(-) diff --git a/django/contrib/postgres/fields/array.py b/django/contrib/postgres/fields/array.py index e00e7ac8036..a344cccbccf 100644 --- a/django/contrib/postgres/fields/array.py +++ b/django/contrib/postgres/fields/array.py @@ -240,8 +240,7 @@ class ArrayLenTransform(Transform): class ArrayInLookup(In): def get_prep_lookup(self): values = super().get_prep_lookup() - if hasattr(self.rhs, '_prepare'): - # Subqueries don't need further preparation. + if hasattr(values, 'resolve_expression'): return values # In.process_rhs() expects values to be hashable, so convert lists # to tuples. diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py index 5d630a63b33..37818850be1 100644 --- a/django/db/models/expressions.py +++ b/django/db/models/expressions.py @@ -245,10 +245,6 @@ class BaseExpression: ]) return c - def _prepare(self, field): - """Hook used by Lookup.get_prep_lookup() to do custom preparation.""" - return self - @property def field(self): return self.output_field @@ -537,9 +533,6 @@ class ResolvedOuterRef(F): 'only be used in a subquery.' ) - def _prepare(self, output_field=None): - return self - def relabeled_clone(self, relabels): return self @@ -551,9 +544,6 @@ class OuterRef(F): return self.name return ResolvedOuterRef(self.name) - def _prepare(self, output_field=None): - return self - class Func(SQLiteNumericMixin, Expression): """An SQL function call.""" diff --git a/django/db/models/lookups.py b/django/db/models/lookups.py index 910291094e4..70cd525f304 100644 --- a/django/db/models/lookups.py +++ b/django/db/models/lookups.py @@ -64,8 +64,8 @@ class Lookup: self.lhs, self.rhs = new_exprs def get_prep_lookup(self): - if hasattr(self.rhs, '_prepare'): - return self.rhs._prepare(self.lhs.output_field) + if hasattr(self.rhs, 'resolve_expression'): + return self.rhs if self.prepare_rhs and hasattr(self.lhs.output_field, 'get_prep_value'): return self.lhs.output_field.get_prep_value(self.rhs) return self.rhs @@ -195,11 +195,9 @@ class FieldGetDbPrepValueIterableMixin(FieldGetDbPrepValueMixin): get_db_prep_lookup_value_is_iterable = True def get_prep_lookup(self): + if hasattr(self.rhs, 'resolve_expression'): + return self.rhs prepared_values = [] - if hasattr(self.rhs, '_prepare'): - # A subquery is like an iterable but its items shouldn't be - # prepared independently. - return self.rhs._prepare(self.lhs.output_field) for rhs_value in self.rhs: if hasattr(rhs_value, 'resolve_expression'): # An expression will be handled by the database but can coexist diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index 3aa3c0b512b..eac61106c6e 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -271,9 +271,6 @@ class Query(BaseExpression): memo[id(self)] = result return result - def _prepare(self, field): - return self - def get_compiler(self, using=None, connection=None): if using is None and connection is None: raise ValueError("Need either using or connection")