On Tue, Jun 1, 2021 at 12:29 PM tanghy.f...@fujitsu.com <tanghy.f...@fujitsu.com> wrote: > > Hi > > > > I have some questions with your patch. Here are two cases I used to check the > bug. > > > > Case1(PK toasted_key is short), data could be synchronized on HEAD. > > --------------- > > INSERT INTO toasted_key(toasted_key, toasted_col1) VALUES('111', > repeat('9876543210', 200)); > > UPDATE toasted_key SET toasted_col2 = toasted_col1; > > --------------- > > > > Case2(PK toasted_key is very long), data couldn’t be synchronized on > HEAD.(which is the bug) > > --------------- > > INSERT INTO toasted_key(toasted_key, toasted_col1) > VALUES(repeat('9876543210', 200), '111'); > > UPDATE toasted_key SET toasted_col2 = toasted_col1; > > --------------- > > > > So I think the bug is only related with the length of primary key. > > I noticed that in case1, ExtractReplicaIdentity function returned NULL on > HEAD. But after your fix, it didn’t return NULL. There is no problem with > this case on HEAD, but the patch modified its return value. I’m not sure if > it would bring new problems. Have you checked it?
Good observation, basically, my check says that any field in the tuple is toasted then prepare the key tuple, actually, after that, I should recheck whether the key field specifically toasted or not and if it is not then we can continue returning NULL. I will fix this in the next version. -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com