From: Mike Bayer Date: Tue, 24 Jan 2023 20:08:30 +0000 (-0500) Subject: reflect Oracle ROWID X-Git-Tag: rel_2_0_0~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1c6c5532d8bec105d9aaa7843a176b4e1ef0340a;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git 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 --- 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"