Merge pull request #24757 from ankush/virtual_handling
fix: support running QB union queries
This commit is contained in:
commit
455c68ac55
3 changed files with 14 additions and 2 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()))
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ dependencies = [
|
|||
# do NOT add loose requirements on PyMySQL versions.
|
||||
"PyMySQL==1.1.0",
|
||||
"pypdf~=3.17.0",
|
||||
"PyPika~=0.48.9",
|
||||
"PyPika==0.48.9",
|
||||
"PyQRCode~=1.2.1",
|
||||
"PyYAML~=6.0.1",
|
||||
"RestrictedPython~=7.0",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue