}
## Use pg_stat_activity to find a match, then terminate it
- $SQL = 'SELECT 1 FROM pg_stat_activity WHERE procpid = ? AND query_start = ?';
+ my $pidcol = $maindbh->{pg_server_version} >= 90200 ? 'pid' : 'procpid';
+ $SQL = "SELECT 1 FROM pg_stat_activity WHERE $pidcol = ? AND query_start = ?";
my $SQLC = 'SELECT pg_cancel_backend(?)';
my $total = 0;
for my $dbname (sort keys %{ $self->{sdb} }) {
? 'clock_timestamp()' : 'timeofday()::timestamptz';
## Fetch information about the conflicting process
+ my $pidcol = $dldbh->{pg_server_version} >= 90200 ? 'pid' : 'procpid';
my $queryinfo =$dldbh->prepare(qq{
SELECT
current_query AS query,
CASE WHEN client_port <= 0 THEN 0 ELSE client_port END AS port,
usename AS user
FROM pg_stat_activity
-WHERE procpid = ?
+WHERE $pidcol = ?
});
$queryinfo->execute($process);
my $q = $queryinfo->fetchall_arrayref({})->[0];
my $dbh = $self->connect_database($clustername, 'postgres');
if (database_exists($dbh,'bucardo')) {
## Kick off all other people
- $SQL = q{SELECT procpid FROM pg_stat_activity WHERE datname = 'bucardo' and procpid <> pg_backend_pid()};
+ my $pidcol = $dbh->{pg_server_version} >= 90200 ? 'pid' : 'procpid';
+ $SQL = qq{SELECT $pidcol FROM pg_stat_activity WHERE datname = 'bucardo' and $pidcol <> pg_backend_pid()};
for my $row (@{$dbh->selectall_arrayref($SQL)}) {
my $pid = $row->[0];
$SQL = 'SELECT pg_terminate_backend(?)';