Thread: Logging affected rows

Logging affected rows

From
classical_89
Date:
When i run a query , i just only want to the affected rows are logged to log
file,What can i do ? .Is there a parameter in postgresql.conf to do that ?
.Thanks in advance



--
View this message in context: http://postgresql.1045698.n5.nabble.com/Logging-affected-rows-tp5740689.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.


Re: Logging affected rows

From
Raghavendra
Date:
On Thu, Jan 17, 2013 at 9:18 AM, classical_89 <luongnx512@gmail.com> wrote:
When i run a query , i just only want to the affected rows are logged to log
file,What can i do ? .Is there a parameter in postgresql.conf to do that ?
.Thanks in advance


AFAIK, I don't think we can log only affected rows of the query. But you can log the EXPLAIN ANALYZE output of the query which includes affected rows using AUTO_EXPLAIN contrib module. 

Eg:-

postgres=# set auto_explain.log_analyze TO on;
SET
postgres=# load 'auto_explain';
LOAD
postgres=# select count(*) from cities ;
 count
-------
     2
(1 row)

In logs:

2012-12-06 03:27:57.104 IST [17410]: [78-1] db=postgres,user=postgres LOG:  statement: select count(*) from cities ;
2012-12-06 03:27:57.105 IST [17410]: [79-1] db=postgres,user=postgres LOG:  duration: 0.024 ms  plan:
        Query Text: select count(*) from cities ;
        Aggregate  (cost=1.02..1.03 rows=1 width=0) (actual time=0.015..0.015 rows=1 loops=1)
          Output: count(*)
          ->  Seq Scan on public.cities  (cost=0.00..1.02 rows=2 width=0) (actual time=0.009..0.010 rows=2 loops=1)
                Output: city, location

---
Regards,
Raghavendra
EnterpriseDB Corporation


Re: Logging affected rows

From
Raghavendra
Date:

On Sat, Jan 19, 2013 at 12:53 PM, Raghavendra <raghavendra.rao@enterprisedb.com> wrote:
On Thu, Jan 17, 2013 at 9:18 AM, classical_89 <luongnx512@gmail.com> wrote:
When i run a query , i just only want to the affected rows are logged to log
file,What can i do ? .Is there a parameter in postgresql.conf to do that ?
.Thanks in advance


AFAIK, I don't think we can log only affected rows of the query. But you can log the EXPLAIN ANALYZE output of the query which includes affected rows using AUTO_EXPLAIN contrib module. 

Eg:-

postgres=# set auto_explain.log_analyze TO on;
SET
postgres=# load 'auto_explain';
LOAD
postgres=# select count(*) from cities ;
 count
-------
     2
(1 row)

In logs:

2012-12-06 03:27:57.104 IST [17410]: [78-1] db=postgres,user=postgres LOG:  statement: select count(*) from cities ;
2012-12-06 03:27:57.105 IST [17410]: [79-1] db=postgres,user=postgres LOG:  duration: 0.024 ms  plan:
        Query Text: select count(*) from cities ;
        Aggregate  (cost=1.02..1.03 rows=1 width=0) (actual time=0.015..0.015 rows=1 loops=1)
          Output: count(*)
          ->  Seq Scan on public.cities  (cost=0.00..1.02 rows=2 width=0) (actual time=0.009..0.010 rows=2 loops=1)
                Output: city, location


Correction to my previous email, first you need to LOAD module and then enable log_analyze. Copy/Paste mistake :) 
 
--Raghav