fix(sqlite): make System Health Report compatible

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
This commit is contained in:
Akhil Narang 2025-04-07 12:20:09 +05:30
parent dc60a65c38
commit b16d69a002
No known key found for this signature in database
GPG key ID: 9DCC61E211BF645F
2 changed files with 10 additions and 6 deletions

View file

@ -41,20 +41,20 @@ def execute(filters=None):
)
SELECT
m.name as 'table',
ROUND(CAST((SELECT SUM(pgsize) FROM dbstat WHERE name = m.name) * page_size.size / (1024.0 * 1024.0 * 1024.0) AS FLOAT), 2) as 'data_size_mb',
ROUND(CAST((SELECT SUM(pgsize) FROM dbstat WHERE name = m.name) * page_size.size / (1024.0 * 1024.0 * 1024.0) AS FLOAT), 2) as 'data_size',
ROUND(CAST((SELECT SUM(pgsize) FROM dbstat WHERE name IN (
SELECT name FROM sqlite_master
WHERE type = 'index' AND tbl_name = m.name
)) * page_size.size / (1024.0 * 1024.0 * 1024.0) AS FLOAT), 2) as 'index_size_mb',
)) * page_size.size / (1024.0 * 1024.0 * 1024.0) AS FLOAT), 2) as 'index_size',
ROUND(CAST((SELECT SUM(pgsize) FROM dbstat WHERE name = m.name OR name IN (
SELECT name FROM sqlite_master
WHERE type = 'index' AND tbl_name = m.name
)) * page_size.size / (1024.0 * 1024.0 * 1024.0) AS FLOAT), 2) as 'total_size_mb'
)) * page_size.size / (1024.0 * 1024.0 * 1024.0) AS FLOAT), 2) as 'size'
FROM sqlite_master m
CROSS JOIN page_size
WHERE m.type = 'table'
AND m.name NOT LIKE 'sqlite_%'
ORDER BY total_size_mb DESC;""",
ORDER BY size DESC;""",
},
as_dict=1,
)

View file

@ -310,10 +310,14 @@ class SystemHealthReport(Document):
_cols, data = db_report()
self.database = frappe.db.db_type
self.db_storage_usage = sum(table.size for table in data)
self.db_storage_usage = sum(table.size or 0.0 for table in data)
for row in data[:5]:
self.append("top_db_tables", row)
self.database_version = frappe.db.sql("select version()")[0][0]
if frappe.db.db_type == "sqlite":
self.database_version = frappe.db.sql("select sqlite_version()")[0][0]
else:
self.database_version = frappe.db.sql("select version()")[0][0]
if frappe.db.db_type == "mariadb":
self.bufferpool_size = frappe.db.sql("show variables like 'innodb_buffer_pool_size'")[0][1]