summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2017-01-28 08:19:47 -0500
committerGitHub <noreply@github.com>2017-01-28 08:19:47 -0500
commit0de0699d94ccd078c83eadef296a0d9ccd65a62f (patch)
tree920b38dbe28f0110743a799078e648735ff3e1cf
parenta6755b29e9335723c9347a36d4000a3157b05441 (diff)
Fixed #27788 -- Dropped support for Oracle < 12.1.
-rw-r--r--django/contrib/gis/db/backends/oracle/operations.py14
-rw-r--r--django/db/backends/base/features.py15
-rw-r--r--django/db/backends/oracle/features.py15
-rw-r--r--docs/ref/contrib/gis/db-api.txt2
-rw-r--r--docs/ref/contrib/gis/functions.txt2
-rw-r--r--docs/ref/databases.txt2
-rw-r--r--docs/releases/2.0.txt7
-rw-r--r--tests/gis_tests/geoapp/test_functions.py6
-rw-r--r--tests/schema/tests.py2
9 files changed, 23 insertions, 42 deletions
diff --git a/django/contrib/gis/db/backends/oracle/operations.py b/django/contrib/gis/db/backends/oracle/operations.py
index 6fc4fb69aa..277a6a4b56 100644
--- a/django/contrib/gis/db/backends/oracle/operations.py
+++ b/django/contrib/gis/db/backends/oracle/operations.py
@@ -17,7 +17,6 @@ from django.contrib.gis.db.models import aggregates
from django.contrib.gis.geometry.backend import Geometry
from django.contrib.gis.measure import Distance
from django.db.backends.oracle.operations import DatabaseOperations
-from django.utils.functional import cached_property
DEFAULT_TOLERANCE = '0.05'
@@ -132,15 +131,10 @@ class OracleOperations(BaseSpatialOperations, DatabaseOperations):
truncate_params = {'relate': None}
- @cached_property
- def unsupported_functions(self):
- unsupported = {
- 'AsGeoJSON', 'AsKML', 'AsSVG', 'Envelope', 'ForceRHR', 'GeoHash',
- 'MakeValid', 'MemSize', 'Scale', 'SnapToGrid', 'Translate',
- }
- if self.connection.oracle_full_version < '12.1.0.2':
- unsupported.add('BoundingCircle')
- return unsupported
+ unsupported_functions = {
+ 'AsGeoJSON', 'AsKML', 'AsSVG', 'Envelope', 'ForceRHR', 'GeoHash',
+ 'MakeValid', 'MemSize', 'Scale', 'SnapToGrid', 'Translate',
+ }
def geo_quote_name(self, name):
return super().geo_quote_name(name).upper()
diff --git a/django/db/backends/base/features.py b/django/db/backends/base/features.py
index 8f9fbdcfea..d108dc1320 100644
--- a/django/db/backends/base/features.py
+++ b/django/db/backends/base/features.py
@@ -253,18 +253,15 @@ class BaseDatabaseFeatures:
except NotImplementedError:
return False
- def introspected_boolean_field_type(self, field=None, created_separately=False):
+ def introspected_boolean_field_type(self, field=None):
"""
What is the type returned when the backend introspects a BooleanField?
- The optional arguments may be used to give further details of the field to be
- introspected; in particular, they are provided by Django's test suite:
- field -- the field definition
- created_separately -- True if the field was added via a SchemaEditor's AddField,
- False if the field was created with the model
+ The `field` argument may be used to give further details of the field
+ to be introspected.
- Note that return value from this function is compared by tests against actual
- introspection results; it should provide expectations, not run an introspection
- itself.
+ The return value from this function is compared by tests against actual
+ introspection results; it should provide expectations, not run an
+ introspection itself.
"""
if self.can_introspect_null and field and field.null:
return 'NullBooleanField'
diff --git a/django/db/backends/oracle/features.py b/django/db/backends/oracle/features.py
index 0e85f267f2..3e72a5c29d 100644
--- a/django/db/backends/oracle/features.py
+++ b/django/db/backends/oracle/features.py
@@ -35,18 +35,3 @@ class DatabaseFeatures(BaseDatabaseFeatures):
# Oracle doesn't ignore quoted identifiers case but the current backend
# does by uppercasing all identifiers.
ignores_table_name_case = True
-
- def introspected_boolean_field_type(self, field=None, created_separately=False):
- """
- Some versions of Oracle -- we've seen this on 11.2.0.1 and suspect
- it goes back -- have a weird bug where, when an integer column is
- added to an existing table with a default, its precision is later
- reported on introspection as 0, regardless of the real precision.
- For Django introspection, this means that such columns are reported
- as IntegerField even if they are really BigIntegerField or BooleanField.
-
- The bug is solved in Oracle 11.2.0.2 and up.
- """
- if self.connection.oracle_full_version < '11.2.0.2' and field and field.has_default() and created_separately:
- return 'IntegerField'
- return super().introspected_boolean_field_type(field, created_separately)
diff --git a/docs/ref/contrib/gis/db-api.txt b/docs/ref/contrib/gis/db-api.txt
index daa32d75ec..768c478835 100644
--- a/docs/ref/contrib/gis/db-api.txt
+++ b/docs/ref/contrib/gis/db-api.txt
@@ -376,7 +376,7 @@ Function PostGIS Oracle MySQL Spat
:class:`AsGML` X X X
:class:`AsKML` X X
:class:`AsSVG` X X
-:class:`BoundingCircle` X X (≥ 12.1.0.2)
+:class:`BoundingCircle` X X
:class:`Centroid` X X X X
:class:`Difference` X X X (≥ 5.6.1) X
:class:`Distance` X X X (≥ 5.6.1) X
diff --git a/docs/ref/contrib/gis/functions.txt b/docs/ref/contrib/gis/functions.txt
index f60c3f3f6e..c26e1ca9ae 100644
--- a/docs/ref/contrib/gis/functions.txt
+++ b/docs/ref/contrib/gis/functions.txt
@@ -170,7 +170,7 @@ __ http://www.w3.org/Graphics/SVG/
.. class:: BoundingCircle(expression, num_seg=48, **extra)
*Availability*: `PostGIS <http://postgis.net/docs/ST_MinimumBoundingCircle.html>`__,
-`Oracle (≥ 12.1.0.2) <https://docs.oracle.com/database/121/SPATL/GUID-82A61626-BB64-4793-B53D-A0DBEC91831A.htm#SPATL1554>`_
+`Oracle <https://docs.oracle.com/database/121/SPATL/GUID-82A61626-BB64-4793-B53D-A0DBEC91831A.htm#SPATL1554>`_
Accepts a single geographic field or expression and returns the smallest circle
polygon that can fully contain the geometry.
diff --git a/docs/ref/databases.txt b/docs/ref/databases.txt
index 0628cef2e1..26351314de 100644
--- a/docs/ref/databases.txt
+++ b/docs/ref/databases.txt
@@ -676,7 +676,7 @@ rather than a list. SQLite does not support this.
Oracle notes
============
-Django supports `Oracle Database Server`_ versions 11.2 and higher. Version
+Django supports `Oracle Database Server`_ versions 12.1 and higher. Version
5.2 or higher of the `cx_Oracle`_ Python driver is required.
.. _`Oracle Database Server`: http://www.oracle.com/
diff --git a/docs/releases/2.0.txt b/docs/releases/2.0.txt
index ca914118ca..2ef6ba9be1 100644
--- a/docs/releases/2.0.txt
+++ b/docs/releases/2.0.txt
@@ -210,6 +210,13 @@ Database backend API
* ...
+Dropped support for Oracle 11.2
+-------------------------------
+
+The end of upstream support for Oracle 11.2 is Dec. 2020. Django 1.11 will be
+supported until April 2020 which almost reaches this date. Django 2.0
+officially supports Oracle 12.1+.
+
Miscellaneous
-------------
diff --git a/tests/gis_tests/geoapp/test_functions.py b/tests/gis_tests/geoapp/test_functions.py
index 4d3913a7a3..6b2a725ff7 100644
--- a/tests/gis_tests/geoapp/test_functions.py
+++ b/tests/gis_tests/geoapp/test_functions.py
@@ -305,10 +305,8 @@ class GISFunctionsTests(TestCase):
for c in mpoly_qs:
self.assertEqual(c.mpoly.num_points, c.num_points)
- if not oracle:
- # Oracle cannot count vertices in Point geometries.
- for c in City.objects.annotate(num_points=functions.NumPoints('point')):
- self.assertEqual(1, c.num_points)
+ for c in City.objects.annotate(num_points=functions.NumPoints('point')):
+ self.assertEqual(c.num_points, 1)
@skipUnlessDBFeature("has_PointOnSurface_function")
def test_point_on_surface(self):
diff --git a/tests/schema/tests.py b/tests/schema/tests.py
index 4f62333dba..d21f608e02 100644
--- a/tests/schema/tests.py
+++ b/tests/schema/tests.py
@@ -416,7 +416,7 @@ class SchemaTests(TransactionTestCase):
field_type = columns['awesome'][0]
self.assertEqual(
field_type,
- connection.features.introspected_boolean_field_type(new_field, created_separately=True)
+ connection.features.introspected_boolean_field_type(new_field)
)
def test_add_field_default_transform(self):