diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2009-12-22 15:18:51 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2009-12-22 15:18:51 +0000 |
| commit | ff60c5f9de3e8690d1e86f3e9e3f7248a15397c8 (patch) | |
| tree | a4cb0ebdd55fcaf8c8855231b6ad3e1a7bf45bee /django/db/models/sql/expressions.py | |
| parent | 7ef212af149540aa2da577a960d0d87029fd1514 (diff) | |
Fixed #1142 -- Added multiple database support.
This monster of a patch is the result of Alex Gaynor's 2009 Google Summer of Code project.
Congratulations to Alex for a job well done.
Big thanks also go to:
* Justin Bronn for keeping GIS in line with the changes,
* Karen Tracey and Jani Tiainen for their help testing Oracle support
* Brett Hoerner, Jon Loyens, and Craig Kimmerer for their feedback.
* Malcolm Treddinick for his guidance during the GSoC submission process.
* Simon Willison for driving the original design process
* Cal Henderson for complaining about ponies he wanted.
... and everyone else too numerous to mention that helped to bring this feature into fruition.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@11952 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/db/models/sql/expressions.py')
| -rw-r--r-- | django/db/models/sql/expressions.py | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/django/db/models/sql/expressions.py b/django/db/models/sql/expressions.py index 0914c2b3c1..9bbc16ec8a 100644 --- a/django/db/models/sql/expressions.py +++ b/django/db/models/sql/expressions.py @@ -1,5 +1,4 @@ from django.core.exceptions import FieldError -from django.db import connection from django.db.models.fields import FieldDoesNotExist from django.db.models.sql.constants import LOOKUP_SEP @@ -12,8 +11,11 @@ class SQLEvaluator(object): self.contains_aggregate = False self.expression.prepare(self, query, allow_joins) - def as_sql(self, qn=None): - return self.expression.evaluate(self, qn) + def prepare(self): + return self + + def as_sql(self, qn, connection): + return self.expression.evaluate(self, qn, connection) def relabel_aliases(self, change_map): for node, col in self.cols.items(): @@ -54,15 +56,12 @@ class SQLEvaluator(object): # Vistor methods for final expression evaluation # ################################################## - def evaluate_node(self, node, qn): - if not qn: - qn = connection.ops.quote_name - + def evaluate_node(self, node, qn, connection): expressions = [] expression_params = [] for child in node.children: if hasattr(child, 'evaluate'): - sql, params = child.evaluate(self, qn) + sql, params = child.evaluate(self, qn, connection) else: sql, params = '%s', (child,) @@ -77,12 +76,9 @@ class SQLEvaluator(object): return connection.ops.combine_expression(node.connector, expressions), expression_params - def evaluate_leaf(self, node, qn): - if not qn: - qn = connection.ops.quote_name - + def evaluate_leaf(self, node, qn, connection): col = self.cols[node] if hasattr(col, 'as_sql'): - return col.as_sql(qn), () + return col.as_sql(qn, connection), () else: return '%s.%s' % (qn(col[0]), qn(col[1])), () |
