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:
[text/x-diff] v1-0001-Don-t-bump-pg_stat_statements-to-1.10-in-REL_14_S.patch (8.7K, ../20210408120505.7zinijtdexbyghvb@nol/2-v1-0001-Don-t-bump-pg_stat_statements-to-1.10-in-REL_14_S.patch)
download | inline diff:
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/Makefileindex 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.sqlindex 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.sqldeleted file mode 100644index 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.cindex 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.controlindex 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
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