diff options
| author | Josh Smeaton <josh.smeaton@gmail.com> | 2014-12-29 09:15:00 +1100 |
|---|---|---|
| committer | Josh Smeaton <josh.smeaton@gmail.com> | 2014-12-29 19:44:13 +1100 |
| commit | 1cdfbde4db1ac6bbddb2cf8dd5192831bc0f9ce3 (patch) | |
| tree | 3d3b46ddd2fc69c59b2e7beef557ff4d0e065a5a /django | |
| parent | 932d449f001a94aa5065cda652a442e4b1dd5352 (diff) | |
Fixed #23753 -- Oracle failure with Coalesce
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/functions.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/django/db/models/functions.py b/django/db/models/functions.py index f2252000cd..f16cf10b15 100644 --- a/django/db/models/functions.py +++ b/django/db/models/functions.py @@ -16,6 +16,18 @@ class Coalesce(Func): raise ValueError('Coalesce must take at least two expressions') super(Coalesce, self).__init__(*expressions, **extra) + def as_oracle(self, compiler, connection): + # we can't mix TextField (NCLOB) and CharField (NVARCHAR), so convert + # all fields to NCLOB when we expect NCLOB + if self.output_field.get_internal_type() == 'TextField': + class ToNCLOB(Func): + function = 'TO_NCLOB' + + expressions = [ + ToNCLOB(expression) for expression in self.get_source_expressions()] + self.set_source_expressions(expressions) + return super(Coalesce, self).as_sql(compiler, connection) + class ConcatPair(Func): """ |
