txn_idle: Document that --includeuser can be used to work around superuser checks
authorChristoph Berg <[email protected]>
Wed, 8 Jun 2016 20:14:59 +0000 (22:14 +0200)
committerChristoph Berg <[email protected]>
Wed, 8 Jun 2016 20:14:59 +0000 (22:14 +0200)
Close #81.

check_postgres.pl
t/02_txn_idle.t

index 84065bad6f311ca9bd2fb9b32842b975c1835a72..76514448f419e50563d73ee7e7ab4666acd6fede 100755 (executable)
@@ -9995,6 +9995,10 @@ are given and the numbers are unsigned, the units are assumed to be seconds.
 
 This action requires Postgres 8.3 or better.
 
+Superuser privileges are required to see the queries of all users in the system;
+UNKNOWN is returned if queries cannot be checked. To only include queries by
+the connecting user, use I<--includeuser>.
+
 Example 1: Give a warning if any connection has been idle in transaction for more than 15 seconds:
 
   check_postgres_txn_idle --port=5432 --warning='15 seconds'
index 0f841a3b7e8619ea9718958bc59903c249fd1f9b..87efe4ce757fa3e0f48a505106bb8641c6be6f8a 100644 (file)
@@ -6,7 +6,7 @@ use 5.006;
 use strict;
 use warnings;
 use Data::Dumper;
-use Test::More tests => 15;
+use Test::More tests => 16;
 use lib 't','.';
 use CP_Testing;
 
@@ -84,9 +84,15 @@ like ($cp->run(q{-w '1 for 2s'}), qr{1 idle transactions longer than 2s, longest
 $t = qq{$S returns an unknown if running as a non-superuser};
 my $olduser = $cp->{testuser};
 $cp->{testuser} = 'powerless_pete';
-like ($cp->run('-w 0'), qr{^$label UNKNOWN: .+superuser}, $t);
+like ($cp->run('-w 1'), qr{^$label UNKNOWN: .+superuser}, $t);
 
 $idle_dbh->commit;
 
+my $idle_dbh2 = $cp->test_database_handle({ testuser => 'powerless_pete' });
+$idle_dbh2->do('SELECT 1');
+sleep(1);
+$t = qq{$S identifies own queries even when running as a non-superuser};
+like ($cp->run('-w 1 --includeuser powerless_pete'), qr{longest idle in txn: \d+s}, $t);
+
 exit;