fix: support running QB union queries

closes https://github.com/frappe/frappe/issues/15609
This commit is contained in:
Ankush Menat 2024-02-05 16:45:04 +05:30
parent 5819d971e0
commit f8743d1cfb
2 changed files with 13 additions and 1 deletions

View file

@ -3,7 +3,7 @@ from enum import Enum
from importlib import import_module
from typing import Any, get_type_hints
from pypika.queries import Column, QueryBuilder
from pypika.queries import Column, QueryBuilder, _SetOperation
from pypika.terms import PseudoColumn
import frappe
@ -136,6 +136,10 @@ def patch_query_execute():
builder_class.run = execute_query
builder_class.walk = prepare_query
# To support running union queries
_SetOperation.run = execute_query
_SetOperation.walk = prepare_query
frappe._qb_patched[frappe.conf.db_type] = True

View file

@ -493,3 +493,11 @@ class TestMisc(FrappeTestCase):
DocType = Table("DocType")
self.assertEqual(DocType.get_sql(), "DocType")
def test_union(self):
user = frappe.qb.DocType("User")
role = frappe.qb.DocType("Role")
users = frappe.qb.from_(user).select(user.name)
roles = frappe.qb.from_(role).select(role.name)
self.assertEqual(set(users.run() + roles.run()), set((users + roles).run()))