summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/hashserv/sqlite.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/hashserv/sqlite.py')
-rw-r--r--bitbake/lib/hashserv/sqlite.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/bitbake/lib/hashserv/sqlite.py b/bitbake/lib/hashserv/sqlite.py
index 414ee8ffb8..dfdccbbaa0 100644
--- a/bitbake/lib/hashserv/sqlite.py
+++ b/bitbake/lib/hashserv/sqlite.py
@@ -120,6 +120,18 @@ class Database(object):
120 self.db = sqlite3.connect(self.dbname) 120 self.db = sqlite3.connect(self.dbname)
121 self.db.row_factory = sqlite3.Row 121 self.db.row_factory = sqlite3.Row
122 122
123 with closing(self.db.cursor()) as cursor:
124 cursor.execute("SELECT sqlite_version()")
125
126 version = []
127 for v in cursor.fetchone()[0].split("."):
128 try:
129 version.append(int(v))
130 except ValueError:
131 version.append(v)
132
133 self.sqlite_version = tuple(version)
134
123 async def __aenter__(self): 135 async def __aenter__(self):
124 return self 136 return self
125 137
@@ -362,3 +374,28 @@ class Database(object):
362 ) 374 )
363 self.db.commit() 375 self.db.commit()
364 return cursor.rowcount != 0 376 return cursor.rowcount != 0
377
378 async def get_usage(self):
379 usage = {}
380 with closing(self.db.cursor()) as cursor:
381 if self.sqlite_version >= (3, 33):
382 table_name = "sqlite_schema"
383 else:
384 table_name = "sqlite_master"
385
386 cursor.execute(
387 f"""
388 SELECT name FROM {table_name} WHERE type = 'table' AND name NOT LIKE 'sqlite_%'
389 """
390 )
391 for row in cursor.fetchall():
392 cursor.execute(
393 """
394 SELECT COUNT() FROM %s
395 """
396 % row["name"],
397 )
398 usage[row["name"]] = {
399 "rows": cursor.fetchone()[0],
400 }
401 return usage