fix: support running QB union queries
closes https://github.com/frappe/frappe/issues/15609
This commit is contained in:
parent
5819d971e0
commit
f8743d1cfb
2 changed files with 13 additions and 1 deletions
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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()))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue