Author: russellm
Date: 2010-07-29 21:43:01 -0500 (Thu, 29 Jul 2010)
New Revision: 13450

Modified:
   django/trunk/django/db/backends/postgresql/operations.py
   django/trunk/tests/regressiontests/backends/models.py
Log:
Fixed #13821 -- Added a double-quoting to the PostgreSQL sequence reset code. 
Thanks to PaulM for the report, and to PaulM and Simon Meers for their work on 
the patch.

Modified: django/trunk/django/db/backends/postgresql/operations.py
===================================================================
--- django/trunk/django/db/backends/postgresql/operations.py    2010-07-30 
02:42:36 UTC (rev 13449)
+++ django/trunk/django/db/backends/postgresql/operations.py    2010-07-30 
02:43:01 UTC (rev 13450)
@@ -56,7 +56,8 @@
     def last_insert_id(self, cursor, table_name, pk_name):
         # Use pg_get_serial_sequence to get the underlying sequence name
         # from the table name and column name (available since PostgreSQL 8)
-        cursor.execute("SELECT CURRVAL(pg_get_serial_sequence('%s','%s'))" % 
(table_name, pk_name))
+        cursor.execute("SELECT CURRVAL(pg_get_serial_sequence('%s','%s'))" % (
+            self.quote_name(table_name), pk_name))
         return cursor.fetchone()[0]
 
     def no_limit_value(self):
@@ -98,7 +99,7 @@
                     column_name = 'id'
                 sql.append("%s setval(pg_get_serial_sequence('%s','%s'), 1, 
false);" % \
                     (style.SQL_KEYWORD('SELECT'),
-                    style.SQL_TABLE(table_name),
+                    style.SQL_TABLE(self.quote_name(table_name)),
                     style.SQL_FIELD(column_name))
                 )
             return sql
@@ -120,7 +121,7 @@
                 if isinstance(f, models.AutoField):
                     output.append("%s 
setval(pg_get_serial_sequence('%s','%s'), coalesce(max(%s), 1), max(%s) %s 
null) %s %s;" % \
                         (style.SQL_KEYWORD('SELECT'),
-                        style.SQL_TABLE(model._meta.db_table),
+                        style.SQL_TABLE(qn(model._meta.db_table)),
                         style.SQL_FIELD(f.column),
                         style.SQL_FIELD(qn(f.column)),
                         style.SQL_FIELD(qn(f.column)),
@@ -132,7 +133,7 @@
                 if not f.rel.through:
                     output.append("%s 
setval(pg_get_serial_sequence('%s','%s'), coalesce(max(%s), 1), max(%s) %s 
null) %s %s;" % \
                         (style.SQL_KEYWORD('SELECT'),
-                        style.SQL_TABLE(f.m2m_db_table()),
+                        style.SQL_TABLE(qn(f.m2m_db_table())),
                         style.SQL_FIELD('id'),
                         style.SQL_FIELD(qn('id')),
                         style.SQL_FIELD(qn('id')),

Modified: django/trunk/tests/regressiontests/backends/models.py
===================================================================
--- django/trunk/tests/regressiontests/backends/models.py       2010-07-30 
02:42:36 UTC (rev 13449)
+++ django/trunk/tests/regressiontests/backends/models.py       2010-07-30 
02:43:01 UTC (rev 13450)
@@ -51,6 +51,8 @@
     text = models.TextField()
     tags = generic.GenericRelation('Tag')
 
+    class Meta:
+        db_table = 'CaseSensitive_Post'
 
 qn = connection.ops.quote_name
 

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to