pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Julien Rouhaud <rjuju123@gmail.com>
To: Magnus Hagander <magnus@hagander.net>
Cc: Sergei Kornilov <sk@zsrv.org>
Cc: legrand legrand <legrand_legrand@hotmail.com>
Cc: pgsql-hackers@postgresql.org <pgsql-hackers@postgresql.org>
Subject: Re: pg_stat_statements oddity with track = all
Date: Thu, 8 Apr 2021 20:05:05 +0800
Message-ID: <20210408120505.7zinijtdexbyghvb@nol> (raw)
In-Reply-To: <CABUevEycR4_3d8s2dU4zJFGs692WVFm0HK5YzFw=86A8J_FkvQ@mail.gmail.com>
References: <109201607072216@mail.yandex.ru>
	<20201204100913.GB76762@nol>
	<20201227083857.GA97249@nol>
	<CABUevExpRPZ-dpERYwvL85r5a7ePRPmAU9twkjTs3gvDSU2Stw@mail.gmail.com>
	<20210307073936.mvhwxsol4rkt3c5v@nol>
	<CABUevEwnTJHSzq5js5NuBtRS=JdhpZymT9AK1LM7uk4K0B1X0A@mail.gmail.com>
	<20210309023954.tbvzds3dire5bcks@nol>
	<CABUevEzh_cpce8ptrOeAxakEKbiQHwwGAXYGMpezfEuK2XQ2Yg@mail.gmail.com>
	<20210316153530.cesegc7knnqfn5ry@nol>
	<CABUevEycR4_3d8s2dU4zJFGs692WVFm0HK5YzFw=86A8J_FkvQ@mail.gmail.com>

On Thu, Apr 08, 2021 at 10:30:53AM +0200, Magnus Hagander wrote:
> 
> I agree. If those numbers are indeed representable, it seems like
> better to pay that overhead than to pay the overhead of trying to
> de-dupe it.
> 
> Let's hope they are :)

:)

> Looking through ti again my feeling said the toplevel column should go
> after the queryid and not before, but I'm not going to open up a
> bikeshed over that.
> 
> I've added in a comment to cover that one that you removed (if you did
> send an updated patch as you said, then I missed it -- sorry), and
> applied the rest.

