diff options
author | Tom Carrick <tom@carrick.eu> | 2020-07-18 13:17:39 +0200 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-09-21 18:24:56 +0200 |
commit | e387f191f76777015b6ea687ce83cdb05ee47cee (patch) | |
tree | 003d83b5efda40fbfcdc1aa9302faca9578b1e30 /django/db/backends/oracle/features.py | |
parent | ba6b32e5efc4c813ba4432777b3b1743d4205d14 (diff) | |
download | django-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.py | 15 |
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 |