Re: pgsql: Change timeline field of IDENTIFY_SYSTEM to int8

From: Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: pgsql: Change timeline field of IDENTIFY_SYSTEM to int8
Date: 2022-07-04 13:55:30
Message-ID: e92dec6f-4b73-07ec-2dc9-9c67db92a929@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers


On 04.07.22 07:55, Tom Lane wrote:
> Peter Eisentraut <peter(at)eisentraut(dot)org> writes:
>> Change timeline field of IDENTIFY_SYSTEM to int8
>
> Surely this patch is far from complete?
>
> To start with, just a few lines down in IdentifySystem() the column
> is filled using Int32GetDatum not Int64GetDatum. I will get some
> popcorn and await the opinions of the 32-bit buildfarm animals.
>
> But what about whatever code is reading the output? And what if
> that code isn't v16? I can't believe that we can make a wire
> protocol change as summarily as this.

I think a client will either just read the string value and convert it
to some numeric type without checking what type was actually sent, or if
the client API is type-aware and automatically converts to a native type
of some sort, then it will probably already support 64-bit ints. Do you
see some problem scenario?

I'm seeing a bigger problem now, which is that our client code doesn't
parse bigger-than-int32 timeline IDs correctly.

libpqwalreceiver uses pg_strtoint32(), which will error on overflow.

pg_basebackup uses atoi(), so it will just truncate the value, except
for READ_REPLICATION_SLOT, where it uses atol(), so it will do the wrong
thing on Windows only.

There is clearly very little use for such near-overflow timeline IDs in
practice. But it still seems pretty inconsistent.

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2022-07-04 17:32:43 Re: pgsql: Change timeline field of IDENTIFY_SYSTEM to int8
Previous Message Alvaro Herrera 2022-07-04 13:14:05 pgsql: Implement List support for TransactionId

Browse pgsql-hackers by date

  From Date Subject
Next Message Aleksander Alekseev 2022-07-04 14:00:19 Re: [PATCH] Compression dictionaries for JSONB
Previous Message Ronan Dunklau 2022-07-04 13:49:59 Re: Removing unneeded self joins