fix A/R report
[freeside.git] / bin / pg-sizer
1 #!/usr/bin/perl -w
2
3 use strict;
4 use FS::UID qw(adminsuidsetup dbh);
5 use FS::Schema qw(dbdef);
6 use FS::Record; #why is this necessary
7
8 adminsuidsetup shift or die "usage: pg-sizer user";
9
10 my $verbose = 1;
11
12 my %size = ();
13 my %prettysize = ();
14
15 foreach my $table ( dbdef->tables ) {
16   warn "sizing $table...\n" if $verbose;
17   my $sth = dbh->prepare("SELECT pg_total_relation_size('$table')")
18     or die dbh->errstr;
19   $sth->execute or die $sth->errstr;
20   my $size = $sth->fetchrow_arrayref->[0];
21   $size{$table} = $size;
22
23   my $psth = dbh->prepare("SELECT pg_size_pretty( $size )")
24     or die dbh->errstr;
25   $psth->execute or die $psth->errstr;
26   my $prettysize = $psth->fetchrow_arrayref->[0];
27   $prettysize{$table} = $prettysize;
28
29   warn "$table: $prettysize{$table}\n" if $verbose;
30 }
31
32 foreach my $table ( reverse sort { $size{$a} <=> $size{$b} } keys %size ) {
33   #print "$table: $size{$table}\n";
34   print "$table: $prettysize{$table}\n";
35 }
36