Received: from localhost (unknown [200.46.208.211]) by mail.postgresql.org (Postfix) with ESMTP id 9717C63381E for ; Wed, 25 Mar 2009 06:28:08 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.208.211]) (amavisd-maia, port 10024) with ESMTP id 95279-04 for ; Wed, 25 Mar 2009 06:27:58 -0300 (ADT) X-Greylist: delayed 00:19:10.397013 by SQLgrey-1.7.6 Received: from serv2.oss.ntt.co.jp (serv2.oss.ntt.co.jp [222.151.198.100]) by mail.postgresql.org (Postfix) with ESMTP id 5E90A63297B for ; Wed, 25 Mar 2009 06:28:01 -0300 (ADT) Received: from serv2.oss.ntt.co.jp (localhost [127.0.0.1]) by serv2.oss.ntt.co.jp (Postfix) with ESMTP id C4DFE2480FB for ; Wed, 25 Mar 2009 18:08:45 +0900 (JST) Received: from serv1.oss.ntt.co.jp (serv1.localdomain [172.19.0.2]) by serv2.oss.ntt.co.jp (Postfix) with ESMTP id B43722480EE for ; Wed, 25 Mar 2009 18:08:45 +0900 (JST) Received: from [127.0.0.1] (unknown [172.17.1.145]) by serv1.oss.ntt.co.jp (Postfix) with ESMTP id 8D65C104167 for ; Wed, 25 Mar 2009 18:08:45 +0900 (JST) Message-ID: <49C9F49B.8020003@oss.ntt.co.jp> Date: Wed, 25 Mar 2009 18:08:43 +0900 From: Tatsuhito Kasahara User-Agent: Thunderbird 1.5.0.9 (Windows/20061207) MIME-Version: 1.0 To: pgsql-hackers@postgresql.org Subject: display previous query string of idle-in-transaction Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200903/975 X-Sequence-Number: 135653 Hi. Now, we can check the running query string by pg_stat_activity.current_query. If we can also check previous query_string of idle-in-transaction, it is useful for analysis of long transaction problem. Long-transaction is a trouble, because it prevents defragmentation of HOT and VACUUM. And long-transaction tends to be it in a state of "idle in transaction". (BEGIN -> SOME SQL -> .... (long-transactin) ....) So, I sometimes want to know what query (main cause) was done before transaction which have been practiced for a long time. I think that we are glad when we can confirm it in the following form. # We will be able to use debug_query_string in postgres.c for this purpose. ================================================================= =# SELECT current_query FROM pg_stat_activity WHERE procpid <> pg_backend_pid(); current_query --------------------------------------------------------------- in transaction [prev]: SELECT * FROM pg_class limit 1; ================================================================= Thoughts? Best regards. -- Tatsuhito Kasahara kasahara.tatsuhito@oss.ntt.co.jp