Re: replication_origin and replication_origin_lsn usage on subscriber - Mailing list pgsql-hackers

From Petr Jelinek
Subject Re: replication_origin and replication_origin_lsn usage on subscriber
Date
Msg-id bc31485c-ec9b-7745-7e20-ace4c391aab1@2ndquadrant.com
Whole thread Raw
In response to Re: replication_origin and replication_origin_lsn usage on subscriber  (Amit Kapila <amit.kapila16@gmail.com>)
Responses Re: replication_origin and replication_origin_lsn usage on subscriber
Re: replication_origin and replication_origin_lsn usage on subscriber
List pgsql-hackers
Hi,

On 14/07/2020 10:29, Amit Kapila wrote:
> On Tue, Jul 14, 2020 at 12:05 PM Dilip Kumar <dilipbalaut@gmail.com> wrote:
>>
>> On Tue, Jul 14, 2020 at 11:14 AM Amit Kapila <amit.kapila16@gmail.com> wrote:
>>>
>>> On Tue, Jul 14, 2020 at 11:00 AM Dilip Kumar <dilipbalaut@gmail.com> wrote:
>>>>
>>>> On Thu, Jul 9, 2020 at 6:55 PM Amit Kapila <amit.kapila16@gmail.com> wrote:
>>>>>
>>>>> On Thu, Jul 9, 2020 at 6:14 PM Petr Jelinek <petr@2ndquadrant.com> wrote:
>>>>>>
>>>>>>
>>>>>> If we were to support the origin forwarding, then strictly speaking we
>>>>>> need everything only at commit time from correctness perspective,
>>>>>>
>>>>>
>>>>> Okay.  Anyway streaming mode is optional, so in such cases, we can keep it 'off'
>>>>>
>>>>>> but
>>>>>> ideally origin_id would be best sent with first message as it can be
>>>>>> used to filter out changes at decoding stage rather than while we
>>>>>> process the commit so having it set early improves performance of decoding.
>>>>>>
>>>>>
>>>>> Yeah, makes sense.  So, we will just send origin_id (with first
>>>>> streaming start message) and leave others.
>>>>
>>>> So IIUC, currently we are sending the latest origin_id which is set
>>>> during the commit time.  So in our case, while we start streaming we
>>>> will send the origin_id of the latest change in the current stream
>>>> right?
>>>>
>>>
>>> It has to be sent only once with the first start message not with
>>> consecutive start messages.
>>
>> Okay,  so do you mean to say that with the first start message we send
>> the origin_id of the latest change?
>>
> 
> Yes.
> 
>>   because during the transaction
>> lifetime, the origin id can be changed.
>>
> 
> Yeah, it could be changed but if we have to send again apart from with
> the first message then it should be sent with each message.  So, I
> think it is better to just send it once during the transaction as we
> do it now (send with begin message).
> 
> 

I am not sure if I can follow the discussion here very well, but if I 
understand correctly I'd like to clarify two things:
- origin id does not change mid transaction as you can only have one per xid
- until we have origin forwarding feature, the origin id is always same 
for a given subscription

-- 
Petr Jelinek
2ndQuadrant - PostgreSQL Solutions for the Enterprise
https://www.2ndQuadrant.com/



pgsql-hackers by date:

Previous
From: Julien Rouhaud
Date:
Subject: Re: Avoid useless retrieval of defaults and check constraints in pg_dump -a
Next
From: Dilip Kumar
Date:
Subject: Re: replication_origin and replication_origin_lsn usage on subscriber