From 1c6c5532d8bec105d9aaa7843a176b4e1ef0340a Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 24 Jan 2023 15:08:30 -0500 Subject: [PATCH] reflect Oracle ROWID Added :class:`_oracle.ROWID` to reflected types as this type may be used in a "CREATE TABLE" statement. Fixes: #5047 Change-Id: I818dcf68ed81419d0fd5df5e2d51d6fa0f1be7fc --- doc/build/changelog/unreleased_14/5047.rst | 6 ++++++ lib/sqlalchemy/dialects/oracle/base.py | 1 + test/dialect/oracle/test_reflection.py | 13 +++++++++++++ 3 files changed, 20 insertions(+) create mode 100644 doc/build/changelog/unreleased_14/5047.rst diff --git a/doc/build/changelog/unreleased_14/5047.rst b/doc/build/changelog/unreleased_14/5047.rst new file mode 100644 index 0000000000..4d08d771f7 --- /dev/null +++ b/doc/build/changelog/unreleased_14/5047.rst @@ -0,0 +1,6 @@ +.. change:: + :tags: bug, oracle + :tickets: 5047 + + Added :class:`_oracle.ROWID` to reflected types as this type may be used in + a "CREATE TABLE" statement. diff --git a/lib/sqlalchemy/dialects/oracle/base.py b/lib/sqlalchemy/dialects/oracle/base.py index 65377be286..aa289111e3 100644 --- a/lib/sqlalchemy/dialects/oracle/base.py +++ b/lib/sqlalchemy/dialects/oracle/base.py @@ -644,6 +644,7 @@ ischema_names = { "LONG": LONG, "BINARY_DOUBLE": BINARY_DOUBLE, "BINARY_FLOAT": BINARY_FLOAT, + "ROWID": ROWID, } diff --git a/test/dialect/oracle/test_reflection.py b/test/dialect/oracle/test_reflection.py index 0ac991d2a2..ae50264f7b 100644 --- a/test/dialect/oracle/test_reflection.py +++ b/test/dialect/oracle/test_reflection.py @@ -26,7 +26,9 @@ from sqlalchemy.dialects.oracle.base import BINARY_DOUBLE from sqlalchemy.dialects.oracle.base import BINARY_FLOAT from sqlalchemy.dialects.oracle.base import DOUBLE_PRECISION from sqlalchemy.dialects.oracle.base import NUMBER +from sqlalchemy.dialects.oracle.base import RAW from sqlalchemy.dialects.oracle.base import REAL +from sqlalchemy.dialects.oracle.base import ROWID from sqlalchemy.dialects.oracle.types import NVARCHAR2 from sqlalchemy.dialects.oracle.types import VARCHAR2 from sqlalchemy.engine import ObjectKind @@ -1232,6 +1234,17 @@ class TypeReflectionTest(fixtures.TestBase): ] self._run_test(metadata, connection, specs, ["length"]) + @testing.combinations(ROWID(), RAW(1), argnames="type_") + def test_misc_types(self, metadata, connection, type_): + t = Table("t1", metadata, Column("x", type_)) + + t.create(connection) + + eq_( + inspect(connection).get_columns("t1")[0]["type"]._type_affinity, + type_._type_affinity, + ) + class IdentityReflectionTest(fixtures.TablesTest): __only_on__ = "oracle" -- 2.47.2