Merge pull request #24757 from ankush/virtual_handling

fix: support running QB union queries
This commit is contained in:
Ankush Menat 2024-02-05 17:07:35 +05:30 committed by GitHub
commit 455c68ac55
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 14 additions and 2 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()))

View file

@ -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",