Oops, somehow I totally forgot to send the new patch, sorry :(

While looking at the patch, I unfortunately just realize that I unnecessarily
bumped the version to 1.10, as 1.9 was already new as of pg14.  Honestly I have
no idea why I used 1.10 at that time.  Version numbers are not a scarce
resource but maybe it would be better to keep 1.10 for a future major postgres
version?

If yes, PFA a patch to merge 1.10 in 1.9.

Attachments:

v1-0001-Don-t-bump-pg_stat_statements-to-1.10-in-REL_14_S.patch (text/x-diff, 8.7K) download From b2b3102fa16d2b02d1838cf7853d0869dbb966cc Mon Sep 17 00:00:00 2001 From: Julien Rouhaud <julien.rouhaud@free.fr> Date: Thu, 8 Apr 2021 19:52:33 +0800 Subject: [PATCH v1] Don't bump pg_stat_statements to 1.10 in REL_14_STABLE. --- contrib/pg_stat_statements/Makefile | 3 +- .../pg_stat_statements--1.8--1.9.sql | 53 +++++++++++++++++ .../pg_stat_statements--1.9--1.10.sql | 57 ------------------- .../pg_stat_statements/pg_stat_statements.c | 18 +++--- .../pg_stat_statements.control | 2 +- 5 files changed, 64 insertions(+), 69 deletions(-) delete mode 100644 contrib/pg_stat_statements/pg_stat_statements--1.9--1.10.sql diff --git a/contrib/pg_stat_statements/Makefile b/contrib/pg_stat_statements/Makefile index cab4f626ad..3ec627b956 100644 --- a/contrib/pg_stat_statements/Makefile +++ b/contrib/pg_stat_statements/Makefile @@ -6,8 +6,7 @@ OBJS = \ pg_stat_statements.o EXTENSION = pg_stat_statements -DATA = pg_stat_statements--1.4.sql \ - pg_stat_statements--1.9--1.10.sql pg_stat_statements--1.8--1.9.sql \ +DATA = pg_stat_statements--1.4.sql pg_stat_statements--1.8--1.9.sql \ pg_stat_statements--1.7--1.8.sql pg_stat_statements--1.6--1.7.sql \ pg_stat_statements--1.5--1.6.sql pg_stat_statements--1.4--1.5.sql \ pg_stat_statements--1.3--1.4.sql pg_stat_statements--1.2--1.3.sql \ diff --git a/contrib/pg_stat_statements/pg_stat_statements--1.8--1.9.sql b/contrib/pg_stat_statements/pg_stat_statements--1.8--1.9.sql index 3504ca7eb1..c45223f888 100644 --- a/contrib/pg_stat_statements/pg_stat_statements--1.8--1.9.sql +++ b/contrib/pg_stat_statements/pg_stat_statements--1.8--1.9.sql @@ -16,3 +16,56 @@ CREATE VIEW pg_stat_statements_info AS SELECT * FROM pg_stat_statements_info(); GRANT SELECT ON pg_stat_statements_info TO PUBLIC; + +/* First we have to remove them from the extension */ +ALTER EXTENSION pg_stat_statements DROP VIEW pg_stat_statements; +ALTER EXTENSION pg_stat_statements DROP FUNCTION pg_stat_statements(boolean); + +/* Then we can drop them */ +DROP VIEW pg_stat_statements; +DROP FUNCTION pg_stat_statements(boolean); + +/* Now redefine */ +CREATE FUNCTION pg_stat_statements(IN showtext boolean, + OUT userid oid, + OUT dbid oid, + OUT toplevel bool, + OUT queryid bigint, + OUT query text, + OUT plans int8, + OUT total_plan_time float8, + OUT min_plan_time float8, + OUT max_plan_time float8, + OUT mean_plan_time float8, + OUT stddev_plan_time float8, + OUT calls int8, + OUT total_exec_time float8, + OUT min_exec_time float8, + OUT max_exec_time float8, + OUT mean_exec_time float8, + OUT stddev_exec_time float8, + OUT rows int8, + OUT shared_blks_hit int8, + OUT shared_blks_read int8, + OUT shared_blks_dirtied int8, + OUT shared_blks_written int8, + OUT local_blks_hit int8, + OUT local_blks_read int8, + OUT local_blks_dirtied int8, + OUT local_blks_written int8, + OUT temp_blks_read int8, + OUT temp_blks_written int8, + OUT blk_read_time float8, + OUT blk_write_time float8, + OUT wal_records int8, + OUT wal_fpi int8, + OUT wal_bytes numeric +) +RETURNS SETOF record +AS 'MODULE_PATHNAME', 'pg_stat_statements_1_9' +LANGUAGE C STRICT VOLATILE PARALLEL SAFE; + +CREATE VIEW pg_stat_statements AS + SELECT * FROM pg_stat_statements(true); + +GRANT SELECT ON pg_stat_statements TO PUBLIC; diff --git a/contrib/pg_stat_statements/pg_stat_statements--1.9--1.10.sql b/contrib/pg_stat_statements/pg_stat_statements--1.9--1.10.sql deleted file mode 100644 index f97d16497d..0000000000 --- a/contrib/pg_stat_statements/pg_stat_statements--1.9--1.10.sql +++ /dev/null @@ -1,57 +0,0 @@ -/* contrib/pg_stat_statements/pg_stat_statements--1.9--1.10.sql */ - --- complain if script is sourced in psql, rather than via ALTER EXTENSION -\echo Use "ALTER EXTENSION pg_stat_statements UPDATE TO '1.10'" to load this file. \quit - -/* First we have to remove them from the extension */ -ALTER EXTENSION pg_stat_statements DROP VIEW pg_stat_statements; -ALTER EXTENSION pg_stat_statements DROP FUNCTION pg_stat_statements(boolean); - -/* Then we can drop them */ -DROP VIEW pg_stat_statements; -DROP FUNCTION pg_stat_statements(boolean); - -/* Now redefine */ -CREATE FUNCTION pg_stat_statements(IN showtext boolean, - OUT userid oid, - OUT dbid oid, - OUT toplevel bool, - OUT queryid bigint, - OUT query text, - OUT plans int8, - OUT total_plan_time float8, - OUT min_plan_time float8, - OUT max_plan_time float8, - OUT mean_plan_time float8, - OUT stddev_plan_time float8, - OUT calls int8, - OUT total_exec_time float8, - OUT min_exec_time float8, - OUT max_exec_time float8, - OUT mean_exec_time float8, - OUT stddev_exec_time float8, - OUT rows int8, - OUT shared_blks_hit int8, - OUT shared_blks_read int8, - OUT shared_blks_dirtied int8, - OUT shared_blks_written int8, - OUT local_blks_hit int8, - OUT local_blks_read int8, - OUT local_blks_dirtied int8, - OUT local_blks_written int8, - OUT temp_blks_read int8, - OUT temp_blks_written int8, - OUT blk_read_time float8, - OUT blk_write_time float8, - OUT wal_records int8, - OUT wal_fpi int8, - OUT wal_bytes numeric -) -RETURNS SETOF record -AS 'MODULE_PATHNAME', 'pg_stat_statements_1_10' -LANGUAGE C STRICT VOLATILE PARALLEL SAFE; - -CREATE VIEW pg_stat_statements AS - SELECT * FROM pg_stat_statements(true); - -GRANT SELECT ON pg_stat_statements TO PUBLIC; diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c index fc2677643b..24b453adcb 100644 --- a/contrib/pg_stat_statements/pg_stat_statements.c +++ b/contrib/pg_stat_statements/pg_stat_statements.c @@ -120,7 +120,7 @@ typedef enum pgssVersion PGSS_V1_2, PGSS_V1_3, PGSS_V1_8, - PGSS_V1_10 + PGSS_V1_9 } pgssVersion; typedef enum pgssStoreKind @@ -299,7 +299,7 @@ PG_FUNCTION_INFO_V1(pg_stat_statements_reset_1_7); PG_FUNCTION_INFO_V1(pg_stat_statements_1_2); PG_FUNCTION_INFO_V1(pg_stat_statements_1_3); PG_FUNCTION_INFO_V1(pg_stat_statements_1_8); -PG_FUNCTION_INFO_V1(pg_stat_statements_1_10); +PG_FUNCTION_INFO_V1(pg_stat_statements_1_9); PG_FUNCTION_INFO_V1(pg_stat_statements); PG_FUNCTION_INFO_V1(pg_stat_statements_info); @@ -1414,7 +1414,7 @@ pg_stat_statements_reset(PG_FUNCTION_ARGS) #define PG_STAT_STATEMENTS_COLS_V1_2 19 #define PG_STAT_STATEMENTS_COLS_V1_3 23 #define PG_STAT_STATEMENTS_COLS_V1_8 32 -#define PG_STAT_STATEMENTS_COLS_V1_10 33 +#define PG_STAT_STATEMENTS_COLS_V1_9 33 #define PG_STAT_STATEMENTS_COLS 33 /* maximum of above */ /* @@ -1428,11 +1428,11 @@ pg_stat_statements_reset(PG_FUNCTION_ARGS) * function. Unfortunately we weren't bright enough to do that for 1.1. */ Datum -pg_stat_statements_1_10(PG_FUNCTION_ARGS) +pg_stat_statements_1_9(PG_FUNCTION_ARGS) { bool showtext = PG_GETARG_BOOL(0); - pg_stat_statements_internal(fcinfo, PGSS_V1_10, showtext); + pg_stat_statements_internal(fcinfo, PGSS_V1_9, showtext); return (Datum) 0; } @@ -1556,8 +1556,8 @@ pg_stat_statements_internal(FunctionCallInfo fcinfo, if (api_version != PGSS_V1_8) elog(ERROR, "incorrect number of output arguments"); break; - case PG_STAT_STATEMENTS_COLS_V1_10: - if (api_version != PGSS_V1_10) + case PG_STAT_STATEMENTS_COLS_V1_9: + if (api_version != PGSS_V1_9) elog(ERROR, "incorrect number of output arguments"); break; default: @@ -1651,7 +1651,7 @@ pg_stat_statements_internal(FunctionCallInfo fcinfo, values[i++] = ObjectIdGetDatum(entry->key.userid); values[i++] = ObjectIdGetDatum(entry->key.dbid); - if (api_version >= PGSS_V1_10) + if (api_version >= PGSS_V1_9) values[i++] = BoolGetDatum(entry->key.toplevel); if (is_allowed_role || entry->key.userid == userid) @@ -1790,7 +1790,7 @@ pg_stat_statements_internal(FunctionCallInfo fcinfo, api_version == PGSS_V1_2 ? PG_STAT_STATEMENTS_COLS_V1_2 : api_version == PGSS_V1_3 ? PG_STAT_STATEMENTS_COLS_V1_3 : api_version == PGSS_V1_8 ? PG_STAT_STATEMENTS_COLS_V1_8 : - api_version == PGSS_V1_10 ? PG_STAT_STATEMENTS_COLS_V1_10 : + api_version == PGSS_V1_9 ? PG_STAT_STATEMENTS_COLS_V1_9 : -1 /* fail if you forget to update this assert */ )); tuplestore_putvalues(tupstore, tupdesc, values, nulls); diff --git a/contrib/pg_stat_statements/pg_stat_statements.control b/contrib/pg_stat_statements/pg_stat_statements.control index 0747e48138..2f1ce6ed50 100644 --- a/contrib/pg_stat_statements/pg_stat_statements.control +++ b/contrib/pg_stat_statements/pg_stat_statements.control @@ -1,5 +1,5 @@ # pg_stat_statements extension comment = 'track planning and execution statistics of all SQL statements executed' -default_version = '1.10' +default_version = '1.9' module_pathname = '$libdir/pg_stat_statements' relocatable = true -- 2.30.1

view thread (32+ messages)  latest in thread

Message-ID: <20210408120505.7zinijtdexbyghvb@nol>
Permalink:  ../20210408120505.7zinijtdexbyghvb@nol/
Also on:    postgresql.org/message-id/20210408120505.7zinijtdexbyghvb@nol

 ·  · 

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-hackers@postgresql.org
  Cc: rjuju123@gmail.com, magnus@hagander.net, sk@zsrv.org, legrand_legrand@hotmail.com
  Subject: Re: pg_stat_statements oddity with track = all
  In-Reply-To: <20210408120505.7zinijtdexbyghvb@nol>

* 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