summaryrefslogtreecommitdiff
path: root/django/db/backends/oracle/features.py
diff options
context:
space:
mode:
authorTom Carrick <tom@carrick.eu>2020-07-18 13:17:39 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-09-21 18:24:56 +0200
commite387f191f76777015b6ea687ce83cdb05ee47cee (patch)
tree003d83b5efda40fbfcdc1aa9302faca9578b1e30 /django/db/backends/oracle/features.py
parentba6b32e5efc4c813ba4432777b3b1743d4205d14 (diff)
downloaddjango-e387f191f76777015b6ea687ce83cdb05ee47cee.tar.gz
Fixed #31777 -- Added support for database collations to Char/TextFields.
Thanks Simon Charette and Mariusz Felisiak for reviews.
Diffstat (limited to 'django/db/backends/oracle/features.py')
-rw-r--r--django/db/backends/oracle/features.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/django/db/backends/oracle/features.py b/django/db/backends/oracle/features.py
index 88739f5221..b0eebe5008 100644
--- a/django/db/backends/oracle/features.py
+++ b/django/db/backends/oracle/features.py
@@ -1,4 +1,4 @@
-from django.db import InterfaceError
+from django.db import DatabaseError, InterfaceError
from django.db.backends.base.features import BaseDatabaseFeatures
from django.utils.functional import cached_property
@@ -61,9 +61,11 @@ class DatabaseFeatures(BaseDatabaseFeatures):
supports_boolean_expr_in_select_clause = False
supports_primitives_in_json_field = False
supports_json_field_contains = False
+ supports_collation_on_textfield = False
test_collations = {
'ci': 'BINARY_CI',
'cs': 'BINARY',
+ 'non_default': 'SWEDISH_CI',
'swedish_ci': 'SWEDISH_CI',
}
@@ -78,3 +80,14 @@ class DatabaseFeatures(BaseDatabaseFeatures):
'SmallIntegerField': 'IntegerField',
'TimeField': 'DateTimeField',
}
+
+ @cached_property
+ def supports_collation_on_charfield(self):
+ with self.connection.cursor() as cursor:
+ try:
+ cursor.execute("SELECT CAST('a' AS VARCHAR2(4001)) FROM dual")
+ except DatabaseError as e:
+ if e.args[0].code == 910:
+ return False
+ raise
+ return True