]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
sqlcounter: fixed configuration for PostgreSQL #3867
authorFederico Capoano <f.capoano@openwisp.io>
Sun, 24 Jan 2021 23:35:04 +0000 (18:35 -0500)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 29 Jan 2021 18:49:41 +0000 (18:49 +0000)
ABSTIME is deprecated since PostgreSQL 7.0 and removed in PostgreSQL 12.
GREATER doesn't seem to be documented, but GREATEST is available
since PostgreSQL 9.

doc/antora/modules/howto/pages/modules/sqlcounter/index.adoc
raddb/mods-config/sql/counter/postgresql/dailycounter.conf
raddb/mods-config/sql/counter/postgresql/monthlycounter.conf

index 0a5031faaf8853dfb10c0fd622bfd96ce285ff89..d9514d440cb5fc91337b6216687582e952505f16 100644 (file)
@@ -55,16 +55,16 @@ The respective lines for postgresql are:
 query = "SELECT SUM(AcctSessionTime) FROM radacct WHERE
 UserName='%{%k}'"
 
-query = "SELECT SUM(AcctSessionTime - GREATER((%b -
-AcctStartTime::ABSTIME::INT4), 0)) FROM radacct WHERE UserName=%{%k}'
-AND AcctStartTime::ABSTIME::INT4 + AcctSessionTime > '%b'"
+query = "SELECT SUM(AcctSessionTime - GREATEST((%b -
+EXTRACT(epoch FROM AcctStartTime)), 0)) FROM radacct WHERE UserName='%{%k}'
+AND EXTRACT(epoch FROM AcctStartTime) + AcctSessionTime > '%b'"
 
-query = "SELECT SUM(AcctSessionTime - GREATER((%b -
-AcctStartTime::ABSTIME::INT4), 0)) FROM radacct WHERE UserName='%{%k}'
-AND AcctStartTime::ABSTIME::INT4 + AcctSessionTime > %b"
+query = "SELECT SUM(AcctSessionTime - GREATEST((%b -
+EXTRACT(epoch FROM AcctStartTime)), 0)) FROM radacct WHERE UserName='%{%k}'
+AND EXTRACT(epoch FROM AcctStartTime) + AcctSessionTime > '%b'"
 ```
 
-If you are running postgres 7.x, you may not have a GREATER function.
+If you are running postgres 7.x, you may not have a GREATEST function.
 
 An example of one is:
 
index 19bbd22c2b0f2913b52a431ba9940bafa6d289b5..1e2f7fa811f97cf4a59cbc47b776eaba31cd88c9 100644 (file)
@@ -5,10 +5,10 @@
 #  below
 #
 query = "\
-       SELECT SUM(AcctSessionTime - GREATER((%%b - AcctStartTime::ABSTIME::INT4), 0)) \
+       SELECT SUM(AcctSessionTime - GREATEST((%%b - EXTRACT(epoch FROM AcctStartTime)), 0)) \
        FROM radacct \
        WHERE UserName='%{${key}}' \
-       AND AcctStartTime::ABSTIME::INT4 + AcctSessionTime > '%%b'"
+       AND EXTRACT(epoch FROM AcctStartTime) + AcctSessionTime > '%%b'"
 
 #
 #  This query ignores calls that started in a previous
@@ -19,7 +19,7 @@ query = "\
 #      SELECT SUM(AcctSessionTime) \
 #      FROM radacct \
 #      WHERE UserName='%{${key}}' \
-#      AND AcctStartTime::ABSTIME::INT4 > '%%b'"
+#      AND EXTRACT(epoch FROM AcctStartTime) > '%%b'"
 
 #
 #  This query is the same as above, but demonstrates an
@@ -30,5 +30,5 @@ query = "\
 #      SELECT SUM(AcctSessionTime) \
 #      FROM radacct \
 #      WHERE UserName='%{${key}}' \
-#      AND AcctStartTime::ABSTIME::INT4 BETWEEN '%%b' \
+#      AND EXTRACT(epoch FROM AcctStartTime) BETWEEN '%%b' \
 #      AND '%%e'"
index cb52180b55a1f656f38e04c6545c34f4bbb86820..cdaf83a58cff690423620c76949de5a42337cb47 100644 (file)
@@ -3,10 +3,10 @@
 #  involves more work for the SQL server than those
 #  below
 query = "\
-       SELECT SUM(AcctSessionTime - GREATER((%%b - AcctStartTime::ABSTIME::INT4), 0)) \
+       SELECT SUM(AcctSessionTime - GREATEST((%%b - EXTRACT(epoch FROM AcctStartTime)), 0)) \
        FROM radacct \
        WHERE UserName='%{${key}}' \
-       AND AcctStartTime::ABSTIME::INT4 + AcctSessionTime > '%%b'"
+       AND EXTRACT(epoch FROM AcctStartTime) + AcctSessionTime > '%%b'"
 
 #
 #  This query ignores calls that started in a previous
@@ -17,7 +17,7 @@ query = "\
 #      SELECT SUM(AcctSessionTime) \
 #      FROM radacct \
 #      WHERE UserName='%{${key}}' \
-#      AND AcctStartTime::ABSTIME::INT4 > '%%b'"
+#      AND EXTRACT(epoch FROM AcctStartTime) > '%%b'"
 
 #
 #  This query is the same as above, but demonstrates an
@@ -28,4 +28,4 @@ query = "\
 #      SELECT SUM(AcctSessionTime) \
 #      FROM radacct \
 #      WHERE UserName='%{${key}}' \
-#      AND AcctStartTime::ABSTIME::INT4 BETWEEN '%%b' AND '%%e'"
+#      AND EXTRACT(epoch FROM AcctStartTime) BETWEEN '%%b' AND '%%e'"