From 5fe45cb0f851ea083c1e25664ded93432a62ab05 Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Fri, 9 Dec 2005 03:08:51 +0000 Subject: [PATCH] Fixed #967 -- 'tables' parameter in DB API is now only quoted if needed. Thanks, Russell Keith-Magee git-svn-id: http://code.djangoproject.com/svn/django/trunk@1581 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- AUTHORS | 1 + django/core/meta/__init__.py | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/AUTHORS b/AUTHORS index 052feaccf6..42f73a2d12 100644 --- a/AUTHORS +++ b/AUTHORS @@ -56,6 +56,7 @@ answer newbie questions, and generally made Django that much better: Robert Rock Howard Jason Huggins Michael Josephson + Russell Keith-Magee Garth Kidd Sune Kirkeby lakin.wecker@gmail.com diff --git a/django/core/meta/__init__.py b/django/core/meta/__init__.py index df95af37c2..021a142c22 100644 --- a/django/core/meta/__init__.py +++ b/django/core/meta/__init__.py @@ -1584,9 +1584,16 @@ def _parse_lookup(kwarg_items, opts, table_count=0): return tables, join_where, where, params, table_count def function_get_sql_clause(opts, **kwargs): + def quote_only_if_word(word): + if ' ' in word: + return word + else: + return db.db.quote_name(word) + + # Construct the fundamental parts of the query: SELECT X FROM Y WHERE Z. select = ["%s.%s" % (db.db.quote_name(opts.db_table), db.db.quote_name(f.column)) for f in opts.fields] tables = [opts.db_table] + (kwargs.get('tables') and kwargs['tables'][:] or []) - tables = [db.db.quote_name(t) for t in tables] + tables = [quote_only_if_word(t) for t in tables] where = kwargs.get('where') and kwargs['where'][:] or [] params = kwargs.get('params') and kwargs['params'][:] or [] @@ -1604,11 +1611,6 @@ def function_get_sql_clause(opts, **kwargs): _fill_table_cache(opts, select, tables, where, opts.db_table, [opts.db_table]) # Add any additional SELECTs passed in via kwargs. - def quote_only_if_word(word): - if word.find(' ')>=0: - return word - else: - return db.db.quote_name(word) if kwargs.get('select'): select.extend(['(%s) AS %s' % (quote_only_if_word(s[1]), db.db.quote_name(s[0])) for s in kwargs['select']])