Code

Ticket #13832: 13832.diff

File 13832.diff, 3.5 KB (added by DrMeers, 4 years ago)
Line 
1Index: django/db/backends/postgresql/operations.py
2===================================================================
3--- django/db/backends/postgresql/operations.py (revision 13402)
4+++ django/db/backends/postgresql/operations.py (working copy)
5@@ -56,7 +56,8 @@
6     def last_insert_id(self, cursor, table_name, pk_name):
7         # Use pg_get_serial_sequence to get the underlying sequence name
8         # from the table name and column name (available since PostgreSQL 8)
9-        cursor.execute("SELECT CURRVAL(pg_get_serial_sequence('%s','%s'))" % (table_name, pk_name))
10+        cursor.execute("SELECT CURRVAL(pg_get_serial_sequence('%s','%s'))" % (
11+                self.quote_name(table_name), pk_name))
12         return cursor.fetchone()[0]
13 
14     def no_limit_value(self):
15@@ -98,7 +99,7 @@
16                     column_name = 'id'
17                 sql.append("%s setval(pg_get_serial_sequence('%s','%s'), 1, false);" % \
18                     (style.SQL_KEYWORD('SELECT'),
19-                    style.SQL_TABLE(table_name),
20+                    style.SQL_TABLE(self.quote_name(table_name)),
21                     style.SQL_FIELD(column_name))
22                 )
23             return sql
24@@ -120,7 +121,7 @@
25                 if isinstance(f, models.AutoField):
26                     output.append("%s setval(pg_get_serial_sequence('%s','%s'), coalesce(max(%s), 1), max(%s) %s null) %s %s;" % \
27                         (style.SQL_KEYWORD('SELECT'),
28-                        style.SQL_TABLE(model._meta.db_table),
29+                        style.SQL_TABLE(self.quote_name(model._meta.db_table)),
30                         style.SQL_FIELD(f.column),
31                         style.SQL_FIELD(qn(f.column)),
32                         style.SQL_FIELD(qn(f.column)),
33@@ -132,7 +133,7 @@
34                 if not f.rel.through:
35                     output.append("%s setval(pg_get_serial_sequence('%s','%s'), coalesce(max(%s), 1), max(%s) %s null) %s %s;" % \
36                         (style.SQL_KEYWORD('SELECT'),
37-                        style.SQL_TABLE(model._meta.db_table),
38+                        style.SQL_TABLE(self.quote_name(model._meta.db_table)),
39                         style.SQL_FIELD('id'),
40                         style.SQL_FIELD(qn('id')),
41                         style.SQL_FIELD(qn('id')),
42Index: tests/regressiontests/Bug13832/__init__.py
43===================================================================
44--- tests/regressiontests/Bug13832/__init__.py  (revision 0)
45+++ tests/regressiontests/Bug13832/__init__.py  (revision 0)
46@@ -0,0 +1 @@
47+
48Index: tests/regressiontests/Bug13832/tests.py
49===================================================================
50--- tests/regressiontests/Bug13832/tests.py     (revision 0)
51+++ tests/regressiontests/Bug13832/tests.py     (revision 0)
52@@ -0,0 +1,10 @@
53+from django.test import TestCase
54+from regressiontests.Bug13832 import models
55+
56+class TestUppercaseAppNames(TestCase):
57+    """ Ensure app labels with uppercase characters don't cause DatabaseErrors.
58+   
59+    (As they did after changeset #13363, when using PostgreSQL).
60+    """
61+    def test_uppercase(self):
62+        models.AppNameTestClass.objects.create()
63Index: tests/regressiontests/Bug13832/models.py
64===================================================================
65--- tests/regressiontests/Bug13832/models.py    (revision 0)
66+++ tests/regressiontests/Bug13832/models.py    (revision 0)
67@@ -0,0 +1,5 @@
68+from django.db import models
69+
70+class AppNameTestClass(models.Model):
71+    token_field = models.CharField(max_length=255)
72