diff --git a/frappe/recorder.py b/frappe/recorder.py index 974f98b371..208f436eb4 100644 --- a/frappe/recorder.py +++ b/frappe/recorder.py @@ -59,12 +59,17 @@ def record_sql(*args, **kwargs): result = frappe.db._sql(*args, **kwargs) end_time = time.monotonic() + query = getattr(frappe.db, "last_query", None) + if not query or isinstance(result, str): + # run=0, doesn't actually run the query so last_query won't be present + return result + stack = [] if frappe.local._recorder.config.capture_stack: stack = list(get_current_stack_frames()) data = { - "query": str(frappe.db.last_query), + "query": str(query), "stack": stack, "explain_result": [], "time": start_time, diff --git a/frappe/tests/test_recorder.py b/frappe/tests/test_recorder.py index 57393b0238..3395ac759c 100644 --- a/frappe/tests/test_recorder.py +++ b/frappe/tests/test_recorder.py @@ -83,6 +83,7 @@ class TestRecorder(FrappeTestCase): def test_explain(self): frappe.db.sql("SELECT * FROM tabDocType") frappe.db.sql("COMMIT") + frappe.db.sql("select 1", run=0) self.stop_recording() requests = frappe.recorder.get()