summaryrefslogtreecommitdiff
path: root/test/orm/test_update_delete.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/orm/test_update_delete.py')
-rw-r--r--test/orm/test_update_delete.py33
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