angri avatar angri committed 6c882e4

added a quirk to make delete subtree tests work on mysql innodb

Comments (0)

Files changed (1)

tests/_testlib.py

     )
 
     metadata = sqlalchemy.MetaData(engine)
+
+    # mysql still doesn't support deferring of fk constraints (though it is
+    # required by SQL standard) on deleting. So for mysql we need to make it
+    # cascade delete queries in order to make deleting subtrees work. See
+    # http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
+    ondelete = DB_URI.startswith('mysql') and 'CASCADE' or 'RESTRICT'
+
     tbl = sqlalchemy.Table('tbl', metadata,
         sqlalchemy.Column('id', sqlalchemy.Integer, primary_key=True,),
         sqlalchemy.Column('name', sqlalchemy.String(100)),
-        sqlalchemy.Column('parent_id', sqlalchemy.ForeignKey('tbl.id')),
+        sqlalchemy.Column('parent_id',
+                          sqlalchemy.ForeignKey('tbl.id', ondelete=ondelete)),
         mysql_engine=MYSQL_ENGINE
     )
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.