From de48dc2c042caaa23962c139dc722f29ee7b3390 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Fri, 29 Mar 2024 15:53:12 +0530 Subject: [PATCH] fix: db explain (#25724) This broke from some recent changes. It's just a wrapper, so probably no one uses it. Anyway, fixed and added test to prevent it. --- frappe/database/database.py | 6 +++--- frappe/tests/test_db.py | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/frappe/database/database.py b/frappe/database/database.py index 0c7fe76a39..b30be49437 100644 --- a/frappe/database/database.py +++ b/frappe/database/database.py @@ -389,15 +389,15 @@ class Database: """Wrap the object with str to generate mogrified query.""" return LazyMogrify(query, values) - def explain_query(self, query, values=None): + def explain_query(self, query, values=EmptyQueryValues): """Print `EXPLAIN` in error log.""" frappe.log("--- query explain ---") try: - self._cursor.execute(f"EXPLAIN {query}", values) + results = self.sql(f"EXPLAIN {query}", values, as_dict=1) except Exception as e: frappe.log(f"error in query explain: {e}") else: - frappe.log(json.dumps(self.fetch_as_dict(), indent=1)) + frappe.log(json.dumps(results, indent=1)) frappe.log("--- query explain end ---") def sql_list(self, query, values=(), debug=False, **kwargs): diff --git a/frappe/tests/test_db.py b/frappe/tests/test_db.py index 6beb96860f..9469abb6b7 100644 --- a/frappe/tests/test_db.py +++ b/frappe/tests/test_db.py @@ -618,6 +618,9 @@ class TestDB(FrappeTestCase): self.assertEqual(order_of_execution, list(range(0, 9))) + def test_db_explain(self): + frappe.db.sql("select 1", debug=1, explain=1) + @run_only_if(db_type_is.MARIADB) class TestDDLCommandsMaria(FrappeTestCase):