summaryrefslogtreecommitdiff
path: root/odoo/sql_db.py
diff options
context:
space:
mode:
authorRaphael Collet <rco@odoo.com>2019-08-26 13:38:17 +0000
committerRaphael Collet <rco@odoo.com>2019-08-26 13:39:16 +0000
commitc7f5c4afd2099f951dfe433ab18716062b2843db (patch)
treed16605195cdebbc2b5a9868986a08ca6870a13b2 /odoo/sql_db.py
parenteafdf1812d3ef545400bf9f6acd6842de807a33a (diff)
[FIX] sql_db: add flush() in savepoint()
closes odoo/odoo#36060 Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
Diffstat (limited to 'odoo/sql_db.py')
-rw-r--r--odoo/sql_db.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/odoo/sql_db.py b/odoo/sql_db.py
index 5cedf34b428..c7990b025ef 100644
--- a/odoo/sql_db.py
+++ b/odoo/sql_db.py
@@ -425,13 +425,20 @@ class Cursor(object):
@contextmanager
@check
- def savepoint(self):
+ def savepoint(self, flush=True):
"""context manager entering in a new savepoint"""
name = uuid.uuid1().hex
+ env = get_env(currentframe(), 2) if flush else 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: