From 7c2838b1dd5a34166158f5e241af72a6d3d8be85 Mon Sep 17 00:00:00 2001 From: krzysdz Date: Wed, 28 Jun 2023 13:54:52 +0200 Subject: [PATCH] Allow reflecting UUID in MariaDB Fixes: #10028 --- doc/build/changelog/unreleased_20/10028.rst | 7 +++++++ lib/sqlalchemy/dialects/mysql/base.py | 2 ++ test/dialect/mysql/test_reflection.py | 7 +++++++ 3 files changed, 16 insertions(+) create mode 100644 doc/build/changelog/unreleased_20/10028.rst diff --git a/doc/build/changelog/unreleased_20/10028.rst b/doc/build/changelog/unreleased_20/10028.rst new file mode 100644 index 0000000000..6c075abaae --- /dev/null +++ b/doc/build/changelog/unreleased_20/10028.rst @@ -0,0 +1,7 @@ +.. change:: + :tags: usecase, mariadb, reflection + :tickets: 10028 + + Allowed reflecting :class:`_types.UUID` columns from MariaDB. This allows + Alembic to properly detect the type of such columns in existing MariaDB + databases. diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index 18e64f1b48..9bfd2be25a 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -1067,6 +1067,7 @@ from ...types import BINARY from ...types import BLOB from ...types import BOOLEAN from ...types import DATE +from ...types import UUID from ...types import VARBINARY from ...util import topological @@ -1155,6 +1156,7 @@ ischema_names = { "tinyblob": TINYBLOB, "tinyint": TINYINT, "tinytext": TINYTEXT, + "uuid": UUID, "varbinary": VARBINARY, "varchar": VARCHAR, "year": YEAR, diff --git a/test/dialect/mysql/test_reflection.py b/test/dialect/mysql/test_reflection.py index e5e35c9504..f3d1f34599 100644 --- a/test/dialect/mysql/test_reflection.py +++ b/test/dialect/mysql/test_reflection.py @@ -242,6 +242,13 @@ class TypeReflectionTest(fixtures.TestBase): self._run_test(metadata, connection, specs, ["enums"]) + @testing.only_on("mariadb>=10.7") + def test_uuid(self, metadata, connection): + specs = [ + (mysql.UUID(), mysql.UUID()), + ] + self._run_test(metadata, connection, specs, []) + class ReflectionTest(fixtures.TestBase, AssertsCompiledSQL): __only_on__ = "mysql", "mariadb" -- 2.47.3