From 4c58eba58b376cfbc52af0b2213806bf07be7953 Mon Sep 17 00:00:00 2001 From: Akhil Narang Date: Thu, 8 Jan 2026 18:30:14 +0530 Subject: [PATCH] fix: "fetch from" was broken on SQLite (#35774) SQLite (like PostgreSQL) doesn't support `INNER JOIN` within `UPDATE` We can use the psql fallback we anyway had. Signed-off-by: Akhil Narang --- frappe/core/doctype/doctype/doctype.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/frappe/core/doctype/doctype/doctype.py b/frappe/core/doctype/doctype/doctype.py index 77482dc8b0..dc3a785a37 100644 --- a/frappe/core/doctype/doctype/doctype.py +++ b/frappe/core/doctype/doctype/doctype.py @@ -362,19 +362,7 @@ class DocType(Document): continue # Invalid expression link_df = new_meta.get_field(link_fieldname) - if frappe.db.db_type == "postgres": - update_query = """ - UPDATE `tab{doctype}` - SET `{fieldname}` = source.`{source_fieldname}` - FROM `tab{link_doctype}` as source - WHERE `{link_fieldname}` = source.name - """ - if df.not_nullable: - update_query += "AND `{fieldname}`=''" - else: - update_query += "AND ifnull(`{fieldname}`, '')=''" - - else: + if frappe.db.db_type == "mariadb": update_query = """ UPDATE `tab{doctype}` as target INNER JOIN `tab{link_doctype}` as source @@ -386,6 +374,18 @@ class DocType(Document): else: update_query += "WHERE ifnull(`target`.`{fieldname}`, '')=''" + else: + update_query = """ + UPDATE `tab{doctype}` + SET `{fieldname}` = source.`{source_fieldname}` + FROM `tab{link_doctype}` as source + WHERE `{link_fieldname}` = source.name + """ + if df.not_nullable: + update_query += "AND `{fieldname}`=''" + else: + update_query += "AND ifnull(`{fieldname}`, '')=''" + self.flags.update_fields_to_fetch_queries.append( update_query.format( link_doctype=link_df.options,