diff options
Diffstat (limited to 'test/orm/test_update_delete.py')
| -rw-r--r-- | test/orm/test_update_delete.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/test/orm/test_update_delete.py b/test/orm/test_update_delete.py index e387ad9e6..98fcc4f00 100644 --- a/test/orm/test_update_delete.py +++ b/test/orm/test_update_delete.py @@ -726,6 +726,7 @@ class UpdateDeleteIgnoresLoadersTest(fixtures.MappedTest): class UpdateDeleteFromTest(fixtures.MappedTest): + __backend__ = True @classmethod def define_tables(cls, metadata): @@ -802,6 +803,25 @@ class UpdateDeleteFromTest(fixtures.MappedTest): (5, True), (6, None)]) ) + @testing.requires.delete_from + def test_delete_from_joined_subq_test(self): + Document = self.classes.Document + s = Session() + + subq = s.query(func.max(Document.title).label('title')).\ + group_by(Document.user_id).subquery() + + s.query(Document).filter(Document.title == subq.c.title).\ + delete(synchronize_session=False) + + eq_( + set(s.query(Document.id, Document.flag)), + set([ + (2, None), + (3, None), + (6, None)]) + ) + def test_no_eval_against_multi_table_criteria(self): User = self.classes.User Document = self.classes.Document @@ -1016,6 +1036,19 @@ class InheritTest(fixtures.DeclarativeMappedTest): set([('e1', 'e1', ), ('e2', 'e5')]) ) + @testing.requires.delete_from + def test_delete_from(self): + Engineer = self.classes.Engineer + Person = self.classes.Person + s = Session(testing.db) + s.query(Engineer).filter(Engineer.id == Person.id).\ + filter(Person.name == 'e2').delete() + + eq_( + set(s.query(Person.name, Engineer.engineer_name)), + set([('e1', 'e1', )]) + ) + @testing.only_on('mysql', 'Multi table update') def test_update_from_multitable(self): Engineer = self.classes.Engineer |
