Re: pgsql: Allow HOT updates for some expression indexes

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Simon Riggs <simon(at)2ndquadrant(dot)com>
Cc: pgsql-committers(at)lists(dot)postgresql(dot)org, Konstantin Knizhnik <k(dot)knizhnik(at)postgrespro(dot)ru>
Subject: Re: pgsql: Allow HOT updates for some expression indexes
Date: 2018-03-27 21:26:26
Message-ID: 31021.1522185986@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

I wrote:
> The test script appears to imagine that pgstats outputs update
> instantaneously.

Oh, wait, it's looking at pg_stat_xact, which is the *local*, unsent
stats information. So your problem is actually the reverse of that:
if the test runs too slowly, it fails, because at some point the
unsent stats information will get flushed out to the collector and
disappear from the pg_stat_xact view.

You could probably make this more reliable by wrapping each test
stanza in a transaction, ie instead of

create table keyvalue ...;
... do something to table ...
select pg_stat_get_xact_tuples_hot_updated('keyvalue'::regclass);
drop table keyvalue;

do

begin;
create table keyvalue ...;
... do something to table ...
select pg_stat_get_xact_tuples_hot_updated('keyvalue'::regclass);
rollback;

(no need for a DROP if you're rolling it all back)

regards, tom lane

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2018-03-27 22:15:44 pgsql: Update pgindent's typedefs blacklist, and make it easier to adju
Previous Message Tom Lane 2018-03-27 21:07:15 Re: pgsql: Allow HOT updates for some expression indexes