From 624035b5b8e6e646cc3fa6c549cd448514d20a83 Mon Sep 17 00:00:00 2001
From: Robert Anderson <randerson@lbsd.net>
Date: Mon, 24 May 2010 08:03:41 +0000
Subject: [PATCH] Deferred usage calculations to the database Indexed PeriodKey
 column

---
 database/core.tsql                                |  1 +
 smradius/modules/accounting/mod_accounting_sql.pm | 10 +++++-----
 smradiusd.conf                                    | 10 +++++-----
 3 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/database/core.tsql b/database/core.tsql
index c5c1564e..9ae65665 100644
--- a/database/core.tsql
+++ b/database/core.tsql
@@ -244,6 +244,7 @@ CREATE TABLE @PREFIX@accounting (
 	PeriodKey		VARCHAR(255)
 ) @CREATE_TABLE_SUFFIX@;
 CREATE INDEX @PREFIX@accounting_idx1 ON @PREFIX@accounting (Username);
+CREATE INDEX @PREFIX@accounting_idx2 ON @PREFIX@accounting (PeriodKey);
 
 
 
diff --git a/smradius/modules/accounting/mod_accounting_sql.pm b/smradius/modules/accounting/mod_accounting_sql.pm
index 15b97d85..2d05629d 100644
--- a/smradius/modules/accounting/mod_accounting_sql.pm
+++ b/smradius/modules/accounting/mod_accounting_sql.pm
@@ -193,11 +193,11 @@ sub init
 
 	$config->{'accounting_usage_query'} = '
 		SELECT
-			AcctInputOctets,
-			AcctOutputOctets,
-			AcctInputGigawords,
-			AcctOutputGigawords,
-			AcctSessionTime
+			SUM(AcctInputOctets) AS AcctInputOctets,
+			SUM(AcctOutputOctets) AS AcctOutputOctets,
+			SUM(AcctInputGigawords) AS AcctInputGigawords,
+			SUM(AcctOutputGigawords) AS AcctOutputGigawords,
+			SUM(AcctSessionTime) AS AcctSessionTime
 		FROM
 			@TP@accounting
 		WHERE
diff --git a/smradiusd.conf b/smradiusd.conf
index a9d482d5..ffb5661d 100644
--- a/smradiusd.conf
+++ b/smradiusd.conf
@@ -346,11 +346,11 @@ EOT
 
 accounting_usage_query=<<EOT
 	SELECT
-		AcctInputOctets,
-		AcctOutputOctets,
-		AcctInputGigawords,
-		AcctOutputGigawords,
-		AcctSessionTime
+		SUM(AcctInputOctets) AS AcctInputOctets,
+		SUM(AcctOutputOctets) AS AcctOutputOctets,
+		SUM(AcctInputGigawords) AS AcctInputGigawords,
+		SUM(AcctOutputGigawords) AS AcctOutputGigawords,
+		SUM(AcctSessionTime) AS AcctSessionTime
 	FROM
 		@TP@accounting
 	WHERE
-- 
GitLab