From 5fecde5a6ae66b35dfeece6100b1312cfd5531c4 Mon Sep 17 00:00:00 2001 From: Aarol D'Souza <98270103+AarDG10@users.noreply.github.com> Date: Mon, 24 Nov 2025 11:05:20 +0530 Subject: [PATCH] test(postgres): enable test_unique_index_on_alter for postgres (#34719) * test(postgres): enable test_unique_index_on_alter for postgres * perf(postgres): Prevent redundant unique index creation on new columns --- frappe/database/postgres/schema.py | 9 ++++++--- frappe/tests/test_db_update.py | 1 - 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/frappe/database/postgres/schema.py b/frappe/database/postgres/schema.py index 75b944f74a..aca6a778f3 100644 --- a/frappe/database/postgres/schema.py +++ b/frappe/database/postgres/schema.py @@ -76,6 +76,8 @@ class PostgresTable(DBTable): query = [f"ADD COLUMN `{col.fieldname}` {col.get_definition()}" for col in self.add_column] + new_column_names = {col.fieldname for col in self.add_column} + for col in self.change_type: using_clause = "" if col.fieldtype in ("Datetime"): @@ -124,9 +126,10 @@ class PostgresTable(DBTable): for col in self.add_unique: # if index key not exists - create_contraint_query += 'CREATE UNIQUE INDEX IF NOT EXISTS "unique_{index_name}" ON `{table_name}`(`{field}`);'.format( - index_name=col.fieldname, table_name=self.table_name, field=col.fieldname - ) + if col.fieldname not in new_column_names: + create_contraint_query += 'CREATE UNIQUE INDEX IF NOT EXISTS "unique_{index_name}" ON `{table_name}`(`{field}`);'.format( + index_name=col.fieldname, table_name=self.table_name, field=col.fieldname + ) drop_contraint_query = "" for col in self.drop_index: diff --git a/frappe/tests/test_db_update.py b/frappe/tests/test_db_update.py index a6e483e29e..5deb94cccb 100644 --- a/frappe/tests/test_db_update.py +++ b/frappe/tests/test_db_update.py @@ -139,7 +139,6 @@ class TestDBUpdate(IntegrationTestCase): with self.subTest(f"Checking index {doctype.name} - {field.fieldname}"): self.check_unique_indexes(doctype.name, field.fieldname) - @run_only_if(db_type_is.MARIADB) def test_unique_index_on_alter(self): """Only one unique index should be added"""