When using a --checkgroups file while tabulating,
valid but empty groups will be added with a posting
count of zero as needed. If all groups in a
sub-hierarchy are empty, the virtual '.ALL' group
for that sub-hierarchy was not created, though.
If local.test.dummy and local.test.binary were
both empty, both groups were added with a posting
count of '0', but local.test.ALL was not.
Now we loop through all hierarchy elements using
ParseHierarchies and add empty .ALL hierarchies as
needed.
Fixes #49.
Also fixing a typo in some comment. :-)
Signed-off-by: Thomas Hochstein <thh@inter.net>
# count postings per group
my %Postings;
while (($_) = $DBQuery->fetchrow_array) {
# count postings per group
my %Postings;
while (($_) = $DBQuery->fetchrow_array) {
- # get list oft newsgroups and hierarchies from Newsgroups:
+ # get list of newsgroups and hierarchies from Newsgroups:
my %Newsgroups = ListNewsgroups($_,$TLH,
$OptCheckgroupsFile ? \%ValidGroups : '');
# count each newsgroup and hierarchy once
my %Newsgroups = ListNewsgroups($_,$TLH,
$OptCheckgroupsFile ? \%ValidGroups : '');
# count each newsgroup and hierarchy once
if (%ValidGroups) {
foreach (sort keys %ValidGroups) {
if (!defined($Postings{$_})) {
if (%ValidGroups) {
foreach (sort keys %ValidGroups) {
if (!defined($Postings{$_})) {
- $Postings{$_} = 0 ;
- warn (sprintf("ADDED: %s as empty group\n",$_));
+ # expand newsgroup with hierarchies
+ my @Newsgroups = ParseHierarchies($_);
+ # add each empty newsgroup and empty hierarchies, too, as needed
+ foreach (@Newsgroups) {
+ if (!defined($Postings{$_})) {
+ $Postings{$_} = 0;
+ warn (sprintf("ADDED: %s as empty group\n",$_));
+ };
+ };
# delete old data for that month
if (!$OptTest) {
$DBQuery = $DBHandle->do(sprintf("DELETE FROM %s.%s WHERE month = ?",
# delete old data for that month
if (!$OptTest) {
$DBQuery = $DBHandle->do(sprintf("DELETE FROM %s.%s WHERE month = ?",