@@ -7274,23 +7274,26 @@ sub check_sequence {
7274
7274
my %seqinfo ;
7275
7275
my %seqperf ;
7276
7276
my $multidb = @{$info -> {db }} > 1 ? " $db ->{dbname}." : ' ' ;
7277
- for my $r (@{$db -> {slurp }}) {
7277
+ my @seq_sql ;
7278
+ for my $r (@{$db -> {slurp }}) { # for each sequence, create SQL command to inspect it
7278
7279
my ($schema , $seq , $seqname , $typename ) = @$r {qw/ nspname seqname safename typname / };
7279
7280
next if skip_item($seq );
7280
7281
my $maxValue = $typename eq ' int2' ? $MAXINT2 : $typename eq ' int4' ? $MAXINT4 : $MAXINT8 ;
7281
- $SQL = qq{
7282
- SELECT last_value, slots, used, ROUND(used/slots*100) AS percent,
7282
+ my $seqname_l = $seqname ;
7283
+ $seqname_l =~ s / '/ ''/ g ; # SQL literal quoting (name is already identifier-quoted)
7284
+ push @seq_sql , qq{
7285
+ SELECT '$seqname_l ' AS seqname, last_value, slots, used, ROUND(used/slots*100) AS percent,
7283
7286
CASE WHEN slots < used THEN 0 ELSE slots - used END AS numleft
7284
7287
FROM (
7285
7288
SELECT last_value,
7286
7289
CEIL((LEAST(max_value, $maxValue )-min_value::numeric+1)/increment_by::NUMERIC) AS slots,
7287
7290
CEIL((last_value-min_value::numeric+1)/increment_by::NUMERIC) AS used
7288
7291
FROM $seqname ) foo
7289
7292
} ;
7290
-
7291
- my $seqinfo = run_command($SQL , { target => $db });
7292
- my $r2 = $seqinfo -> {db }[0]{slurp }[0];
7293
- my ($last , $slots , $used , $percent , $left ) = @$r2 {qw/ last_value slots used percent numleft / };
7293
+ }
7294
+ my $seqinfo = run_command(join ( " \n UNION ALL \n " , @seq_sql ), { target => $db }); # execute all SQL commands at once
7295
+ for my $r2 (@{ $seqinfo -> {db }[0]{slurp }}) { # now look at all results
7296
+ my ($seqname , $ last , $slots , $used , $percent , $left ) = @$r2 {qw/ seqname last_value slots used percent numleft / };
7294
7297
if (! defined $last ) {
7295
7298
ndie msg(' seq-die' , $seqname );
7296
7299
}
@@ -9825,6 +9828,8 @@ =head1 HISTORY
9825
9828
9826
9829
Declare POD encoding to be utf8. (Christoph Berg)
9827
9830
9831
+ Query all sequences per DB in parallel for action=sequence. (Christoph Berg)
9832
+
9828
9833
=item B<Version 2.21.0 > September 24, 2013
9829
9834
9830
9835
Fix issue with SQL steps in check_pgagent_jobs for sql steps which perform deletes
0 commit comments