Fix version queries.

Add month to WHERE clause, use bind values.

Signed-off-by: Thomas Hochstein <thh@thh.name>
This commit is contained in:
Thomas Hochstein 2025-05-31 09:38:41 +02:00
parent 07e4543717
commit d02ae5e2ff
2 changed files with 9 additions and 4 deletions

View file

@ -215,10 +215,14 @@ while (my ($Month, $Key, $Value) = $DBQuery->fetchrow_array) {
# output client versions
if ($OptVersions) {
### get client versions
# $SQLWhereClause without 'ALL' version
# $SQLWhereClause without 'ALL' version, with client and month set
$SQLWhereClause = SQLBuildClause('where',$SQLWherePeriod,$SQLWhereNames,
$ExcludeSums,"version != 'ALL'","client = '$Client'",
$ExcludeSums,"version != 'ALL'",
'client = ?','month = ?',
&SQLSetBounds('default',$LowBound,$UppBound));
# push client and month to @SQLVersBindNames
my @SQLVersBindNames = @SQLBindNames;
push (@SQLVersBindNames, ($Client, $Month));
# save length of longest client
my $ClientMaxLenght = $MaxLength;
@ -227,7 +231,7 @@ while (my ($Month, $Key, $Value) = $DBQuery->fetchrow_array) {
# for formatting purposes
my ($MaxLength,$MaxValLength) = &GetMaxLength($DBHandle,$Conf{'DBTable'},
'version','postings',$SQLWhereClause,
'',@SQLBindNames);
'',@SQLVersBindNames);
if ($MaxLength) {
# add lenght of '- '
$MaxLength += 2;
@ -242,7 +246,7 @@ while (my ($Month, $Key, $Value) = $DBQuery->fetchrow_array) {
$SQLWhereClause,$SQLGroupClause,
$SQLOrderClause));
# execute query
$DBVersQuery->execute(@SQLBindNames)
$DBVersQuery->execute(@SQLVersBindNames)
or &Bleat(2,sprintf("Can't get version data for %s from %s.%s: %s\n",
$CaptionPeriod,$Conf{'DBDatabase'},$Conf{'DBTable'},
$DBI::errstr));

View file

@ -12,6 +12,7 @@ NewsStats 0.4.0 (unreleased)
* DBClnts: set version length to 50.
* gatherstats: Truncate overlong clients or versions.
* gatherstats: Remove whitespace from client and version.
* Fix version queries.
NewsStats 0.3.0 (2025-05-18)
* Extract GroupStats (in gatherstats) to subroutine.