I'd like to propose a copy function for logical replication slots. Currently when we create a new logical replication slot it starts to read WAL from an LSN of the current insert. This function copies a existing logical replication slot while changing output plugin and persistence. That is, the copied new replication slot starts from the same LSN as the source one. Since a new copied slot starts from the same LSN of existing one we don't need to care about WAL reservation.
Strong agreement from me.
The inability to switch plugins is a massive pain. I've worked around it with similar functions bundled into the extensions I work with that do logical decoding related work. It makes sense to have it in core.
A use case I imagined is for investigations for example. I mean that when replication collision occurs on subscriber there is no way to see what replicated data is conflicting (perhaps error log helps it but is not detailed) and there is no way to advance a replication origin in order to exactly skip to apply conflicting data.
pglogical handles this by letting you peek the slot in a separate json protocol output mode, but that doesn't help with pgoutput.