Hi Mikhail, One small design question on the v3 API:
> The old functions remain as wrappers to preserve compatibility. After the patch, though, the base functions have no callers. The only call site (the switch in pgoutput_change()) calls the _extended forms directly, leaving logicalrep_write_update()/logicalrep_write_delete() as wrappers that just forward the same relation twice; a tree-wide grep finds no caller, and no contrib output plugin uses them either. Is there a basis for treating these as an external interface? They look like pgoutput's internal write-side helpers, paired with the apply worker's logicalrep_read_* side -- not a documented extension API, and signatures here change across major versions anyway. Unless they are commonly called from extensions, formally or informally, I don't see what the _extended wrapping preserves. Since there is exactly one caller, with both the leaf and the publication relation already in scope, it seems simpler to give the base functions the two-relation signature directly and update that one switch -- dropping the _extended variants and the wrappers. No behavior change. Not a blocker; happy to drop this if there's a consumer I'm missing. Regards, Henson
