diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2018-01-12 11:31:02 -0500 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@ci.zzzcomputing.com> | 2018-01-12 11:31:02 -0500 |
| commit | 4aaac3a91c13349de82e2452bb4b2301a7805b89 (patch) | |
| tree | 41404af9215bf30e52a70c2ca53a61b08136d202 | |
| parent | cdd090b11e14b7e1b33a3f836809093ffa99209b (diff) | |
| parent | 80a2241ec03efdd8ea34101ee981a3b9e9ae58c1 (diff) | |
| download | sqlalchemy-4aaac3a91c13349de82e2452bb4b2301a7805b89.tar.gz | |
Merge "Re-enable setinputsizes for Oracle TIMESTAMP"
| -rw-r--r-- | doc/build/changelog/unreleased_12/4157.rst | 9 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/oracle/cx_oracle.py | 2 | ||||
| -rw-r--r-- | lib/sqlalchemy/testing/requirements.py | 7 | ||||
| -rw-r--r-- | lib/sqlalchemy/testing/suite/test_types.py | 11 | ||||
| -rw-r--r-- | test/requirements.py | 10 |
5 files changed, 35 insertions, 4 deletions
diff --git a/doc/build/changelog/unreleased_12/4157.rst b/doc/build/changelog/unreleased_12/4157.rst new file mode 100644 index 000000000..f687652fd --- /dev/null +++ b/doc/build/changelog/unreleased_12/4157.rst @@ -0,0 +1,9 @@ +.. change:: + :tags: bug, oracle + :tickets: 4157 + + Fixed regression where the removal of most setinputsizes + rules from cx_Oracle dialect impacted the TIMESTAMP + datatype's ability to retrieve fractional seconds. + + diff --git a/lib/sqlalchemy/dialects/oracle/cx_oracle.py b/lib/sqlalchemy/dialects/oracle/cx_oracle.py index 0288fe898..79fd118af 100644 --- a/lib/sqlalchemy/dialects/oracle/cx_oracle.py +++ b/lib/sqlalchemy/dialects/oracle/cx_oracle.py @@ -623,7 +623,7 @@ class OracleDialect_cx_oracle(OracleDialect): self._include_setinputsizes = { cx_Oracle.NCLOB, cx_Oracle.CLOB, cx_Oracle.LOB, - cx_Oracle.BLOB, cx_Oracle.FIXED_CHAR, + cx_Oracle.BLOB, cx_Oracle.FIXED_CHAR, cx_Oracle.TIMESTAMP } self._is_cx_oracle_6 = self.cx_oracle_ver >= (6, ) diff --git a/lib/sqlalchemy/testing/requirements.py b/lib/sqlalchemy/testing/requirements.py index b89d149d6..4d9726e2b 100644 --- a/lib/sqlalchemy/testing/requirements.py +++ b/lib/sqlalchemy/testing/requirements.py @@ -499,6 +499,13 @@ class SuiteRequirements(Requirements): return exclusions.open() @property + def timestamp_microseconds(self): + """target dialect supports representation of Python + datetime.datetime() with microsecond objects but only + if TIMESTAMP is used.""" + return exclusions.closed() + + @property def datetime_historic(self): """target dialect supports representation of Python datetime.datetime() objects with historic (pre 1970) values.""" diff --git a/lib/sqlalchemy/testing/suite/test_types.py b/lib/sqlalchemy/testing/suite/test_types.py index 83aac2850..96efbebba 100644 --- a/lib/sqlalchemy/testing/suite/test_types.py +++ b/lib/sqlalchemy/testing/suite/test_types.py @@ -3,7 +3,7 @@ from .. import fixtures, config from ..assertions import eq_ from ..config import requirements -from sqlalchemy import Integer, Unicode, UnicodeText, select +from sqlalchemy import Integer, Unicode, UnicodeText, select, TIMESTAMP from sqlalchemy import Date, DateTime, Time, MetaData, String, \ Text, Numeric, Float, literal, Boolean, cast, null, JSON, and_, type_coerce from ..schema import Table, Column @@ -281,6 +281,12 @@ class DateTimeMicrosecondsTest(_DateFixture, fixtures.TablesTest): datatype = DateTime data = datetime.datetime(2012, 10, 15, 12, 57, 18, 396) +class TimestampMicrosecondsTest(_DateFixture, fixtures.TablesTest): + __requires__ = 'timestamp_microseconds', + __backend__ = True + datatype = TIMESTAMP + data = datetime.datetime(2012, 10, 15, 12, 57, 18, 396) + class TimeTest(_DateFixture, fixtures.TablesTest): __requires__ = 'time', @@ -915,5 +921,6 @@ __all__ = ('UnicodeVarcharTest', 'UnicodeTextTest', 'JSONTest', 'DateTest', 'DateTimeTest', 'TextTest', 'NumericTest', 'IntegerTest', 'DateTimeHistoricTest', 'DateTimeCoercedToDateTimeTest', - 'TimeMicrosecondsTest', 'TimeTest', 'DateTimeMicrosecondsTest', + 'TimeMicrosecondsTest', 'TimestampMicrosecondsTest', 'TimeTest', + 'DateTimeMicrosecondsTest', 'DateHistoricTest', 'StringTest', 'BooleanTest') diff --git a/test/requirements.py b/test/requirements.py index 3cbc5aaad..8e22fd166 100644 --- a/test/requirements.py +++ b/test/requirements.py @@ -697,6 +697,14 @@ class DefaultRequirements(SuiteRequirements): 'oracle', 'sybase']) @property + def timestamp_microseconds(self): + """target dialect supports representation of Python + datetime.datetime() with microsecond objects but only + if TIMESTAMP is used.""" + + return only_on(['oracle']) + + @property def datetime_historic(self): """target dialect supports representation of Python datetime.datetime() objects with historic (pre 1900) values.""" @@ -1032,4 +1040,4 @@ class DefaultRequirements(SuiteRequirements): return only_if( lambda config: against(config, "oracle+cx_oracle") and config.db.dialect.cx_oracle_ver < (6, ) - )
\ No newline at end of file + ) |
