]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Move FK_ON_DELETE as a memoized property on PGDDLCompiler
authorDenis Laxalde <denis@laxalde.org>
Thu, 13 Mar 2025 07:13:49 +0000 (08:13 +0100)
committerDenis Laxalde <denis@laxalde.org>
Thu, 13 Mar 2025 07:16:18 +0000 (08:16 +0100)
lib/sqlalchemy/dialects/postgresql/base.py

index ccc426b5bffaad62ccaec80f40b1e7a9240dee6c..4938aba2bde2861a62bea1d3e008d26fd62fc374 100644 (file)
@@ -1672,10 +1672,6 @@ RESERVED_WORDS = {
     "verbose",
 }
 
-FK_ON_DELETE = re.compile(
-    r"^(?:RESTRICT|CASCADE|SET (?:NULL|DEFAULT)(?:\s*\(.+\))?|NO ACTION)$",
-    re.I,
-)
 
 colspecs = {
     sqltypes.ARRAY: _array.ARRAY,
@@ -2255,9 +2251,17 @@ class PGDDLCompiler(compiler.DDLCompiler):
         text += self._define_constraint_validity(constraint)
         return text
 
+    @util.memoized_property
+    def _fk_ondelete_pattern(self):
+        return re.compile(
+            r"^(?:RESTRICT|CASCADE|SET (?:NULL|DEFAULT)(?:\s*\(.+\))?"
+            r"|NO ACTION)$",
+            re.I,
+        )
+
     def define_constraint_ondelete_cascade(self, constraint):
         return " ON DELETE %s" % self.preparer.validate_sql_phrase(
-            constraint.ondelete, FK_ON_DELETE
+            constraint.ondelete, self._fk_ondelete_pattern
         )
 
     def visit_create_enum_type(self, create, **kw):