Handle concurrent sequence drops during synchronization Commit d4a657b0a4d added a call to has_sequence_privilege() while fetching sequence information from the publisher, so that publisher-side permission failures could be distinguished from missing sequences. It also assumed that has_sequence_privilege() could never return NULL, and asserted accordingly.
However, that assumption was incorrect. If a sequence is dropped after the synchronization worker collects its metadata but while fetching the sequence information, has_sequence_privilege() can return NULL. This can trigger the assertion failure. This was also reported in a buildfarm failure on member culicidae. Fix this by treating a NULL result from has_sequence_privilege() as indicating that the sequence was dropped concurrently, and report it as a missing sequence instead of asserting that the result is never NULL. Reported-by: Noah Misch <[email protected]> Author: Vignesh C <[email protected]> Reviewed-by: Hayato Kuroda <[email protected]> Reviewed-by: Zsolt Parragi <[email protected]> Reviewed-by: Fujii Masao <[email protected]> Discussion: https://postgr.es/m/[email protected] Discussion: https://postgr.es/m/caldanm2fhgleiqkj0r6og7n9qeayxsmplrwyjryt4dl_m3v...@mail.gmail.com Backpatch-through: 19 Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/55f518684895bfe43e667acf59284b49707ee685 Modified Files -------------- src/backend/replication/logical/sequencesync.c | 15 +++++-- src/test/subscription/t/036_sequences.pl | 56 +++++++++++++++++++++++++- 2 files changed, 67 insertions(+), 4 deletions(-)
