]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
reflect Oracle ROWID
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 24 Jan 2023 20:08:30 +0000 (15:08 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 24 Jan 2023 20:08:30 +0000 (15:08 -0500)
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 [new file with mode: 0644]
lib/sqlalchemy/dialects/oracle/base.py
test/dialect/oracle/test_reflection.py

diff --git a/doc/build/changelog/unreleased_14/5047.rst b/doc/build/changelog/unreleased_14/5047.rst
new file mode 100644 (file)
index 0000000..4d08d77
--- /dev/null
@@ -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.
index 65377be286d3f850d2b3aa99aa86393faf8ebbf7..aa289111e35ce6c0a92bc751e589738eec6fa4e4 100644 (file)
@@ -644,6 +644,7 @@ ischema_names = {
     "LONG": LONG,
     "BINARY_DOUBLE": BINARY_DOUBLE,
     "BINARY_FLOAT": BINARY_FLOAT,
+    "ROWID": ROWID,
 }
 
 
index 0ac991d2a288066db7b297e6e641f274d20e3ce7..ae50264f7beae9c3a3542efa2388ee9789e8f653 100644 (file)
@@ -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"