psqlプロセスのロック状態 (pg_locks, pg_stat_activity)

[概要]
コマンドラインからpsqlでDBに繋いだ場合、
pg_locks, pg_stat_activityではどのように表示されるか?

[詳細]
□ターミナル1

$ psql template1
template1=# select * from pg_locks;
 relation | database | transaction | pid  |      mode       | granted
----------+----------+-------------+------+-----------------+---------
    16839 |        1 |             | 3357 | AccessShareLock | t
          |          |     3958940 | 3357 | ExclusiveLock   | t
(2 rows)

template1=# select * from pg_stat_activity;
   datid   |    datname    | procpid | usesysid | usename  |        current_query         | query_start
-----------+---------------+---------+----------+----------+------------------------------+-------------
         1 | template1     |    3357 |        1 | postgres | <command string not enabled> |
(1 rows)

□ターミナル2
プロセスIDを表示する

$ ps aux | grep "psql template1" | awk '{print $2}'
3357

■まとめ
psql で接続したプロセスは、
pg_locksには、AccessShareLock/ExclusiveLockのセットで表示される。
pg_stat_activityにも表示されるが、今回確認した環境では、current_query(query_start)が表示されない。

pg_stat_activityのcurrent_queryが表示されない件については次に説明する。