@@ -7274,23 +7274,26 @@ sub check_sequence {
72747274 my %seqinfo ;
72757275 my %seqperf ;
72767276 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
72787279 my ($schema , $seq , $seqname , $typename ) = @$r {qw/ nspname seqname safename typname / };
72797280 next if skip_item($seq );
72807281 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,
72837286 CASE WHEN slots < used THEN 0 ELSE slots - used END AS numleft
72847287FROM (
72857288 SELECT last_value,
72867289 CEIL((LEAST(max_value, $maxValue )-min_value::numeric+1)/increment_by::NUMERIC) AS slots,
72877290 CEIL((last_value-min_value::numeric+1)/increment_by::NUMERIC) AS used
72887291FROM $seqname ) foo
72897292} ;
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 / };
72947297 if (! defined $last ) {
72957298 ndie msg(' seq-die' , $seqname );
72967299 }
@@ -9825,6 +9828,8 @@ =head1 HISTORY
98259828
98269829 Declare POD encoding to be utf8. (Christoph Berg)
98279830
9831+ Query all sequences per DB in parallel for action=sequence. (Christoph Berg)
9832+
98289833=item B<Version 2.21.0 > September 24, 2013
98299834
98309835 Fix issue with SQL steps in check_pgagent_jobs for sql steps which perform deletes
0 commit comments