From 2e7e6231e7ae6e4c3c7d3cbf27fa09ff1026e5d7 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Sun, 2 Feb 2020 23:45:12 +0100 Subject: [PATCH] Use number of distinct gravity domains as counted and stored by pihole -g itself. This drastically reduces the runtime of reload-lists. Signed-off-by: DL6ER --- src/database/gravity-db.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/database/gravity-db.c b/src/database/gravity-db.c index 31eec6b4..684da867 100644 --- a/src/database/gravity-db.c +++ b/src/database/gravity-db.c @@ -432,7 +432,15 @@ int gravityDB_count(const unsigned char list) char *querystr = NULL; // Build correct query string to be used depending on list to be read - if(asprintf(&querystr, "SELECT count(DISTINCT domain) FROM %s", tablename[list]) < 18) + if(list != GRAVITY_TABLE && asprintf(&querystr, "SELECT COUNT(DISTINCT domain) FROM %s", tablename[list]) < 18) + { + logg("readGravity(%u) - asprintf() error", list); + return false; + } + // We get the number of unique gravity domains as counted and stored by gravity. Counting the number + // of distinct domains in vw_gravity may take up to several minutes for very large blocking lists on + // very low-end devices such as the Raspierry Pi Zero + else if(list == GRAVITY_TABLE && asprintf(&querystr, "SELECT value FROM info WHERE property = 'gravity_count';") < 18) { logg("readGravity(%u) - asprintf() error", list); return false;