summaryrefslogtreecommitdiff
path: root/odoo/sql_db.py
diff options
context:
space:
mode:
authorDenis Ledoux <dle@odoo.com>2019-08-22 14:45:45 +0000
committerDenis Ledoux <dle@odoo.com>2019-08-23 10:07:05 +0000
commitee03fc37704b637dd0e34a5497b555318e616011 (patch)
tree4d8bb53dc0e9ca9d93f1354591e903cb120fba7b /odoo/sql_db.py
parentd61cb18895f39d82b3227ee38210a3b2ae8fb673 (diff)
[FIX] sql_db: flush in savepoint, following odoo/odoo@9920f20e4c7753bc17bea71dea3a90f7de687196
closes odoo/odoo#35986 Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
Diffstat (limited to 'odoo/sql_db.py')
-rw-r--r--odoo/sql_db.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/odoo/sql_db.py b/odoo/sql_db.py
index ed5cf07884d..4618653efd5 100644
--- a/odoo/sql_db.py
+++ b/odoo/sql_db.py
@@ -413,10 +413,17 @@ class Cursor(object):
def savepoint(self):
"""context manager entering in a new savepoint"""
name = uuid.uuid1().hex
+ env = next((e for e in Environment.envs if e.cr is self), None)
+ if env is not None:
+ env['base'].flush()
self.execute('SAVEPOINT "%s"' % name)
try:
yield
+ if env is not None:
+ env['base'].flush()
except Exception:
+ if env is not None:
+ env.clear()
self.execute('ROLLBACK TO SAVEPOINT "%s"' % name)
raise
else: