From a2a0bfaa048830bed316911c012327c1d047fe92 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Mon, 28 Sep 2020 16:37:43 +0000 Subject: [PATCH] [FIX] base: avoid creating a new index at each model initialization As example, on a runbot database, there are 13 duplicated indexes ``` 4362411-14-0-all=> \d res_users_apikeys; Table "public.res_users_apikeys" Column | Type | Collation | Nullable | Default -------------+-----------------------------+-----------+----------+----------------------------------------------- id | integer | | not null | nextval('res_users_apikeys_id_seq'::regclass) name | character varying | | not null | user_id | integer | | not null | scope | character varying | | | index | character varying(8) | | | key | character varying | | | create_date | timestamp without time zone | | | timezone('utc'::text, now()) Indexes: "res_users_apikeys_pkey" PRIMARY KEY, btree (id) "res_users_apikeys_user_id_index_idx" btree (user_id, index) "res_users_apikeys_user_id_index_idx1" btree (user_id, index) "res_users_apikeys_user_id_index_idx10" btree (user_id, index) "res_users_apikeys_user_id_index_idx11" btree (user_id, index) "res_users_apikeys_user_id_index_idx12" btree (user_id, index) "res_users_apikeys_user_id_index_idx2" btree (user_id, index) "res_users_apikeys_user_id_index_idx3" btree (user_id, index) "res_users_apikeys_user_id_index_idx4" btree (user_id, index) "res_users_apikeys_user_id_index_idx5" btree (user_id, index) "res_users_apikeys_user_id_index_idx6" btree (user_id, index) "res_users_apikeys_user_id_index_idx7" btree (user_id, index) "res_users_apikeys_user_id_index_idx8" btree (user_id, index) "res_users_apikeys_user_id_index_idx9" btree (user_id, index) Check constraints: "res_users_apikeys_index_check" CHECK (char_length(index::text) = 8) Foreign-key constraints: "res_users_apikeys_user_id_fkey" FOREIGN KEY (user_id) REFERENCES res_users(id) ``` closes odoo/odoo#58746 X-original-commit: 94068037fbddc816926af7c68c19780926832722 Signed-off-by: Christophe Simonis --- odoo/addons/base/models/res_users.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index 903007e4db0..7bbef051e84 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -1614,7 +1614,7 @@ class APIKeys(models.Model): key varchar not null, create_date timestamp without time zone DEFAULT (now() at time zone 'utc') ); - CREATE INDEX ON {table} (user_id, index); + CREATE INDEX IF NOT EXISTS res_users_apikeys_user_id_index_idx ON {table} (user_id, index); """.format(table=self._table, index_size=INDEX_SIZE)) @check_identity