]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- further adjustment to accomodate for the "ON" in "NO ACTION"
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 4 Jun 2016 00:54:48 +0000 (20:54 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 4 Jun 2016 00:54:48 +0000 (20:54 -0400)
Change-Id: I734e4aec3701d7cf17813b561a1418cfeff1d473

lib/sqlalchemy/dialects/sqlite/base.py
test/dialect/test_sqlite.py

index 0f3c5438598991c8f1b259184d1a009ce6e3ea14..5109ff3a70048df006e25f1275dd879b853dfcd9 100644 (file)
@@ -1394,7 +1394,8 @@ class SQLiteDialect(default.DefaultDialect):
                         self._find_cols_in_sig(referred_columns))
                 referred_name = referred_quoted_name or referred_name
                 options = {}
-                for token in re.split(r" *ON *", onupdatedelete.upper()):
+
+                for token in re.split(r" *\bON\b *", onupdatedelete.upper()):
                     if token.startswith("DELETE"):
                         options['ondelete'] = token[6:].strip()
                     elif token.startswith("UPDATE"):
index 354558ebe828229c2610a2bc50708b206d985fd2..697f21585178c0a437472a08b2447496f9185e14 100644 (file)
@@ -1148,13 +1148,15 @@ class ConstraintReflectionTest(fixtures.TestBase):
             conn.execute("create table o (foo varchar(20) primary key)")
             conn.execute(
                 "CREATE TABLE onud_test (id INTEGER PRIMARY KEY, "
-                "c1 INTEGER, c2 INTEGER, c3 INTEGER, "
+                "c1 INTEGER, c2 INTEGER, c3 INTEGER, c4 INTEGER, "
                 "CONSTRAINT fk1 FOREIGN KEY (c1) REFERENCES a1(id) "
                 "ON DELETE SET NULL, "
                 "CONSTRAINT fk2 FOREIGN KEY (c2) REFERENCES a1(id) "
                 "ON UPDATE CASCADE, "
                 "CONSTRAINT fk3 FOREIGN KEY (c3) REFERENCES a2(id) "
-                "ON DELETE CASCADE ON UPDATE SET NULL)"
+                "ON DELETE CASCADE ON UPDATE SET NULL,"
+                "CONSTRAINT fk4 FOREIGN KEY (c4) REFERENCES a2(id) "
+                "ON UPDATE NO ACTION)"
             )
 
             conn.execute(
@@ -1331,6 +1333,12 @@ class ConstraintReflectionTest(fixtures.TestBase):
                     'constrained_columns': ['c3'],
                     'options': {'ondelete': 'CASCADE', 'onupdate': 'SET NULL'}
                 },
+                {
+                    'referred_table': 'a2', 'referred_columns': ['id'],
+                    'referred_schema': None, 'name': 'fk4',
+                    'constrained_columns': ['c4'],
+                    'options': {'onupdate': 'NO ACTION'}
+                },
             ]
         )