From 398415fc231b51125ecc6f05afaf7e47da12390e Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Fri, 30 Jul 2010 02:43:01 +0000 Subject: [PATCH] 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. git-svn-id: http://code.djangoproject.com/svn/django/trunk@13450 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/backends/postgresql/operations.py | 9 +++++---- tests/regressiontests/backends/models.py | 2 ++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/django/db/backends/postgresql/operations.py b/django/db/backends/postgresql/operations.py index b6164dfea4..e8ce3f242b 100644 --- a/django/db/backends/postgresql/operations.py +++ b/django/db/backends/postgresql/operations.py @@ -56,7 +56,8 @@ class DatabaseOperations(BaseDatabaseOperations): 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 @@ class DatabaseOperations(BaseDatabaseOperations): 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 @@ class DatabaseOperations(BaseDatabaseOperations): 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 @@ class DatabaseOperations(BaseDatabaseOperations): 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')), diff --git a/tests/regressiontests/backends/models.py b/tests/regressiontests/backends/models.py index d6ca81e113..69575cb429 100644 --- a/tests/regressiontests/backends/models.py +++ b/tests/regressiontests/backends/models.py @@ -51,6 +51,8 @@ class Post(models.Model): text = models.TextField() tags = generic.GenericRelation('Tag') + class Meta: + db_table = 'CaseSensitive_Post' qn = connection.ops.quote_name