diff --git a/frappe/model/db_query.py b/frappe/model/db_query.py index 69078c0bdd..d71db9be11 100644 --- a/frappe/model/db_query.py +++ b/frappe/model/db_query.py @@ -882,11 +882,11 @@ class DatabaseQuery: value = value.replace("\\", "\\\\").replace("%", "%%") elif f.operator == "=" and df and df.fieldtype in ("Link", "Data", "Dynamic Link"): - value = cstr(f.value) or "''" + value = cstr(f.value) fallback = "''" elif f.fieldname == "name": - value = f.value or "''" + value = f.value fallback = "''" else: diff --git a/frappe/tests/test_db_query.py b/frappe/tests/test_db_query.py index 8904e51a38..25d59d66ff 100644 --- a/frappe/tests/test_db_query.py +++ b/frappe/tests/test_db_query.py @@ -1196,6 +1196,11 @@ class TestDBQuery(IntegrationTestCase): self.assertEqual(count[0], frappe.db.count("Language")) self.assertEqual(count[1], frappe.db.count("Language")) + def test_ifnull_none(self): + query = frappe.get_all("DocField", {"fieldname": None}, run=0) + self.assertIn("''", query) + self.assertNotIn("\\'", query) + class TestReportView(IntegrationTestCase): @run_only_if(db_type_is.MARIADB) # TODO: postgres name casting is messed up