pg.ddx.io  pgsql-bugs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Fujii Masao <masao.fujii@oss.nttdata.com>
To: legrand legrand <legrand_legrand@hotmail.com>
To: pgsql-bugs@postgresql.org
Subject: Re: pg_stat_statements: rows not updated for CREATE TABLE AS SELECT statements
Date: Thu, 26 Mar 2020 21:41:34 +0900
Message-ID: <c9463107-d605-9d9e-54e5-f065f2fc3c1f@oss.nttdata.com> (raw)
In-Reply-To: <1584293755198-0.post@n3.nabble.com>
References: <1584293755198-0.post@n3.nabble.com>



On 2020/03/16 2:35, legrand legrand wrote:
> Hello,
> it seems that column "rows" is not updated after CREATE TABLE AS SELECT
> statements.
> 
> pg13devel (snapshot 2020-03-14)
> postgres=# select name,setting from pg_settings where name like 'pg_stat%';
>                 name               | setting
> ----------------------------------+---------
>   pg_stat_statements.max           | 5000
>   pg_stat_statements.save          | on
>   pg_stat_statements.track         | all
>   pg_stat_statements.track_utility | on
> (4 rows)
> 
> postgres=# select pg_stat_statements_reset();
>   pg_stat_statements_reset
> --------------------------
> 
> (1 row)
> 
> 
> postgres=# create table ctas as select * from pg_class;
> SELECT 386
> postgres=# select query,calls,rows from pg_stat_statements where query like
> 'create table ctas%';
>                      query                    | calls | rows
> ---------------------------------------------+-------+------
>   create table ctas as select * from pg_class |     1 |    0
> (1 row)

Thanks for the report! Yeah, it seems worth improving this.

> after modifying the following line in pg_stat_statements.c
> 
> rows = (qc && qc->commandTag == CMDTAG_COPY) ? qc->nprocessed : 0;
> into
> rows = (qc && (qc->commandTag == CMDTAG_COPY
>                        || qc->commandTag == CMDTAG_SELECT)
>             ) ? qc->nprocessed : 0;
> 
> column rows seems properly updated.
> 
> What do you think about that fix ?

The utility commands that return CMDTAG_SELECT are
only CREATE TABLE AS SELECT and CREATE MATERIALIZED VIEW?
I'd just like to confirm that there is no case where "rows" must not
be counted when CMDTAG_SELECT is returned.

BTW, "rows" should be updated when FETCH or MOVE is executed
because each command returns or affects the rows?

Regards,

-- 
Fujii Masao
NTT DATA CORPORATION
Advanced Platform Technology Group
Research and Development Headquarters





view thread (8+ messages)  latest in thread

Message-ID: <c9463107-d605-9d9e-54e5-f065f2fc3c1f@oss.nttdata.com>
Permalink:  ../c9463107-d605-9d9e-54e5-f065f2fc3c1f@oss.nttdata.com/
Also on:    postgresql.org/message-id/c9463107-d605-9d9e-54e5-f065f2fc3c1f@oss.nttdata.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-bugs@postgresql.org
  Cc: masao.fujii@oss.nttdata.com, legrand_legrand@hotmail.com
  Subject: Re: pg_stat_statements: rows not updated for CREATE TABLE AS SELECT statements
  In-Reply-To: <c9463107-d605-9d9e-54e5-f065f2fc3c1f@oss.nttdata.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox