]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Add ``SET DEFAULT`` reflection option
authorroche-quentin <roche.quentin@bcg.com>
Wed, 8 May 2024 10:48:09 +0000 (06:48 -0400)
committerFederico Caselli <cfederico87@gmail.com>
Wed, 8 May 2024 18:09:44 +0000 (20:09 +0200)
Added missing foreign key reflection option ``SET DEFAULT``
in the MySQL and MariaDB dialects.

Fixes: #11285
Closes: #11368
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/11368
Pull-request-sha: dbd9c239c60b8f4f2be66967825ee15c1f7941b0

Change-Id: If61d3365fc4271432d5591d1b50e10f4a1da9290
(cherry picked from commit 323a7dcb5e70ae555e771beb63e3a58158f003a2)

doc/build/changelog/unreleased_20/11285.rst [new file with mode: 0644]
lib/sqlalchemy/dialects/mysql/reflection.py
test/dialect/mysql/test_reflection.py

diff --git a/doc/build/changelog/unreleased_20/11285.rst b/doc/build/changelog/unreleased_20/11285.rst
new file mode 100644 (file)
index 0000000..a965799
--- /dev/null
@@ -0,0 +1,7 @@
+.. change::
+    :tags: usecase, reflection, mysql
+    :tickets: 11285
+
+    Added missing foreign key reflection option ``SET DEFAULT``
+    in the MySQL and MariaDB dialects.
+    Pull request courtesy of Quentin Roche.
index c764e8ccc7fd36e98810d2cd571bc319596e521f..d7622c5463d89c84cb7a2b30550d9383f4732e83 100644 (file)
@@ -505,7 +505,7 @@ class MySQLTableDefinitionParser:
         #
         # unique constraints come back as KEYs
         kw = quotes.copy()
-        kw["on"] = "RESTRICT|CASCADE|SET NULL|NO ACTION"
+        kw["on"] = "RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULT"
         self._re_fk_constraint = _re_compile(
             r"  "
             r"CONSTRAINT +"
index 79e7198ef3d94e33a28fbe76e2818697bad686d0..4fa472ce1ae7cba0faa280ca9c64726cd5cfdfbb 100644 (file)
@@ -1557,7 +1557,7 @@ class RawReflectionTest(fixtures.TestBase):
             "  CONSTRAINT `addresses_user_id_fkey` "
             "FOREIGN KEY (`user_id`) "
             "REFERENCES `users` (`id`) "
-            "ON DELETE CASCADE ON UPDATE SET NULL"
+            "ON DELETE SET DEFAULT ON UPDATE SET NULL"
         )
         eq_(
             m.groups(),
@@ -1567,7 +1567,7 @@ class RawReflectionTest(fixtures.TestBase):
                 "`users`",
                 "`id`",
                 None,
-                "CASCADE",
+                "SET DEFAULT",
                 "SET NULL",
             ),
         )