We added trigram index for char fields since https://github.com/odoo/odoo/pull/83015. But if `unaccent` is installed in the database (and isn't force to `False` on field), these new trigram indexes are pointless and cost a lot for nothing (almost nothing, it still can be used for equality operator but in this case a btree will be far more efficient). The simple way to fix it is to add `unaccent(<column>)` in the index trigram definition, but unfortunately `unaccent` is not immutable and may therefore not be indexed. In order to make `unaccent` indexable, we must declare it as immutable (see https://stackoverflow.com/questions/11005036/does-postgresql-support-accent-insensitive-collations/11007216#11007216 for more information and how to do that). With this patch, trigram indexes are created with `unaccent(<column>)` if the function `unaccent` is available in the database, and for the fields that are not declared with `unaccent=False`. Moreover, we issue a warning when `unaccent` is available but is not immutable, in which case most trigram indexes will be useless. odoo/upgrade#3736 task-2551518 closes odoo/odoo#95943 Signed-off-by: Rémy Voet <ryv@odoo.com>