Commit dfe6ea3b authored by Shai Berger's avatar Shai Berger
Browse files

Fixed #20012 -- test_year_lookup_edge_case fails under Oracle

Used formatted date instead of datetime object for the end of the
year range, as the datetime object loses fractions-of-seconds when
inserted into the db.
parent 8fd40b9a
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -436,6 +436,16 @@ WHEN (new.%(col_name)s IS NULL)
        second = '%s-12-31'
        return [first % value, second % value]

    def year_lookup_bounds_for_datetime_field(self, value):
        # The default implementation uses datetime objects for the bounds.
        # This must be overridden here, to use a formatted date (string) as
        # 'second' instead -- cx_Oracle chops the fraction-of-second part
        # off of datetime objects, leaving almost an entire second out of
        # the year under the default implementation.
        first = '%s-01-01'
        second = '%s-12-31 23:59:59.999999'
        return [first % value, second % value]

    def combine_expression(self, connector, sub_expressions):
        "Oracle requires special cases for %% and & operators in query expressions"
        if connector == '%%':