From 306eca6edbd46122186c08202ee3f4710777eb82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 22 May 2023 12:13:48 +0200 Subject: [PATCH] Remove overlapping indexes --- trytond/CHANGELOG | 1 + trytond/trytond/model/modelsql.py | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/trytond/CHANGELOG b/trytond/CHANGELOG index 06207f128f..4f385a1b9a 100644 --- a/trytond/CHANGELOG +++ b/trytond/CHANGELOG @@ -1,3 +1,4 @@ +* Remove overlapping indexes * Support subset operator between index definitions * Add sum_tree helper * Convert sum attribute into boolean diff --git a/trytond/trytond/model/modelsql.py b/trytond/trytond/model/modelsql.py index 8edc9221b0..a6638b1e52 100644 --- a/trytond/trytond/model/modelsql.py +++ b/trytond/trytond/model/modelsql.py @@ -505,10 +505,15 @@ class ModelSQL(ModelStorage): @classmethod def _update_sql_indexes(cls): + def no_subset(index): + for j in cls._sql_indexes: + if j != index and index < j: + return False + return True if not callable(cls.table_query): table_h = cls.__table_handler__() - # TODO: remove overlapping indexes - table_h.set_indexes(cls._sql_indexes) + indexes = filter(no_subset, cls._sql_indexes) + table_h.set_indexes(indexes) @classmethod def _update_history_table(cls):