Skip to content

Commit

Permalink
perf: use estimated rows instead of actual rows (backport #38830) (#3…
Browse files Browse the repository at this point in the history
…8876)

perf: use estimated rows instead of actual rows (#38830)

(cherry picked from commit 9983283)

Co-authored-by: Ankush Menat <ankush@frappe.io>
  • Loading branch information
mergify[bot] and ankush authored Dec 20, 2023
1 parent 4626ab5 commit 648f275
Showing 1 changed file with 13 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import frappe
from frappe import _
from frappe.utils import cint, flt, getdate
from frappe.utils import cint, flt, get_table_name, getdate
from frappe.utils.deprecations import deprecated
from pypika import functions as fn

Expand All @@ -13,11 +13,22 @@
SLE_COUNT_LIMIT = 10_000


def _estimate_table_row_count(doctype: str):
table = get_table_name(doctype)
return cint(
frappe.db.sql(
f"""select table_rows
from information_schema.tables
where table_name = '{table}' ;"""
)[0][0]
)


def execute(filters=None):
if not filters:
filters = {}

sle_count = frappe.db.count("Stock Ledger Entry")
sle_count = _estimate_table_row_count("Stock Ledger Entry")

if sle_count > SLE_COUNT_LIMIT and not filters.get("item_code") and not filters.get("warehouse"):
frappe.throw(_("Please select either the Item or Warehouse filter to generate the report."))
Expand Down

0 comments on commit 648f275

Please sign in to comment.