perf: Patch qb only once - not on every init
This commit is contained in:
parent
3871fe6cd0
commit
64e5273764
2 changed files with 9 additions and 3 deletions
|
|
@ -44,6 +44,7 @@ local = Local()
|
|||
STANDARD_USERS = ("Guest", "Administrator")
|
||||
|
||||
_dev_server = int(sbool(os.environ.get("DEV_SERVER", False)))
|
||||
_qb_patched = False
|
||||
|
||||
if _dev_server:
|
||||
warnings.simplefilter("always", DeprecationWarning)
|
||||
|
|
@ -236,8 +237,10 @@ def init(site, sites_path=None, new_site=False):
|
|||
local.qb = get_query_builder(local.conf.db_type or "mariadb")
|
||||
|
||||
setup_module_map()
|
||||
patch_query_execute()
|
||||
patch_query_aggregation()
|
||||
|
||||
if not _qb_patched:
|
||||
patch_query_execute()
|
||||
patch_query_aggregation()
|
||||
|
||||
local.initialised = True
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,6 @@ def patch_query_execute():
|
|||
This excludes the use of `frappe.db.sql` method while
|
||||
executing the query object
|
||||
"""
|
||||
from frappe.utils.safe_exec import check_safe_sql_query
|
||||
|
||||
def execute_query(query, *args, **kwargs):
|
||||
query, params = prepare_query(query)
|
||||
|
|
@ -73,6 +72,8 @@ def patch_query_execute():
|
|||
def prepare_query(query):
|
||||
import inspect
|
||||
|
||||
from frappe.utils.safe_exec import check_safe_sql_query
|
||||
|
||||
param_collector = NamedParameterWrapper()
|
||||
query = query.get_sql(param_wrapper=param_collector)
|
||||
if frappe.flags.in_safe_exec and not check_safe_sql_query(query, throw=False):
|
||||
|
|
@ -103,6 +104,7 @@ def patch_query_execute():
|
|||
|
||||
builder_class.run = execute_query
|
||||
builder_class.walk = prepare_query
|
||||
frappe._qb_patched = True
|
||||
|
||||
|
||||
def patch_query_aggregation():
|
||||
|
|
@ -113,3 +115,4 @@ def patch_query_aggregation():
|
|||
frappe.qb.min = _min
|
||||
frappe.qb.avg = _avg
|
||||
frappe.qb.sum = _sum
|
||||
frappe._qb_patched = True
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue