summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Grinberg <kevin@activefrequency.com>2017-08-12 14:42:35 -0400
committerTim Graham <timograham@gmail.com>2017-08-22 15:51:08 -0400
commitc6a3546093bebae8225a2c5b7e0836a2b0617ee5 (patch)
tree0981e640ad56b7695f7f83201bc27568415cad34
parent4dfd6b88d520b43b6363946e5ee58ba14cd1efe6 (diff)
Fixed #28451 -- Restored pre-Django 1.11 Oracle sequence/trigger naming.
Regression in 69b7d4b116e3b70b250c77829e11038d5d55c2a8.
-rw-r--r--AUTHORS1
-rw-r--r--django/db/backends/oracle/operations.py3
-rw-r--r--docs/releases/1.11.5.txt8
-rw-r--r--tests/backends/oracle/test_operations.py11
4 files changed, 21 insertions, 2 deletions
diff --git a/AUTHORS b/AUTHORS
index c500d08686..e72be3a1da 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -441,6 +441,7 @@ answer newbie questions, and generally made Django that much better:
Keith Bussell <kbussell@gmail.com>
Kenneth Love <kennethlove@gmail.com>
Kent Hauser <kent@khauser.net>
+ Kevin Grinberg <kevin@kevingrinberg.com>
Kevin Kubasik <kevin@kubasik.net>
Kevin McConnell <kevin.mcconnell@gmail.com>
Kieran Holland <http://www.kieranholland.com>
diff --git a/django/db/backends/oracle/operations.py b/django/db/backends/oracle/operations.py
index fb1b1a21a0..bf54755c5e 100644
--- a/django/db/backends/oracle/operations.py
+++ b/django/db/backends/oracle/operations.py
@@ -518,8 +518,7 @@ END;
AutoFields that aren't Oracle identity columns.
"""
name_length = self.max_name_length() - 3
- sequence_name = '%s_SQ' % strip_quotes(table)
- return truncate_name(sequence_name, name_length).upper()
+ return '%s_SQ' % truncate_name(strip_quotes(table), name_length).upper()
def _get_sequence_name(self, cursor, table, pk_name):
cursor.execute("""
diff --git a/docs/releases/1.11.5.txt b/docs/releases/1.11.5.txt
index e7c6c91a5d..5cd38e3b98 100644
--- a/docs/releases/1.11.5.txt
+++ b/docs/releases/1.11.5.txt
@@ -15,3 +15,11 @@ Bugfixes
* Fixed test database creation with ``cx_Oracle`` 6 (:ticket:`28498`).
* Fixed select widget rendering when option values are tuples (:ticket:`28502`).
+
+* Django 1.11 inadvertently changed the sequence and trigger naming scheme on
+ Oracle. This causes errors on INSERTs for some tables if
+ ``'use_returning_into': False`` is in the ``OPTIONS`` part of ``DATABASES``.
+ The pre-11.1 naming scheme is now restored. Unfortunately, it necessarily
+ requires an update to Oracle tables created with Django 1.11.[1-4]. Use the
+ upgrade script in :ticket:`28451` comment 8 to update sequence and trigger
+ names to use the pre-1.11 naming scheme
diff --git a/tests/backends/oracle/test_operations.py b/tests/backends/oracle/test_operations.py
new file mode 100644
index 0000000000..d73df9a05c
--- /dev/null
+++ b/tests/backends/oracle/test_operations.py
@@ -0,0 +1,11 @@
+import unittest
+
+from django.db import connection
+
+
+@unittest.skipUnless(connection.vendor == 'oracle', 'Oracle tests')
+class OperationsTests(unittest.TestCase):
+
+ def test_sequence_name_truncation(self):
+ seq_name = connection.ops._get_no_autofield_sequence_name('schema_authorwithevenlongee869')
+ self.assertEqual(seq_name, 'SCHEMA_AUTHORWITHEVENLOB0B8_SQ')