Re: New function pg_stat_statements_reset_query() to reset statistics of a specific query

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
Cc: Haribabu Kommi <kommi(dot)haribabu(at)gmail(dot)com>, Magnus Hagander <magnus(at)hagander(dot)net>, sk(at)zsrv(dot)org, Michael Paquier <michael(at)paquier(dot)xyz>, Robert Haas <robertmhaas(at)gmail(dot)com>, Fujii Masao <masao(dot)fujii(at)gmail(dot)com>, Ashutosh Sharma <ashu(dot)coek88(at)gmail(dot)com>, Euler Taveira <euler(at)timbira(dot)com(dot)br>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Simon Riggs <simon(at)2ndquadrant(dot)com>, Dave Page <dpage(at)pgadmin(dot)org>
Subject: Re: New function pg_stat_statements_reset_query() to reset statistics of a specific query
Date: 2018-11-17 14:11:33
Message-ID: 20181117141133.z2trva2bt2a3m7rr@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2018-Nov-17, Amit Kapila wrote:

> On Sat, Nov 17, 2018 at 4:46 PM Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> wrote:

> > Uh, ouch! Seems to me that this is a high-caliber foot-gun, and will
> > cause nasty suprises when production stats data disappear inadvertently!
>
> What is the alternative in your mind?

Well, as I see this interface, it is as if
DELETE FROM ... WHERE queryid = <value>
where passing a NULL value meant to delete *all* rows regardless of
queryid, rather than only those where queryid is NULL.

> AFAICS, we have below alternatives:
>
> a) Return an error for the NULL value of any argument?
> b) Silently ignore if there is any NULL value argument and don't
> remove any stats.
> c) Just ignore the NULL value parameter and remove the stats based on
> other parameters.

> Currently, patch implements option (c), but we can do (a) or (b) as
> well, however, that can make the API usage bit awkward.

I think option d) is to have more functions (seven functions total), and
have them all be strict (i.e. don't do anything if one argument is
NULL). One function takes three arguments, and removes all entries
matching the three. Other functions take two arguments, and remove
everything matching those, ignoring the third (so behaving like the
current NULL). Others take one argument.

Maybe it doesn't make sense to provide all combinations, so it's less
than seven. But having an interface that's inherently easy to misuse
makes me a bit nervous.

--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alvaro Herrera 2018-11-17 14:15:54 Re: Accounting of zero-filled buffers in EXPLAIN (BUFFERS)
Previous Message Amit Kapila 2018-11-17 13:18:01 Re: New function pg_stat_statements_reset_query() to reset statistics of a specific query