From ec162dd0cb5622ab6e56db1a63dab5f531a96f4a Mon Sep 17 00:00:00 2001 From: Graeme Gellatly Date: Fri, 1 Mar 2019 04:31:23 +0000 Subject: [PATCH] [IMP] fields: add a primary key for m2m tables Remove individual m2m indexes and replace with a single mirrored composite This will help for logical replication strategies (postgresql BDR) closes odoo/odoo#37963 Signed-off-by: Martin Trigaux (mat) --- odoo/fields.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/odoo/fields.py b/odoo/fields.py index 2576fd770ac..da0de6d9a35 100644 --- a/odoo/fields.py +++ b/odoo/fields.py @@ -3141,10 +3141,9 @@ class Many2many(_RelationalMulti): query = """ CREATE TABLE "{rel}" ("{id1}" INTEGER NOT NULL, "{id2}" INTEGER NOT NULL, - UNIQUE("{id1}","{id2}")); + PRIMARY KEY("{id1}","{id2}")); COMMENT ON TABLE "{rel}" IS %s; - CREATE INDEX ON "{rel}" ("{id1}"); - CREATE INDEX ON "{rel}" ("{id2}") + CREATE INDEX ON "{rel}" ("{id2}","{id1}"); """.format(rel=self.relation, id1=self.column1, id2=self.column2) cr.execute(query, ['RELATION BETWEEN %s AND %s' % (model._table, comodel._table)]) _schema.debug("Create table %r: m2m relation between %r and %r", self.relation, model._table, comodel._table)