I think I should also report it as a bug since logically, it couldn't exist.
On Wed, Dec 18, 2019 at 1:04 AM Tom Lane <t...@sss.pgh.pa.us> wrote: > Kaijiang Chen <chenkaiji...@gmail.com> writes: > > I'm using postgres 9.4.17 on centos 7. > > I check the running queries with the following SQL: > > SELECT > > procpid, > > start, > > now() - start AS lap, > > current_query > > FROM > > (SELECT > > backendid, > > pg_stat_get_backend_pid(S.backendid) AS procpid, > > pg_stat_get_backend_activity_start(S.backendid) AS start, > > pg_stat_get_backend_activity(S.backendid) AS current_query > > FROM > > (SELECT pg_stat_get_backend_idset() AS backendid) AS S > > ) AS S > > WHERE > > current_query <> '<IDLE>' > > ORDER BY > > lap DESC; > > Don't know where you got this query from, but it's wrong for any PG > version more recent than (I think) 9.1. We don't use "<IDLE>" as an > indicator of idle sessions anymore; rather, those can be identified > by having state = 'idle'. What's in the query column for such a session > is its last query. > > > Then, I found a SQL that has run for some days (and still running): > > procpid | 32638 > > start | 2019-11-25 16:29:29.529318+08 > > lap | 21 days 18:24:54.707369 > > current_query | DEALLOCATE pdo_stmt_00000388 > > It's not running. That was the last query it ran, back in November :-( > You could zap the session with pg_terminate_backend(), but > pg_cancel_backend() is not going to have any effect because there's > no active query. > > regards, tom lane >