Thread: Re: Remove one TimestampTzGetDatum call in pg_stat_get_io()

Re: Remove one TimestampTzGetDatum call in pg_stat_get_io()

From
Tom Lane
Date:
Bertrand Drouvot <bertranddrouvot.pg@gmail.com> writes:
> While working on the per backend I/O statistics patch ([1]), I noticed that
> there is an unnecessary call to TimestampTzGetDatum() in pg_stat_get_io() (
> as the reset_time is already a Datum).

Hmm, TimestampTzGetDatum is not a no-op on 32-bit machines.  If you're
correct about this, why are our 32-bit BF animals not crashing?  Are
we failing to test this code?

            regards, tom lane



Re: Remove one TimestampTzGetDatum call in pg_stat_get_io()

From
Tom Lane
Date:
I wrote:
> Hmm, TimestampTzGetDatum is not a no-op on 32-bit machines.  If you're
> correct about this, why are our 32-bit BF animals not crashing?  Are
> we failing to test this code?

Oh, I had the polarity backwards: this error doesn't result in trying
to dereference something that's not a pointer, but rather in
constructing an extra indirection layer, with the end result being
that the timestamp displayed in the pg_stat_io view is garbage
(I saw output like "1999-12-31 19:11:45.880208-05" while testing in
a 32-bit VM).  It's not so surprising that our regression tests are
insensitive to the values being displayed there.

I confirm that this fixes the problem.  Will push shortly.

            regards, tom lane



Re: Remove one TimestampTzGetDatum call in pg_stat_get_io()

From
Bertrand Drouvot
Date:
Hi,

On Fri, Sep 06, 2024 at 11:40:56AM -0400, Tom Lane wrote:
> I wrote:
> > Hmm, TimestampTzGetDatum is not a no-op on 32-bit machines.  If you're
> > correct about this, why are our 32-bit BF animals not crashing?  Are
> > we failing to test this code?
> 
> Oh, I had the polarity backwards: this error doesn't result in trying
> to dereference something that's not a pointer, but rather in
> constructing an extra indirection layer, with the end result being
> that the timestamp displayed in the pg_stat_io view is garbage
> (I saw output like "1999-12-31 19:11:45.880208-05" while testing in
> a 32-bit VM).  It's not so surprising that our regression tests are
> insensitive to the values being displayed there.
> 
> I confirm that this fixes the problem.  Will push shortly.

Thanks! Yeah was going to reply that that would display incorrect results on
32-bit (and not crashing). And since the tests don't check the values then
we did not notice.

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com