summaryrefslogtreecommitdiff
path: root/tests/test_version_table.py
diff options
context:
space:
mode:
authorKe Zhu <kzhu@us.ibm.com>2020-02-28 16:00:57 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2020-03-01 11:14:58 -0500
commit5287da2b69ec7e091d8d796161c391f6a90678f7 (patch)
tree341f1a698de0772ac42ad203062836d01eda2c8d /tests/test_version_table.py
parentdfc4c550614928172ef31df3e97b73a05b985012 (diff)
downloadalembic-5287da2b69ec7e091d8d796161c391f6a90678f7.tar.gz
Respects ResultProxy.supports_sane_rowcount()
The check for matched rowcount when the alembic_version table is updated or deleted from is now conditional based on whether or not the dialect supports the concept of "rowcount" for UPDATE or DELETE rows matched. Some third party dialects do not support this concept. Pull request courtesy Ke Zhu. Closes: #667 Pull-request: https://github.com/sqlalchemy/alembic/pull/667 Pull-request-sha: a0d45ed0f5de582314faae2210eeec881670488e Change-Id: I09c9b540d8e21a94728085270eb20ba2273cbdb1
Diffstat (limited to 'tests/test_version_table.py')
-rw-r--r--tests/test_version_table.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/test_version_table.py b/tests/test_version_table.py
index 34bdfab..1801346 100644
--- a/tests/test_version_table.py
+++ b/tests/test_version_table.py
@@ -262,6 +262,14 @@ class UpdateRevTest(TestBase):
_up("x", "b"),
)
+ def test_update_no_match_no_sane_rowcount(self):
+ self.updater.update_to_step(_up(None, "a", True))
+ self.updater.heads.add("x")
+ with mock.patch.object(
+ self.connection.dialect, "supports_sane_rowcount", False
+ ):
+ self.updater.update_to_step(_up("x", "b"))
+
def test_update_multi_match(self):
self.connection.execute(version_table.insert(), version_num="a")
self.connection.execute(version_table.insert(), version_num="a")
@@ -275,6 +283,16 @@ class UpdateRevTest(TestBase):
_up("a", "b"),
)
+ def test_update_multi_match_no_sane_rowcount(self):
+ self.connection.execute(version_table.insert(), version_num="a")
+ self.connection.execute(version_table.insert(), version_num="a")
+
+ self.updater.heads.add("a")
+ with mock.patch.object(
+ self.connection.dialect, "supports_sane_rowcount", False
+ ):
+ self.updater.update_to_step(_up("a", "b"))
+
def test_delete_no_match(self):
self.updater.update_to_step(_up(None, "a", True))
@@ -287,6 +305,15 @@ class UpdateRevTest(TestBase):
_down("x", None, True),
)
+ def test_delete_no_matchno_sane_rowcount(self):
+ self.updater.update_to_step(_up(None, "a", True))
+
+ self.updater.heads.add("x")
+ with mock.patch.object(
+ self.connection.dialect, "supports_sane_rowcount", False
+ ):
+ self.updater.update_to_step(_down("x", None, True))
+
def test_delete_multi_match(self):
self.connection.execute(version_table.insert(), version_num="a")
self.connection.execute(version_table.insert(), version_num="a")
@@ -299,3 +326,13 @@ class UpdateRevTest(TestBase):
self.updater.update_to_step,
_down("a", None, True),
)
+
+ def test_delete_multi_match_no_sane_rowcount(self):
+ self.connection.execute(version_table.insert(), version_num="a")
+ self.connection.execute(version_table.insert(), version_num="a")
+
+ self.updater.heads.add("a")
+ with mock.patch.object(
+ self.connection.dialect, "supports_sane_rowcount", False
+ ):
+ self.updater.update_to_step(_down("a", None, True))