Commit 2693aa89 authored by Aymeric Augustin's avatar Aymeric Augustin
Browse files

Simplified time zone support in the Oracle backend. Avoided outputtypehandler...

Simplified time zone support in the Oracle backend. Avoided outputtypehandler which doesn't exist in cx_Oracle < 4.4.1.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@17171 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 5f9dbef4
Loading
Loading
Loading
Loading
+6 −18
Original line number Diff line number Diff line
@@ -485,24 +485,6 @@ class DatabaseWrapper(BaseDatabaseWrapper):
                           " NLS_TERRITORY = 'AMERICA'"
                           + (" TIME_ZONE = 'UTC'" if settings.USE_TZ else ''))

            def datetime_converter(dt):
                # Confirm that dt is naive before overwriting its tzinfo.
                if dt is not None and is_naive(dt):
                    dt = dt.replace(tzinfo=utc)
                return dt

            def output_type_handler(cursor, name, default_type,
                                    size, precision, scale):
                # datetimes are returned as TIMESTAMP, except the results
                # of "dates" queries, which are returned as DATETIME.
                if settings.USE_TZ and default_type in (Database.TIMESTAMP,
                                                        Database.DATETIME):
                    return cursor.var(default_type,
                                      arraysize=cursor.arraysize,
                                      outconverter=datetime_converter)

            self.connection.outputtypehandler = output_type_handler

            if 'operators' not in self.__dict__:
                # Ticket #14149: Check whether our LIKE implementation will
                # work for this connection or we need to fall back on LIKEC.
@@ -794,6 +776,12 @@ def _rowfactory(row, cursor):
                value = decimal.Decimal(value)
            else:
                value = int(value)
        # datetimes are returned as TIMESTAMP, except the results
        # of "dates" queries, which are returned as DATETIME.
        elif desc[1] in (Database.TIMESTAMP, Database.DATETIME):
            # Confirm that dt is naive before overwriting its tzinfo.
            if settings.USE_TZ and value is not None and is_naive(value):
                value = value.replace(tzinfo=utc)
        elif desc[1] in (Database.STRING, Database.FIXED_CHAR,
                         Database.LONG_STRING):
            value = to_unicode(value)