On Wed, Jul 24, 2024 at 11:52 AM shveta malik <shveta.ma...@gmail.com> wrote: > > On Wed, Jul 24, 2024 at 9:17 AM Peter Smith <smithpb2...@gmail.com> wrote: > > > > I had a look at patches v20240720* (considering these as the latest > one) and tried to do some basic testing (WIP). Few comments: > > 1) > I see 'last_value' is updated wrongly after create-sub. Steps: > > ----------- > pub: > CREATE SEQUENCE myseq0 INCREMENT 5 START 100; > SELECT nextval('myseq0'); > SELECT nextval('myseq0'); > --last_value on pub is 105 > select * from pg_sequences; > create publication pub1 for all tables, sequences; > > Sub: > CREATE SEQUENCE myseq0 INCREMENT 5 START 100; > create subscription sub1 connection 'dbname=postgres host=localhost > user=shveta port=5433' publication pub1; > > --check 'r' state is reached > select pc.relname, pr.srsubstate, pr.srsublsn from pg_subscription_rel > pr, pg_class pc where (pr.srrelid = pc.oid); > > --check 'last_value', it shows some random value as 136 > select * from pg_sequences;
Okay, I see that in fetch_remote_sequence_data(), we are inserting 'last_value + log_cnt' fetched from remote as 'last_val' on subscriber and thus leading to above behaviour. I did not understand why this is done? This may result into issue when we insert data into a table with identity column on subscriber (whose internal sequence is replicated); the identity column in this case will end up having wrong value. thanks Shveta