diff --git a/odoo/sql_db.py b/odoo/sql_db.py index 232cc8c846f..31299df03bd 100644 --- a/odoo/sql_db.py +++ b/odoo/sql_db.py @@ -246,6 +246,7 @@ class Cursor(BaseCursor): # default log level determined at cursor creation, could be # overridden later for debugging purposes self.sql_log_count = 0 + self._sql_table_tracking = False # avoid the call of close() (by __del__) if an exception # is raised by any of the following initializations @@ -331,8 +332,8 @@ class Cursor(BaseCursor): for hook in getattr(current_thread, 'query_hooks', ()): hook(self, query, params, start, delay) - # advanced stats only if logging.DEBUG is enabled - if _logger.isEnabledFor(logging.DEBUG): + # advanced stats + if _logger.isEnabledFor(logging.DEBUG) or self._sql_table_tracking: delay *= 1E6 decoded_query = self._obj.query.decode() @@ -392,6 +393,15 @@ class Cursor(BaseCursor): finally: _logger.setLevel(level) + @contextmanager + def _enable_table_tracking(self): + try: + old = self._sql_table_tracking + self._sql_table_tracking = True + yield + finally: + self._sql_table_tracking = old + def close(self): if not self.closed: return self._close(False)