summaryrefslogtreecommitdiff
path: root/test/dialect/postgresql/test_on_conflict.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/dialect/postgresql/test_on_conflict.py')
-rw-r--r--test/dialect/postgresql/test_on_conflict.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/test/dialect/postgresql/test_on_conflict.py b/test/dialect/postgresql/test_on_conflict.py
index 3cdad78f0..8ef0f158e 100644
--- a/test/dialect/postgresql/test_on_conflict.py
+++ b/test/dialect/postgresql/test_on_conflict.py
@@ -682,6 +682,45 @@ class OnConflictTest(fixtures.TablesTest):
[(1, "name1", "mail2@gmail.com", "unique_name")],
)
+ def test_on_conflict_do_update_constraint_can_be_index(self, connection):
+ """test #9023"""
+
+ users = self.tables.users_xtra
+
+ connection.execute(
+ insert(users),
+ dict(
+ id=1,
+ name="name1",
+ login_email="mail1@gmail.com",
+ lets_index_this="unique_name",
+ ),
+ )
+
+ i = insert(users)
+ i = i.on_conflict_do_update(
+ constraint=self.unique_partial_index,
+ set_=dict(
+ name=i.excluded.name, login_email=i.excluded.login_email
+ ),
+ )
+
+ connection.execute(
+ i,
+ [
+ dict(
+ name="name1",
+ login_email="mail2@gmail.com",
+ lets_index_this="unique_name",
+ )
+ ],
+ )
+
+ eq_(
+ connection.execute(users.select()).fetchall(),
+ [(1, "name1", "mail2@gmail.com", "unique_name")],
+ )
+
def test_on_conflict_do_update_no_row_actually_affected(self, connection):
users = self.tables.users_xtra