diff --git a/odoo/modules/registry.py b/odoo/modules/registry.py index 5862ccaac0d..d286c3c0494 100644 --- a/odoo/modules/registry.py +++ b/odoo/modules/registry.py @@ -466,9 +466,10 @@ class Registry(Mapping): if not expected: return - cr.execute("SELECT indexname FROM pg_indexes WHERE indexname IN %s", + # retrieve existing indexes with their corresponding table + cr.execute("SELECT indexname, tablename FROM pg_indexes WHERE indexname IN %s", [tuple(row[0] for row in expected)]) - existing = {row[0] for row in cr.fetchall()} + existing = dict(cr.fetchall()) for indexname, tablename, field, unaccent in expected: column_expression = f'"{field.name}"' @@ -503,7 +504,8 @@ class Registry(Mapping): sql.create_index(cr, indexname, tablename, [expression], method, where) except psycopg2.OperationalError: _schema.error("Unable to add index for %s", self) - elif not index and indexname in existing: + + elif not index and tablename == existing.get(indexname): _schema.info("Keep unexpected index %s on table %s", indexname, tablename) def add_foreign_key(self, table1, column1, table2, column2, ondelete,